Highlights
🐛 core-profile-session parse-live is live
parse-live printed events seconds late, in bursts, and with --bsc it missed most of what happened: the device flushed its trace buffer only when it filled, and every event was also sampled for a callstack, which flooded the stream with scheduler and kperf events (about 90% of the traffic) and made the device drop most of the requested ones. The tap now asks the device to flush every 100 ms, and live/parse-live no longer request callstack sampling. On an iPhone 11 (iOS 27.2) with --bsc, traces now print ~0.3 s after they happen instead of 3.5-4 s, the device sends 11x less data, and file opens actually show up (960 open events in 15 s instead of 2).
pymobiledevice3 developer dvt core-profile-session parse-live --bsc✨ Unfiltered parse-live skips ahead instead of falling behind
Without class filters the device emits ~550k events/s, more than can be parsed, so the output used to drift further and further behind (17 s after 40 s). parse-live now skips events that fall more than 2 s behind and logs how many it skipped; the output stays ~2 s behind. Use --bsc/--class-filters/--subclass-filters to filter on the device and see every event, or --no-skip-behind to keep every event regardless of lag. Library users get the same through CoreProfileSessionTap.get_kdbuf_stream(max_lag=...) and CoreProfileSessionTap(sample_callstacks=False).
🐛 core-profile-session callstacks-live no longer crashes on start
Every run without --count died with "Stop argument for islice() must be None or an integer".
What's Changed
- e8dc7e7 core_profile_session: Keep parse-live live by skipping ahead when behind (#2033) (@doronz88)
- dbc9948 core_profile_session_tap: Let KdBufStream skip chunks that fell behind (#2033) (@doronz88)
- 6d618c0 core_profile_session_tap: Pin that kd_buf records never span chunks (#2033) (@doronz88)
- 54765d5 core_profile_session: Fix callstacks-live crashing on start (#2033) (@doronz88)
- 58715ff core_profile_session: Trace only the filtered events in live and parse-live (#2033) (@doronz88)
- 3eb5cb0 core_profile_session_tap: Ask the device to flush events every 100 ms (#2033) (@doronz88)
Full Changelog: v11.30.0...v11.31.0