Run 2 put the inducer on from flight start and froze ~96s in, against 670s clean with it off -- n=2, contrast sharp, confounder (elapsed mission time) still untouched. Withdraws last iteration's 'T74/T75 move off a semaphore onto an event' as the signature to chase: it does not reproduce. In run 2 they are on XEvent while HEALTHY and stay there. The healthy state varies between instants, so a one-sample-per-state diff cannot separate a freeze transition from ordinary variation -- I read a difference of samples as a difference of states. Reproduces across both: T68 and T69 go from not-waiting to waiting, T69 on a semaphore and T68 on an event both times. And 21 of 24 threads unchanged in run 2 (17 of 24 in run 1), so 'not a whole-emulator stall' now has two independent captures behind it. Next: repeat the capture several times within one healthy run to establish which thread states are stable before reading any frozen diff.
86 lines
4.9 KiB
Plaintext
86 lines
4.9 KiB
Plaintext
=== healthy: 22 wait frames ===
|
|
T106 Wait n=1 xe::kernel::XEvent
|
|
T105 Wait n=1 xe::kernel::XEvent
|
|
T104 Wait n=1 xe::kernel::XEvent
|
|
T97 Wait n=1 xe::kernel::XEvent
|
|
T96 Wait n=1 xe::kernel::XEvent
|
|
T80 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T79 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T78 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T77 Wait n=1 xe::kernel::XEvent
|
|
T76 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XTimer
|
|
T75 Wait n=1 xe::kernel::XEvent
|
|
T74 Wait n=1 xe::kernel::XEvent
|
|
T71 Wait n=1 xe::kernel::XEvent
|
|
T67 Wait n=1 xe::kernel::XEvent
|
|
T66 Wait n=1 xe::kernel::XEvent
|
|
T65 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T64 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T63 Wait n=1 xe::kernel::XSemaphore
|
|
T62 Wait n=1 xe::kernel::XEvent
|
|
T61 Wait n=1 xe::kernel::XEvent
|
|
T50 Wait n=1 xe::kernel::XEvent
|
|
T36 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XEvent
|
|
--- objects waited on:
|
|
xe::kernel::XEvent 22
|
|
xe::kernel::XSemaphore 6
|
|
xe::kernel::XTimer 1
|
|
=== frozen: 23 wait frames ===
|
|
T106 Wait n=1 xe::kernel::XEvent
|
|
T105 Wait n=1 xe::kernel::XEvent
|
|
T104 Wait n=1 xe::kernel::XEvent
|
|
T97 Wait n=1 xe::kernel::XEvent
|
|
T96 Wait n=1 xe::kernel::XEvent
|
|
T80 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T79 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T78 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T77 Wait n=1 xe::kernel::XEvent
|
|
T76 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XTimer
|
|
T75 Wait n=1 xe::kernel::XEvent
|
|
T74 Wait n=1 xe::kernel::XEvent
|
|
T71 Wait n=1 xe::kernel::XEvent
|
|
T69 Wait n=1 xe::kernel::XSemaphore
|
|
T68 Wait n=1 xe::kernel::XEvent
|
|
T67 Wait n=1 xe::kernel::XEvent
|
|
T66 Wait n=1 xe::kernel::XEvent
|
|
T65 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T64 WaitMultiple n=2 xe::kernel::XEvent, xe::kernel::XSemaphore
|
|
T63 Wait n=1 xe::kernel::XSemaphore
|
|
T62 Wait n=1 xe::kernel::XEvent
|
|
T61 Wait n=1 xe::kernel::XEvent
|
|
T50 Wait n=1 xe::kernel::XEvent
|
|
--- objects waited on:
|
|
xe::kernel::XEvent 21
|
|
xe::kernel::XSemaphore 7
|
|
xe::kernel::XTimer 1
|
|
=== healthy -> frozen ===
|
|
xe::kernel::XEvent 22 -> 21 CHANGED
|
|
xe::kernel::XSemaphore 6 -> 7 CHANGED
|
|
xe::kernel::XTimer 1 -> 1
|
|
=== per-thread healthy -> frozen ===
|
|
thread healthy frozen
|
|
T106 Wait(XEvent) Wait(XEvent)
|
|
T105 Wait(XEvent) Wait(XEvent)
|
|
T104 Wait(XEvent) Wait(XEvent)
|
|
T97 Wait(XEvent) Wait(XEvent)
|
|
T96 Wait(XEvent) Wait(XEvent)
|
|
T80 WaitMultiple(XEvent,XSemaphore) WaitMultiple(XEvent,XSemaphore)
|
|
T79 WaitMultiple(XEvent,XSemaphore) WaitMultiple(XEvent,XSemaphore)
|
|
T78 WaitMultiple(XEvent,XSemaphore) WaitMultiple(XEvent,XSemaphore)
|
|
T77 Wait(XEvent) Wait(XEvent)
|
|
T76 WaitMultiple(XEvent,XTimer) WaitMultiple(XEvent,XTimer)
|
|
T75 Wait(XEvent) Wait(XEvent)
|
|
T74 Wait(XEvent) Wait(XEvent)
|
|
T71 Wait(XEvent) Wait(XEvent)
|
|
T69 -- Wait(XSemaphore) <-- CHANGED
|
|
T68 -- Wait(XEvent) <-- CHANGED
|
|
T67 Wait(XEvent) Wait(XEvent)
|
|
T66 Wait(XEvent) Wait(XEvent)
|
|
T65 WaitMultiple(XEvent,XSemaphore) WaitMultiple(XEvent,XSemaphore)
|
|
T64 WaitMultiple(XEvent,XSemaphore) WaitMultiple(XEvent,XSemaphore)
|
|
T63 Wait(XSemaphore) Wait(XSemaphore)
|
|
T62 Wait(XEvent) Wait(XEvent)
|
|
T61 Wait(XEvent) Wait(XEvent)
|
|
T50 Wait(XEvent) Wait(XEvent)
|
|
T36 WaitMultiple(XEvent,XEvent) -- <-- CHANGED
|