1
diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
2
index 67037e8..44e067c 100644
5
@@ -859,9 +859,7 @@ post_signal (struct hurd_sigstate *ss,
8
/* Handle receipt of a blocked signal, or any signal while stopped. */
9
- if (act != ignore && /* Signals ignored now are forgotten now. */
10
- __sigismember (&blocked, signo) ||
11
- (signo != SIGKILL && _hurd_stopped))
12
+ if (__sigismember (&blocked, signo) || (signo != SIGKILL && _hurd_stopped))
16
diff --git a/sysdeps/mach/hurd/fork.c b/sysdeps/mach/hurd/fork.c
17
index a4f3055..c74998d 100644
18
--- a/sysdeps/mach/hurd/fork.c
19
+++ b/sysdeps/mach/hurd/fork.c
20
@@ -648,8 +648,10 @@ __fork (void)
21
err = __USEPORT (PROC, __proc_getpids (port, &_hurd_pid, &_hurd_ppid,
24
- /* Forking clears the trace flag. */
25
+ /* Forking clears the trace flag and pending masks. */
26
__sigemptyset (&_hurdsig_traced);
27
+ __sigemptyset (&_hurd_global_sigstate->pending);
28
+ __sigemptyset (&ss->pending);
30
/* Run things that want to run in the child task to set up. */
31
RUN_HOOK (_hurd_fork_child_hook, ());
32
diff --git a/sysdeps/mach/hurd/spawni.c b/sysdeps/mach/hurd/spawni.c
33
index 373da8d..2442e6f 100644
34
--- a/sysdeps/mach/hurd/spawni.c
35
+++ b/sysdeps/mach/hurd/spawni.c
36
@@ -241,7 +241,7 @@ __spawni (pid_t *pid, const char *file,
38
_hurd_sigstate_lock (ss);
39
ints[INIT_SIGMASK] = ss->blocked;
40
- ints[INIT_SIGPENDING] = _hurd_sigstate_pending (ss); /* XXX really? */
41
+ ints[INIT_SIGPENDING] = 0;
42
ints[INIT_SIGIGN] = 0;
43
/* Unless we were asked to reset all handlers to SIG_DFL,
44
pass down the set of signals that were set to SIG_IGN. */