Race and segmentation fault in pthread_kill() vs thread teardown

Rich Felker dalias@aerifal.cx
Wed Oct 2 21:10:00 GMT 2013


On Wed, Oct 02, 2013 at 10:11:23AM +0200, Andreas Schwab wrote:
> The POSIX spec is pretty clear:
> 
>  If an application attempts to use a thread ID whose lifetime has ended,
>  the behavior is undefined.
> 
> I'd suggest to file a bug report with the Austin group wrt to the
> wording in pthread_kill.

It's perfectly valid to use pthread_kill with a signal number of 0 to
determine whether the thread has exited, but only as long as the
thread ID is still valid. The only way it can still be valid is if the
thread was joinable and has not been joined. If a detached thread
exits or the thread is joined after exiting, the thread ID is invalid
and using it for any purpose invokes undefined behavior.

Rich



More information about the Libc-alpha mailing list