From 2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 22 Apr 2016 09:25:20 -0300 Subject: Refactor Linux raise implementation (BZ#15368) This patch changes both the nptl and libc Linux raise implementation to avoid the issues described in BZ#15368. The strategy used is summarized in bug report first comment: 1. Block all signals (including internal NPTL ones); 2. Get pid and tid directly from syscall (not relying on cached values); 3. Call tgkill; 4. Restore old signal mask. Tested on x86_64 and i686. [BZ #15368] * sysdeps/unix/sysv/linux/nptl-signals.h (__nptl_clear_internal_signals): New function. (__libc_signal_block_all): Likewise. (__libc_signal_block_app): Likewise. (__libc_signal_restore_set): Likewise. * sysdeps/unix/sysv/linux/pt-raise.c (raise): Use Linux raise.c implementation. * sysdeps/unix/sysv/linux/raise.c (raise): Reimplement to not use the cached pid/tid value in pthread structure. --- ChangeLog | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index ed5daf1de6..4bc8a61bdf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2016-07-13 Adhemerval Zanella + + [BZ #15368] + * sysdeps/unix/sysv/linux/nptl-signals.h + (__nptl_clear_internal_signals): New function. + (__libc_signal_block_all): Likewise. + (__libc_signal_block_app): Likewise. + (__libc_signal_restore_set): Likewise. + * sysdeps/unix/sysv/linux/pt-raise.c (raise): Use Linux raise.c + implementation. + * sysdeps/unix/sysv/linux/raise.c (raise): Reimplement to not use + the cached pid/tid value in pthread structure. + 2016-07-13 H.J. Lu [BZ #20347] -- cgit v1.2.3