summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2008-03-08 21:47:27 +0000
committerRoland McGrath <roland@gnu.org>2008-03-08 21:47:27 +0000
commit2b965f1b4e83257ff5cc87babf9ffb455efc4e5c (patch)
tree0c53f20b0f616d5ab9ef2d4ee6641ae1efd8f4f7 /hurd
parenta8fd84d4500b26e44005b6a535c322b757a4b233 (diff)
* hurd/hurdsig.c (_hurd_internal_post_signal): When normal rules would
ignore a signal that came from a machine exception, treat it as a fatal core-dump signal instead. Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
Diffstat (limited to 'hurd')
-rw-r--r--hurd/hurdsig.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
index e12d19da12..27050c99d9 100644
--- a/hurd/hurdsig.c
+++ b/hurd/hurdsig.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2005
+/* Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2005,2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -743,6 +743,11 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss,
break;
case ignore:
+ if (detail->exc)
+ /* Blocking or ignoring a machine exception is fatal.
+ Otherwise we could just spin on the faulting instruction. */
+ goto fatal;
+
/* Nobody cares about this signal. If there was a call to resume
above in SIGCONT processing and we've left a thread suspended,
now's the time to set it going. */
@@ -759,6 +764,8 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss,
Nothing to do but die; BSD gets SIGILL in this case. */
detail->code = signo; /* XXX ? */
signo = SIGILL;
+
+ fatal:
act = core;
/* FALLTHROUGH */