diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/execute.c | 10 | ||||
-rw-r--r-- | src/execute.h | 2 | ||||
-rw-r--r-- | src/main.c | 2 |
3 files changed, 8 insertions, 6 deletions
diff --git a/src/execute.c b/src/execute.c index ead6c0fa42..1b37f2efe4 100644 --- a/src/execute.c +++ b/src/execute.c @@ -783,10 +783,12 @@ int exec_spawn(ExecCommand *command, /* child */ - /* We reset exactly these two signals, since they are - * the only ones we set to SIG_IGN in the main - * daemon. All others */ - default_signals(SIGNALS_CRASH_HANLDER, + /* We reset exactly these signals, since they are the + * only ones we set to SIG_IGN in the main daemon. All + * others we leave untouched because we set them to + * SIG_DFL or a valid handler initially, both of which + * will be demoted to SIG_DFL. */ + default_signals(SIGNALS_CRASH_HANDLER, SIGNALS_IGNORE, -1); if (sigemptyset(&ss) < 0 || diff --git a/src/execute.h b/src/execute.h index 045d4620d7..4585fe43a7 100644 --- a/src/execute.h +++ b/src/execute.h @@ -42,7 +42,7 @@ struct CGroupBonding; #define LOGGER_SOCKET "/org/freedesktop/systemd1/logger" /* This doesn't really belong here, but I couldn't find a better place to put this. */ -#define SIGNALS_CRASH_HANLDER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT +#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT #define SIGNALS_IGNORE SIGKILL,SIGPIPE typedef enum ExecInput { diff --git a/src/main.c b/src/main.c index 5c2af042d9..3b9719fb56 100644 --- a/src/main.c +++ b/src/main.c @@ -165,7 +165,7 @@ static void install_crash_handler(void) { sa.sa_handler = crash; sa.sa_flags = SA_NODEFER; - sigaction_many(&sa, SIGNALS_CRASH_HANLDER, -1); + sigaction_many(&sa, SIGNALS_CRASH_HANDLER, -1); } static int make_null_stdio(void) { |