make thread killlock async-signal-safe for pthread_kill
authorRich Felker <dalias@aerifal.cx>
Mon, 6 Jul 2020 21:56:19 +0000 (17:56 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 6 Jul 2020 21:56:19 +0000 (17:56 -0400)
commit7cc9496a18c3fa665c286b8be41d790c795e0171
tree8d2d2e901495af4692d3b5cbd50a71e7d679f8dd
parent0a005f499cf39822166dd4db3d2d31f0639f1b1b
make thread killlock async-signal-safe for pthread_kill

pthread_kill is required to be AS-safe. that requirement can't be met
if the target thread's killlock can be taken in contexts where
application-installed signal handlers can run.

block signals around use of this lock in all pthread_* functions which
target a tid, and reorder blocking/unblocking of signals in
pthread_exit so that they're blocked whenever the killlock is held.
src/thread/pthread_create.c
src/thread/pthread_getschedparam.c
src/thread/pthread_kill.c
src/thread/pthread_setschedparam.c
src/thread/pthread_setschedprio.c