diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2017-04-26 18:31:08 +0900 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2017-04-26 16:07:19 -0400 |
commit | 27a6b9f7c84c914d0f5909ec1069d72f5035bc04 (patch) | |
tree | a202f04eb2c42831c535d1fcfb90089d327b4cbf /os | |
parent | 23f2f1932a1d3f36468eaf735ae34934d246567b (diff) |
os: Handle SIGABRT
Without this, assertion failures can make life hard for users and those
trying to help them.
v2:
* Change commit log wording slightly to "can make life hard", since
apparently e.g. logind can alleviate that somewhat.
* Set default handler for SIGABRT in
hw/xfree86/common/xf86Init.c:InstallSignalHandlers() and
hw/xquartz/quartz.c:QuartzInitOutput() (Eric Anholt)
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Diffstat (limited to 'os')
-rw-r--r-- | os/osinit.c | 1 | ||||
-rw-r--r-- | os/utils.c | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/os/osinit.c b/os/osinit.c index 5b2f6b546..cd769d181 100644 --- a/os/osinit.c +++ b/os/osinit.c @@ -173,6 +173,7 @@ OsInit(void) int i; int siglist[] = { SIGSEGV, SIGQUIT, SIGILL, SIGFPE, SIGBUS, + SIGABRT, SIGSYS, SIGXCPU, SIGXFSZ, diff --git a/os/utils.c b/os/utils.c index 3f8bac5c6..226b9c817 100644 --- a/os/utils.c +++ b/os/utils.c @@ -1353,6 +1353,12 @@ OsAbort(void) #ifndef __APPLE__ OsBlockSignals(); #endif +#if !defined(WIN32) || defined(__CYGWIN__) + /* abort() raises SIGABRT, so we have to stop handling that to prevent + * recursion + */ + OsSignal(SIGABRT, SIG_DFL); +#endif abort(); } |