mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-07 13:39:55 +00:00
The blocked mask of sigprocmask, _sigprocmask, pthread_sigmask and sigsuspend was one process-wide set, so a thread changing its mask changed every thread's, and scePthreadCreate did not hand the creating thread's mask to the new thread. Each guest thread now has its own blocked mask and handler holds, and a new thread starts with its creator's mask. The pending set stays the process-wide one, so a signal that raise leaves pending is still taken by sigwait and sigtimedwait on any thread and delivered by the first thread that unblocks it. A SIGALRM expiry checks the mask of the thread that armed the timer. Fixes #2879. Claude-Session: https://claude.ai/code/session_012SLQbhAiexxW6TtjYToW8a