only add non-SIGILL signal handlers for non-quicklaunch builds

quicklaunch does not require signal handling and any pause() call will
impede obtaining crashdumps
This commit is contained in:
Mike Blumenkrantz 2018-02-07 13:36:12 -05:00
parent 9c18cbc84b
commit abc802bd67
2 changed files with 26 additions and 28 deletions

View File

@ -242,33 +242,33 @@ elm_main(int argc, char **argv)
if (!getenv("NOTIFY_SOCKET")) if (!getenv("NOTIFY_SOCKET"))
{ {
TS("Signal Trap"); TS("Signal Trap");
#ifndef HAVE_WAYLAND
action.sa_sigaction = e_sigseg_act; action.sa_sigaction = e_sigseg_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask); sigemptyset(&action.sa_mask);
sigaction(SIGSEGV, &action, NULL); sigaction(SIGSEGV, &action, NULL);
action.sa_sigaction = e_sigill_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask);
sigaction(SIGILL, &action, NULL);
action.sa_sigaction = e_sigfpe_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask);
sigaction(SIGFPE, &action, NULL);
#ifndef HAVE_WAYLAND_ONLY
action.sa_sigaction = e_sigbus_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask);
sigaction(SIGBUS, &action, NULL);
#endif #endif
action.sa_sigaction = e_sigill_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask);
sigaction(SIGILL, &action, NULL);
#ifndef HAVE_WAYLAND
action.sa_sigaction = e_sigfpe_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask);
sigaction(SIGFPE, &action, NULL);
action.sa_sigaction = e_sigabrt_act; action.sa_sigaction = e_sigbus_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask); sigemptyset(&action.sa_mask);
sigaction(SIGABRT, &action, NULL); sigaction(SIGBUS, &action, NULL);
TS("Signal Trap Done");
action.sa_sigaction = e_sigabrt_act;
action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
sigemptyset(&action.sa_mask);
sigaction(SIGABRT, &action, NULL);
#endif
TS("Signal Trap Done");
} }
t = ecore_time_unix_get(); t = ecore_time_unix_get();

View File

@ -68,10 +68,6 @@ _e_write_safe_int(int fd, const char *buf, size_t size)
static void static void
_e_crash(void) _e_crash(void)
{ {
#ifdef HAVE_WAYLAND
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
return;
#endif
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
_e_x_composite_shutdown(); _e_x_composite_shutdown();
ecore_x_pointer_ungrab(); ecore_x_pointer_ungrab();
@ -100,7 +96,9 @@ e_sigill_act(int x EINA_UNUSED, siginfo_t *info EINA_UNUSED, void *data EINA_UNU
// by a SEGV. // by a SEGV.
kill(getpid(), SIGUSR1); kill(getpid(), SIGUSR1);
kill(getpid(), SIGSEGV); kill(getpid(), SIGSEGV);
#ifndef HAVE_WAYLAND
pause(); pause();
#endif
/* _e_x_composite_shutdown(); */ /* _e_x_composite_shutdown(); */
/* ecore_x_pointer_ungrab(); */ /* ecore_x_pointer_ungrab(); */
/* ecore_x_keyboard_ungrab(); */ /* ecore_x_keyboard_ungrab(); */