summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2019-02-21 22:02:11 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2019-02-21 22:02:11 +0100
commit161b651d6a98e490d48a25b28c211afe96ed0893 (patch)
treef6cd9bf062e3c10d5fb5d49c327bea2310e54e64
parent94e869d5395f5c80496522c2c3ccd611521dc724 (diff)
parentbacd4ddf7e896731dd6397f497cbb93ffc9b627f (diff)
Merge commit 'refs/top-bases/t/libpthread_sigs' into t/libpthread_sigs
-rw-r--r--hurd/hurdsig.c4
-rw-r--r--sysdeps/mach/hurd/fork.c4
-rw-r--r--sysdeps/mach/hurd/spawni.c2
3 files changed, 5 insertions, 5 deletions
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. */