AnyPS5/core/libs/prx/libkernel/Pthread/include
Merijn 51b6079b5b fix(libkernel): no allocation while the target is suspended; own the wait count
The APC delivery was allocated after SuspendThread, so a target holding
the allocator lock deadlocked the raising thread; it is now allocated
before the suspend. The wait count a raise checks lived in the target's
thread_local storage and dangled once the thread exited; it is now a
member of PthreadPrivate, which TimedWait counts into through a
thread-local pointer bound when the thread starts, and a raise on a
thread that already finished returns ESRCH. TechnicalDebt gets one line
per unverified choice: Windows only, the FreeBSD ucontext layout, the
signal mask, the YMM upper halves, and delivery to threads outside
TimedWait.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:10:25 +02:00
..
Cond.hpp feat(libkernel): impl pthread condition variables + posix thread attribute queries 2026-09-27 11:43:37 +03:00
Mutex.hpp feat(libkernel): implement posix mutex locking and timed waits 2026-09-27 11:43:37 +03:00
Pthread.hpp fix(libkernel): no allocation while the target is suspended; own the wait count 2026-10-07 21:10:25 +02:00
Rwlock.hpp feat(libkernel): implement the pthread_rwlock try and timed lock functions 2026-10-04 17:13:36 +02:00
ThreadLifecycle.hpp feat(libkernel): implement application heap and thread atexit registration 2026-09-27 11:43:33 +03:00