glibc/sysdeps/posix
Adam Yi 436a604b7d 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>
2023-03-07 09:54:50 -03:00
..
alarm.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
clock_getres.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
clock.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
ctermid.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
cuserid.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dl-fileid.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dup2.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
dup.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
euidaccess.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
flock.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
fpathconf.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
gai_strerror-strs.h * sysdeps/posix/gai_strerror.c: Complete rewrite. Avoid relocations. 2005-12-20 17:53:00 +00:00
gai_strerror.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
getaddrinfo.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
getcwd.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
getdtsz.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
gethostname.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
getpagesize.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
isatty.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
isfdtype.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
killpg.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
libc_fatal.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00: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 2023-01-06 21:14:39 +00:00
mkfifoat.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
nice.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
open64.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pathconf.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pause.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
posix_fallocate64.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
posix_fallocate.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pread64.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pread.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
preadv2.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
preadv64.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
preadv64v2.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
preadv_common.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
preadv.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
profil.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pwrite64.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pwrite.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pwritev2.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pwritev64.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pwritev64v2.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pwritev_common.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
pwritev.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
raise.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
readv.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
remove.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
rename.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigblock.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigignore.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigintr.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
signal.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigpause.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigset.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigsetmask.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigsuspend.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sigwait.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sleep.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sprofil.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
Subdirs Make sysdeps/posix bring in login subdir. 2015-07-23 17:04:22 -07:00
sysconf-pthread_stack_min.h Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
sysconf.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
system.c posix: Fix system blocks SIGCHLD erroneously [BZ #30163] 2023-03-07 09:54:50 -03:00
sysv_signal.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
tempname.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
truncate.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
ttyname_r.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
ttyname.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
ulimit.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
usleep.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
utime.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
utimes.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00
writev_nocancel.c hurd: Fix __writev_nocancel_nostatus 2020-06-14 17:45:04 +00:00
writev.c Update copyright dates with scripts/update-copyrights 2023-01-06 21:14:39 +00:00