diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-04-22 09:25:20 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.com> | 2016-07-13 17:08:51 +0100 |
commit | 2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd (patch) | |
tree | 5b425337c8ccc0f0cb878df1f599fa3a2974f01d /bits | |
parent | Regenerate i686 libm-test-ulps with GCC 6.1 at -O3 [BZ #20347] (diff) | |
download | glibc-2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd.tar.gz glibc-2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd.tar.bz2 glibc-2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd.zip |
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.
Diffstat (limited to 'bits')
0 files changed, 0 insertions, 0 deletions