diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2019-02-21 22:02:11 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2019-02-21 22:02:11 +0100 |
commit | bacd4ddf7e896731dd6397f497cbb93ffc9b627f (patch) | |
tree | 0548458f8be8211c53c03a052539187f621f111b | |
parent | 3611e70524a330d1d177259812e5f9f5c609158a (diff) | |
parent | 2a9e1c4028bb335642e2b6620f42594f241ce0fb (diff) |
Merge branch 't/hurdsig-fixes-2' into refs/top-bases/t/libpthread_sigs
-rw-r--r-- | .topdeps | 3 | ||||
-rw-r--r-- | .topmsg | 8 | ||||
-rw-r--r-- | hurd/hurdsig.c | 4 | ||||
-rw-r--r-- | sysdeps/mach/hurd/fork.c | 4 | ||||
-rw-r--r-- | sysdeps/mach/hurd/spawni.c | 2 |
5 files changed, 10 insertions, 11 deletions
@@ -1,2 +1 @@ -t/hurdsig-global-dispositions -cvs/exc2signal-template +t/hurdsig-SA_SIGINFO @@ -1,6 +1,6 @@ From: Jeremie Koenig <jk@jk.fr.eu.org> -Subject: [PATCH] implement SA_SIGINFO signal handlers. +Subject: [PATCH] Small signal fixes - 52baaca Hurd signals: Copy bits/sigaction.h - 4232c66 Hurd signals: SA_SIGINFO support - 1831cfe Hurd signals: Use POSIX sigcodes + 22e7268 Hurd signals: fix sigwait for pending signals + da8bf5e Hurd signals: clear the pending mask in fork and spawn + 8e87205 Hurd signals: don't drop blocked ignored signals diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c index 3ada31483e..81e4425534 100644 --- a/hurd/hurdsig.c +++ b/hurd/hurdsig.c @@ -868,9 +868,7 @@ post_signal (struct hurd_sigstate *ss, } /* Handle receipt of a blocked signal, or any signal while stopped. */ - if (act != ignore && /* Signals ignored now are forgotten now. */ - __sigismember (&blocked, signo) || - (signo != SIGKILL && _hurd_stopped)) + if (__sigismember (&blocked, signo) || (signo != SIGKILL && _hurd_stopped)) { mark_pending (); act = ignore; diff --git a/sysdeps/mach/hurd/fork.c b/sysdeps/mach/hurd/fork.c index 3d8e45df13..fb60c8cc9d 100644 --- a/sysdeps/mach/hurd/fork.c +++ b/sysdeps/mach/hurd/fork.c @@ -655,8 +655,10 @@ __fork (void) err = __USEPORT (PROC, __proc_getpids (port, &_hurd_pid, &_hurd_ppid, &_hurd_orphaned)); - /* Forking clears the trace flag. */ + /* Forking clears the trace flag and pending masks. */ __sigemptyset (&_hurdsig_traced); + __sigemptyset (&_hurd_global_sigstate->pending); + __sigemptyset (&ss->pending); /* Release malloc locks. */ _hurd_malloc_fork_child (); diff --git a/sysdeps/mach/hurd/spawni.c b/sysdeps/mach/hurd/spawni.c index 681d86d726..25831b7667 100644 --- a/sysdeps/mach/hurd/spawni.c +++ b/sysdeps/mach/hurd/spawni.c @@ -244,7 +244,7 @@ __spawni (pid_t *pid, const char *file, _hurd_sigstate_lock (ss); ints[INIT_SIGMASK] = ss->blocked; - ints[INIT_SIGPENDING] = _hurd_sigstate_pending (ss); /* XXX really? */ + ints[INIT_SIGPENDING] = 0; ints[INIT_SIGIGN] = 0; /* Unless we were asked to reset all handlers to SIG_DFL, pass down the set of signals that were set to SIG_IGN. */ |