mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-23 17:13:13 -05:00
A thread had one TimedWait waiter for every wait. When sceKernelRaiseException reached a thread blocked in a TimedWait condition, its handler ran as an APC inside that wait, and a wait in the handler queued the same waiter on a second condition while it was still linked into the first. The links of the first queue were overwritten, so waiters behind it were never woken, and a wake of the outer wait set the shared event and was consumed by the inner wait. A wait now takes the thread's first waiter that is not in use, and creates a deeper one for a wait nested inside another. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HeC9bA3n74TzJRYv9AgBE8