Bug 53061

Summary: pthread_kill() should describe it may cause SEGV when target thread doesn't exist
Product: Documentation Reporter: KOSAKI Motohiro (kosaki.motohiro)
Component: man-pagesAssignee: documentation_man-pages (documentation_man-pages)
Status: RESOLVED CODE_FIX    
Severity: normal CC: mtk.manpages
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: Subsystem:
Regression: No Bisected commit-id:

Description KOSAKI Motohiro 2013-01-26 01:38:55 UTC
Now, pthrad_kill() man page have following explanation.

http://man7.org/linux/man-pages/man3/pthread_kill.3.html

>ERRORS         
>
>       EINVAL An invalid signal was specified.
>
>       ESRCH  No thread with the ID thread could be found.


But it is misleading. Current implementation cause SEGV when no thread ID exist highly likely.

As suggested Rich on libc-alpha (http://permalink.gmane.org/gmane.comp.lib.glibc.alpha/28919). 
it would be nice if the man page point to following POSIX sentence.


POSIX XSH 2.9.2:

"The lifetime of a thread ID ends after the thread terminates if it
was created with the detachstate attribute set to
PTHREAD_CREATE_DETACHED or if pthread_detach() or pthread_join() has
been called for that thread. A conforming implementation is free to
reuse a thread ID after its lifetime has ended. If an application
attempts to use a thread ID whose lifetime has ended, the behavior is
undefined."
Comment 1 Michael Kerrisk 2015-05-05 19:12:47 UTC
The pthreads(7) page now carries this text:

[[
The system may reuse a thread ID after a terminated thread has been joined,
or a detached thread has terminated.
POSIX says: "If an application attempts to use a thread ID whose
lifetime has ended, the behavior is undefined."
]]

I think that more or less satisfies your request, so I'm closing this bug.

Thanks for the report.