mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-07 13:39:55 +00:00
The file read poll called sceKernelFstat and sceKernelLseek while holding m_mutex, and on Windows lseek waits for the descriptor's position lock, so a long read or write on that descriptor blocked every operation on the equeue. Each file read event now keeps its measurement in its own state object; a wait copies the descriptors to measure, releases m_mutex, runs fstat and lseek, then stores the results under m_mutex before polling. A descriptor closed and reused in that window gets a new state object, so the old measurement is never reported for it. Co-Authored-By: Claude Opus 5.5 <[email protected]>