glibc/sysdeps/posix
Adam Yi 567f7413fb posix: Fix system blocks SIGCHLD erroneously [BZ #30163]
Fix bug that SIGCHLD is erroneously blocked forever in the following
scenario:

1. Thread A calls system but hasn't returned yet
2. Thread B calls another system but returns

SIGCHLD would be blocked forever in thread B after its system() returns,
even after the system() in thread A returns.

Although POSIX does not require, glibc system implementation aims to be
thread and cancellation safe. This bug was introduced in
5fb7fc9635 when we moved reverting signal
mask to happen when the last concurrently running system returns,
despite that signal mask is per thread. This commit reverts this logic
and adds a test.

Signed-off-by: Adam Yi <ayi@janestreet.com>
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
(cherry picked from commit 436a604b7d)
2023-04-28 16:36:24 +02:00
..
alarm.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
clock_getres.c Add C2X timespec_getres 2021-05-17 20:55:21 +00:00
clock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
ctermid.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
cuserid.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
dl-fileid.h Use 64 bit time_t stat internally 2021-06-22 12:09:52 -03:00
dup2.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
dup.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
euidaccess.c Use 64 bit time_t stat internally 2021-06-22 12:09:52 -03:00
flock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
fpathconf.c posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208) 2022-06-01 13:34:51 -03:00
gai_strerror-strs.h
gai_strerror.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
getaddrinfo.c gaiconf_init: Avoid double-free in label and precedence lists 2021-08-04 15:53:46 +05:30
getcwd.c getcwd: Set errno to ERANGE for size == 1 (CVE-2021-3999) 2022-01-24 11:37:06 +05:30
getdtsz.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
gethostname.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
getpagesize.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
isatty.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
isfdtype.c socket: Use 64 bit stat for isfdtype (BZ# 29209) 2022-06-01 13:34:51 -03:00
killpg.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
libc_fatal.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
Makefile linux: Require /dev/shm as the shared memory file system 2021-02-08 14:10:42 -03:00
mkfifo.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
mkfifoat.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
nice.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
open64.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pathconf.c Use 64 bit time_t stat internally 2021-06-22 12:09:52 -03:00
pause.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
posix_fallocate64.c posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207) 2022-06-01 13:34:51 -03:00
posix_fallocate.c posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207) 2022-06-01 13:34:51 -03:00
pread64.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pread.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
preadv2.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
preadv64.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
preadv64v2.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
preadv_common.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
preadv.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
profil.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pwrite64.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pwrite.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pwritev2.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pwritev64.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pwritev64v2.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pwritev_common.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
pwritev.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
raise.c nptl: Implement raise in terms of pthread_kill 2021-06-09 15:16:45 -03:00
readv.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
remove.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
rename.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigblock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigignore.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigintr.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
signal.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigpause.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigset.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigsetmask.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigsuspend.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sigwait.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sleep.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
spawni.c posix: Add posix_spawn_file_actions_addclosefrom_np 2021-07-08 14:08:15 -03:00
sprofil.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
Subdirs
sysconf-pthread_stack_min.h Define PTHREAD_STACK_MIN to sysconf(_SC_THREAD_STACK_MIN) 2021-07-09 15:10:35 -07:00
sysconf.c posix: Add sysconf(_SC_{MIN,}SIGSTKSZ) support 2021-07-22 01:24:52 +02:00
system.c posix: Fix system blocks SIGCHLD erroneously [BZ #30163] 2023-04-28 16:36:24 +02:00
sysv_signal.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tempname.c Use 64 bit time_t stat internally 2021-06-22 12:09:52 -03:00
truncate.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
ttyname_r.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
ttyname.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
ulimit.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
usleep.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
utime.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
utimes.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
writev_nocancel.c
writev.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00