backlog: inducer n=2, T74/T75 signature withdrawn, T68/T69 survives

This commit is contained in:
Sylpheed RE agent
2026-08-25 10:10:27 +00:00
parent 820519cb0c
commit 6903b19a27

View File

@@ -783,6 +783,16 @@ search cannot find a *schedule*.
been running; **T74 and T75 move off a semaphore onto an event** (the only
threads that change what *kind* of object they wait for → chase these first);
T50 drops `WaitMultiple(XEvent,XEvent)``Wait(XEvent)`.
* 🔴 **(2026-08-25) WITHDRAWN: the T74/T75 signature.** It does **not** reproduce
— in run 2 they are on `Wait(XEvent)` while **healthy** and stay there. My
error: the healthy state is not fixed either, so a **one-sample-per-state**
diff cannot separate a freeze transition from ordinary variation between two
instants. ✅ **What survives two independent captures:** T68 and T69 go from
not-waiting to waiting in *both* runs (T69 on a semaphore, T68 on an event,
both times), and the bulk of threads are untouched (17/24 run 1, **21/24** run
2) ⇒ **not a whole-emulator stall** now has two captures behind it. **Next:
repeat the capture several times inside ONE healthy run** to learn which thread
states are stable before reading any frozen diff as meaningful.
***(2026-08-25) CORRECTION: `screen_id == flight` is NOT a freeze test.**
The previous entry used it to rule out a freeze. `frozen.py` exists precisely
because a frozen mission still classifies as `flight` (its docstring: 724 s of
@@ -794,7 +804,11 @@ search cannot find a *schedule*.
Run flew **~670 s clean** with only the pilot; a heavy-CPU inducer
(`heavy_read.py cpu`) started at 08:59:54 and it froze at **09:00:48 — 54 s
later**, inside the 27255 s band. Consistent with the existing tally but
**n=1, not causal** (confounder: elapsed mission time). **Refuted en route:
**n=1, not causal** (confounder: elapsed mission time). ⬆️ **UPGRADED to n=2
(2026-08-25)**: run 2 put the inducer **on from flight start** and froze
**~96 s** in (10:07:20 → 10:08:56). Both freezes sit inside the 27255 s band;
the only long clean stretch is the only window with no inducer. Contrast is
sharp, confounder still untouched. ✅ **Refuted en route:
the I/O was never the cost** — a full uncapped walk of every allocated extent is
**371 MB in 0.1 s**, all page cache; the expense is Python-level CPU, ~4.2 s a
pass. **Settle it with:** alternating inducer-on/off windows within a run,