2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-29 13:28:27 +00:00

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: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
Dmitry Safonov 2017-06-05 22:23:58 +03:00 committed by Pavel Emelyanov
parent 59c9583992
commit 96602ba854

View File

@ -102,12 +102,18 @@ static void sigchld_handler(int signal, siginfo_t *siginfo, void *data)
if (siginfo->si_pid == zombies[i])
return;
if (siginfo->si_code & CLD_EXITED)
r = " exited, status=";
else if (siginfo->si_code & CLD_KILLED)
r = " killed by signal ";
if (siginfo->si_code == CLD_EXITED)
r = "exited, status=";
else if (siginfo->si_code == CLD_KILLED)
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
r = "disappeared with ";
r = "disappeared with";
pr_info("Task %d %s %d\n", siginfo->si_pid, r, siginfo->si_status);