trap UB from attempts to join a detached thread
authorRich Felker <dalias@aerifal.cx>
Sat, 12 Aug 2017 00:42:30 +0000 (20:42 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 12 Aug 2017 00:42:30 +0000 (20:42 -0400)
commit80bf5952551c002cf12d96deb145629765272db0
treecd5d18ba17103d6b979e521d00dc86d79d0cb749
parente31c8c2d796e8a9596503f079dc567c45f93c2ae
trap UB from attempts to join a detached thread

passing to pthread_join the id of a thread which is not joinable
results in undefined behavior.

in principle the check to trap does not necessarily work if
pthread_detach was called after thread creation, since no effort is
made here to synchronize access to t->detached, but the check is
well-defined and harmless for callers which did not invoke UB, and
likely to help catch erroneous code that would otherwise mysteriously
hang.

patch by William Pitcock.
src/thread/pthread_join.c