#!/usr/bin/env python3 """Extract ours tid=13 timeline plus matching canary tid=17 prefix.""" import json import os OURS = "/home/fabi/RE - Project Sylpheed/xenia-rs/audit-runs/phase-w-wedge-reattack/ours-postfix.jsonl" OUTDIR = os.path.dirname(os.path.abspath(__file__)) ours_evts = [] with open(OURS, "r") as f: for line in f: if '"tid":13' not in line: continue try: ev = json.loads(line) except json.JSONDecodeError: continue if ev.get("tid") != 13: continue ours_evts.append(ev) print(f"ours tid=13: {len(ours_evts)} events") print(f"\n=== FULL ours tid=13 timeline (kernel.call, handle.create, wait.*) ===") with open(os.path.join(OUTDIR, "ours-tid13-full-timeline.csv"), "w") as f: f.write("host_ns,tid_event_idx,kind,name,detail\n") for ev in ours_evts: name = ev["payload"].get("name", "") if isinstance(ev.get("payload"), dict) else "" detail = json.dumps(ev.get("payload", {}))[:400].replace('"', '""') f.write(f'{ev["host_ns"]},{ev["tid_event_idx"]},{ev["kind"]},{name},"{detail}"\n') print(f"Wrote ours-tid13-full-timeline.csv") # Show the last 40 events. print("\n=== Last 40 events on ours tid=13 ===") for ev in ours_evts[-40:]: name = ev["payload"].get("name", "") if isinstance(ev.get("payload"), dict) else "" detail = json.dumps(ev.get("payload", {}))[:200] print(f" {ev['host_ns']/1e9:.5f}s idx={ev['tid_event_idx']} {ev['kind']:18s} {name:30s} {detail}")