When app is killed by a "bad" signal, log it as error

This commit is contained in:
Nedko Arnaudov 2010-03-06 19:50:00 +02:00
parent a459a2a19c
commit c2f277228e
1 changed files with 14 additions and 2 deletions

View File

@ -2,7 +2,7 @@
/* /*
* LADI Session Handler (ladish) * LADI Session Handler (ladish)
* *
* Copyright (C) 2008, 2009 Nedko Arnaudov <nedko@arnaudov.name> * Copyright (C) 2008, 2009, 2010 Nedko Arnaudov <nedko@arnaudov.name>
* Copyright (C) 2008 Juuso Alasuutari <juuso.alasuutari@gmail.com> * Copyright (C) 2008 Juuso Alasuutari <juuso.alasuutari@gmail.com>
* Copyright (C) 2002 Robert Ham <rah@bash.sh> * Copyright (C) 2002 Robert Ham <rah@bash.sh>
* *
@ -157,6 +157,7 @@ static void loader_sigchld_handler(int signum)
int status; int status;
pid_t pid; pid_t pid;
struct loader_child *child_ptr; struct loader_child *child_ptr;
int signal;
while ((pid = waitpid(-1, &status, WNOHANG)) > 0) while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
{ {
@ -177,7 +178,18 @@ static void loader_sigchld_handler(int signum)
} }
else if (WIFSIGNALED(status)) else if (WIFSIGNALED(status))
{ {
log_info("Child was killed by signal %d", WTERMSIG(status)); signal = WTERMSIG(status);
switch (signal)
{
case SIGILL:
case SIGABRT:
case SIGSEGV:
case SIGFPE:
log_error("Child was killed by signal %d", signal);
break;
default:
log_info("Child was killed by signal %d", signal);
}
} }
else if (WIFSTOPPED(status)) else if (WIFSTOPPED(status))
{ {