nptl: Fix race between pthread_kill and thread exit (bug 12889)
commit526c3cf11ee9367344b6b15d669e4c3cb461a2be
authorFlorian Weimer <fweimer@redhat.com>
Mon, 13 Sep 2021 09:06:08 +0000 (13 11:06 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Mon, 13 Sep 2021 09:06:08 +0000 (13 11:06 +0200)
tree428aa0c50880ee5001732622b0afe94ba7e113d9
parent8af8456004edbab71f8903a60a3cae442cf6fe69
nptl: Fix race between pthread_kill and thread exit (bug 12889)

A new thread exit lock and flag are introduced.  They are used to
detect that the thread is about to exit or has exited in
__pthread_kill_internal, and the signal is not sent in this case.

The test sysdeps/pthread/tst-pthread_cancel-select-loop.c is derived
from a downstream test originally written by Marek Polacek.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
nptl/allocatestack.c
nptl/descr.h
nptl/pthread_create.c
nptl/pthread_kill.c
sysdeps/pthread/Makefile
sysdeps/pthread/tst-pthread_cancel-select-loop.c [new file with mode: 0644]
sysdeps/pthread/tst-pthread_kill-exiting.c [new file with mode: 0644]