Commit 3b800118 authored by Jeremy Hylton's avatar Jeremy Hylton

Fix simul to read the new cache trace format.

Bug fix candidate.

XXX Each record encodes the length of its oid.  Is it really possible
to have variable-length oids?  There's a high space cost for the oid
length, which is always 8 for the standard storage.
parent a7c626ef
...@@ -108,21 +108,21 @@ def main(): ...@@ -108,21 +108,21 @@ def main():
struct_unpack = struct.unpack struct_unpack = struct.unpack
while 1: while 1:
# Read a record and decode it # Read a record and decode it
r = f_read(8) r = f_read(10)
if len(r) < 8: if len(r) < 10:
break break
offset += 8 offset += 10
ts, code = struct_unpack(">ii", r) ts, code, lenoid = struct_unpack(">iiH", r)
if ts == 0: if ts == 0:
# Must be a misaligned record caused by a crash # Must be a misaligned record caused by a crash
##print "Skipping 8 bytes at offset", offset-8 ##print "Skipping 8 bytes at offset", offset-8
continue continue
r = f_read(16) r = f_read(8 + lenoid)
if len(r) < 16: if len(r) < 8 + lenoid:
break break
offset += 16 offset += 8 + lenoid
records += 1 records += 1
oid, serial = struct_unpack(">8s8s", r) serial, oid = struct_unpack(">8s%ds" % lenoid, r)
# Decode the code # Decode the code
dlen, version, code, current = (code & 0x7fffff00, dlen, version, code, current = (code & 0x7fffff00,
code & 0x80, code & 0x80,
......
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