Skip to content

Commit

Permalink
* hurd/hurdsig.c (_hurd_internal_post_signal): When normal rules would
Browse files Browse the repository at this point in the history
	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>.
  • Loading branch information
Roland McGrath committed Mar 8, 2008
1 parent a8fd84d commit 2b965f1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
2008-03-08 Roland McGrath <roland@frob.com>

* 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>.

* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
Clear DF bit in thread state's eflags.
Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
Expand Down
9 changes: 8 additions & 1 deletion hurd/hurdsig.c
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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. */
Expand All @@ -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 */

Expand Down

0 comments on commit 2b965f1

Please sign in to comment.