[CRIU] [PATCH] restorer: Report child's death reason correctly
Dmitry Safonov
dsafonov at virtuozzo.com
Mon Jun 5 22:23:58 MSK 2017
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 at virtuozzo.com>
---
criu/pie/restorer.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/criu/pie/restorer.c b/criu/pie/restorer.c
index f6c30d180da6..8655934dcb01 100644
--- a/criu/pie/restorer.c
+++ b/criu/pie/restorer.c
@@ -111,12 +111,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);
--
2.12.2
More information about the CRIU
mailing list