mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
On Windows, sceKernelRaiseException suspends the target and redirects it to the guest handler wherever it stopped, except inside NtContinue or winpthreads. A target stopped inside host code (a C runtime call, a host library) can hold a host lock there; a handler that then waits, as a collector's thread-stop handler does, keeps it held, and every host thread that needs the lock stops with it. SONIC SUPERSTARS stopped at frame 65 this way: its "UDS" thread was redirected inside the stderr write of a trophy message and parked in sceKernelWaitEventFlag holding the stream lock, and the driver's logging threads blocked on it. A target running code of a module other than the executable or a guest module is now resumed and suspended again until it is back in guest code, for up to the existing retry limit; a target blocked in an ntdll wait is still redirected there, as before. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>