Commit 96602ba8 authored by Dmitry Safonov's avatar Dmitry Safonov Committed by Pavel Emelyanov

restorer: Report child's death reason correctly

E.g, if child was killed by SIGSEGV, this message
previously was "exited, status=11", as si_code == CLD_DUMPED == 3
in this case will result in (si_code & CLD_KILLED) == (si_code & 1).
Which is misleading as you may try to look for exit() calls
with 11 arg.
Correct if to compare si_code with CLD_*.
Signed-off-by: 's avatarDmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent 59c95839
...@@ -102,12 +102,18 @@ static void sigchld_handler(int signal, siginfo_t *siginfo, void *data) ...@@ -102,12 +102,18 @@ static void sigchld_handler(int signal, siginfo_t *siginfo, void *data)
if (siginfo->si_pid == zombies[i]) if (siginfo->si_pid == zombies[i])
return; return;
if (siginfo->si_code & CLD_EXITED) if (siginfo->si_code == CLD_EXITED)
r = " exited, status="; r = "exited, status=";
else if (siginfo->si_code & CLD_KILLED) else if (siginfo->si_code == CLD_KILLED)
r = " killed by signal "; r = "killed by signal";
else if (siginfo->si_code == CLD_DUMPED)
r = "terminated abnormally with";
else if (siginfo->si_code == CLD_TRAPPED)
r = "trapped with";
else if (siginfo->si_code == CLD_STOPPED)
r = "stopped with";
else else
r = "disappeared with "; r = "disappeared with";
pr_info("Task %d %s %d\n", siginfo->si_pid, r, siginfo->si_status); pr_info("Task %d %s %d\n", siginfo->si_pid, r, siginfo->si_status);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment