fix missing synchronization of pthread TSD keys with MT-fork
authorRich Felker <dalias@aerifal.cx>
Sat, 8 Oct 2022 01:36:25 +0000 (21:36 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 19 Oct 2022 18:01:32 +0000 (14:01 -0400)
commitcf76df0e1fe09b0d504ca650fdaa01df5bf9ab72
tree6a3841d780547892c723d11221aaea3e5fa3f85c
parent5ff3eea91fa6bdce25b3a35644433f68e076beca
fix missing synchronization of pthread TSD keys with MT-fork

commit 167390f05564e0a4d3fcb4329377fd7743267560 seems to have
overlooked the presence of a lock here, probably because it was one of
the exceptions not using LOCK() but a rwlock.

as such, it can't be added to the generic table of locks to take, so
add an explicit atfork function for the pthread keys table. the order
it is called does not particularly matter since nothing else in libc
but pthread_exit interacts with keys.
src/internal/fork_impl.h
src/process/fork.c
src/thread/pthread_key_create.c