On Fri, Nov 23, 2018 at 06:39:04PM +0100, Florian Weimer wrote: > * Rich Felker: > > > On Fri, Nov 23, 2018 at 12:05:20PM -0500, Mathieu Desnoyers wrote: > >> There has been presumptions about signals being blocked when the thread > >> exits throughout this email thread. Out of curiosity, what code is > >> responsible for disabling signals in this situation ? Related to this, > >> is it valid to access a IE model TLS variable from a signal handler at > >> _any_ point where the signal handler nests over thread's execution ? > >> This includes early start and just before invoking the exit system call. > > > > It should be valid to access *any* TLS object like this, but the > > standards don't cover it well. > > C++ makes it undefined: > > <http://eel.is/c++draft/support.signal#def:evaluation,signal-safe> C also leaves access to pretty much anything from a signal handler undefined, but that makes signals basically useless. POSIX inadvertently defines a lot more than it wanted to by ignoring indirect ways you can access objects using AS-safe functions to pass around their addresses; there's an open issue for this: http://austingroupbugs.net/view.php?id=728 I think it's reasonable to say, based on how fond POSIX is of signals for realtime stuff, that it should allow some reasonable operations, but just be more careful about what it allows, and disallowing access to TLS would preclude the only ways to make signals non-awful for multithreaded processes. Rich