Should pthread_kill be marked __THROW?
Roland McGrath
roland@hack.frob.com
Fri Apr 8 18:30:00 GMT 2016
> I agree. Calling a signal handler synchronously is not a concurrency
> problem in the sense of synchronization with other threads. The signal
> handler can be considered concurrency, but then we should rather tell
> the compiler that pthread_kill is like a raise, or not?
I first read "a raise" as "a call to the 'raise' function", but now I think
you actually meant "raising a C++ exception". Is that right?
Currently pthread_kill, kill{,pg}, sigqueue, and raise are all annotated
in the same way (with our __THROW macro). All of these have the same
specified requirement that (in some circumstances) the signal handler run
"inside" the function.
So raise is marked as never doing a raise. That is the problem being cited.
More information about the Libc-alpha
mailing list