Why race‑condition crashes only appear under specific timing, vanish under debugging, and produce different stack traces on every run.
Race‑condition crashes are the first pattern in the series where the failure is not deterministic.
The code is correct, the memory is valid, the backtrace may look reasonable, and the crash may even disappear under debugging — but the program still fails unpredictably.
S5 crashes are timing‑dependent failures caused by two or more threads accessing shared state without proper synchronization.
Unlike S4 (wrong‑thread crashes), S5 failures depend on when things happen, not where they happen.






