mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
Caught a real crash on the user's Steam Deck during D255 live-test setup: a fresh ge007.crash.log from the published v0.2.1 binary, inside the user's active testing window. Symbolized directly on-device with addr2line against the crashing binary's own debug symbols. FAULT ADDR 0x62 inside sndHandleEvent (src/snd.c:366), on the audio thread (amMain/portThreadWrapper) - not D255's 0x10/vtxstore_fix_refs on the render thread. Different bug, different subsystem, likely conflated with D255 in reports since both surface during the same explosion/combat testing. Root cause (static, code-read only): sndHandleEvent's pool-exhaustion preempt-scan walks the shared D_800243E4 ALSoundState list with no osSetIntMask lock anywhere in the function, while the list's insert path (sndSetupSound, reached from 15 different game files' direct sndPlaySfx calls) does lock it - an asymmetric-locking gap matching the established D4/D147/D152 "N64 interrupts-off isn't a real lock on PC" race class. Fits the repro pattern (explosion SFX bursts = high thread-contention window). Not fixed - flagged two open questions before it should be: whether the missing lock is a genuine decomp-fidelity gap (N64 assembly may have had it) vs a legitimate new PC-only lock, and it needs gdb confirmation on a live crash, not just this static read.