mirror of
https://github.com/ARMSX2/ARMSX3.git
synced 2026-08-24 16:58:52 -07:00
The frame-based check cannot see this class of hang at all. Tales of Xillia 2 white-screens with its RENDER loop still running: it submits real, non-forced flips every ~10ms forever, so 'no frame presented' is never true while the game logic behind them is dead. Measured on device -- g_last_frame_time was 9-12ms old on every sample taken across the hang. Four fixes to the frame-based detector were all fixing the wrong instrument. What actually stops is lock traffic. Both hangs seen so far -- Xillia 2's white screen and Kane & Lynch's freeze -- show mutex acquisition at exactly zero for minutes while sys_timer_usleep and sys_event_queue_receive continue at flat, identical rates, which is idle service loops and nothing else. Both games were taking 100k+ locks per 10s until the moment they stopped. Polled from the PPU syscall usage thread, which already holds the counters and is independent of both the RSX thread and the guest. Bounded the same way as the other path: two dumps, the second 15s after the first so a cia that has not moved between them is distinguishable from slow progress, re-armed only when lock traffic resumes.