[PATCH] nptl: Start new threads with all signals blocked [BZ #25098]
Christian Brauner
christian.brauner@ubuntu.com
Mon Oct 14 13:32:00 GMT 2019
On Mon, Oct 14, 2019 at 02:33:43PM +0200, Florian Weimer wrote:
> New threads inherit the signal mask from the current thread. This
> means that signal handlers can run on the newly created thread
> immediately after the kernel has created the userspace thread, even
> before glibc has initialized the TCB. Consequently, new threads can
> observe uninitialized ctype data, among other things.
>
> To address this, block all signals before starting the thread, and
> pass the original signal mask to the start routine wrapper. On the
> new thread, first perform all thread initialization, and then unblock
> signals.
>
> The cost of doing this is two rt_sigprocmask system calls on the old
> thread, and one rt_sigprocmask system call on the new thread. (If
> there was a way to clone a new thread with a signals disabled, this
He, do I see a growing wishlist? :)
Christian
More information about the Libc-alpha
mailing list