Commit 17499cc7 authored by Guido van Rossum's avatar Guido van Rossum

Two robustness changes: catch interrupts, and recover from broken

records (all the broken records I've seen had a zero timestamp).
parent fee8531c
...@@ -135,12 +135,27 @@ def main(): ...@@ -135,12 +135,27 @@ def main():
byinterval = {} byinterval = {}
thisinterval = None thisinterval = None
h0 = he = None h0 = he = None
offset = 0
f_read = f.read
struct_unpack = struct.unpack
try:
while 1: while 1:
r = f.read(24) r = f_read(8)
if len(r) < 24: if len(r) < 8:
break
offset += 8
ts, code = struct_unpack(">ii", r)
if ts == 0:
# Must be a misaligned record caused by a crash
if not quiet:
print "Skipping 8 bytes at offset", offset-8
continue
r = f_read(16)
if len(r) < 16:
break break
offset += 16
records += 1 records += 1
ts, code, oid, serial = struct.unpack(">ii8s8s", r) oid, serial = struct_unpack(">8s8s", r)
if t0 is None: if t0 is None:
t0 = ts t0 = ts
thisinterval = t0 / interval thisinterval = t0 / interval
...@@ -200,6 +215,8 @@ def main(): ...@@ -200,6 +215,8 @@ def main():
print '='*20, "Restart", '='*20 print '='*20, "Restart", '='*20
else: else:
print '-'*20, "Flip->%d" % current, '-'*20 print '-'*20, "Flip->%d" % current, '-'*20
except KeyboardInterrupt:
print "\nInterrupted. Stats so far:\n"
f.close() f.close()
rte = time.time() rte = time.time()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment