[CRIU] [PATCH] criu: allow the root task to handle SIGCHLD
Tycho Andersen
tycho.andersen at canonical.com
Thu Aug 14 06:41:44 PDT 2014
Hi Andrey,
On Thu, Aug 14, 2014 at 04:52:02PM +0400, Andrey Vagin wrote:
> The criu process attaches to the root task, if opts.swrk_restore
> opts.restore_detach is set. In this case ptrace will ask permissions to
> handle signals.
>
> This patch fixes the following error of static/zombie00:
>
> Execute zdtm/live/static/zombie00
> ./zombie00 --pidfile=zombie00.pid --outfile=zombie00.out
> Dump 2207
> Restore
> Test: zdtm/live/static/zombie00, Result: FAIL
> ==================================== ERROR ====================================
> Restore log: /root/git/orig/criu/test/dump/static/zombie00/2207/1/restore.log
> (00.026826) Error (cr-restore.c:1085): 2207 killed by signal 17
> (00.026985) Error (cr-restore.c:1706): Restoring FAILED.
> ================================= ERROR OVER =================================
>
> Reported-by: Mr Jenkins
> Cc: Pavel Emelyanov <xemul at parallels.com>
> Cc: Tycho Andersen <tycho.andersen at canonical.com>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
Thanks for fixing this!
Tycho
> ---
> cr-restore.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/cr-restore.c b/cr-restore.c
> index bd16b1d..4def1bd 100644
> --- a/cr-restore.c
> +++ b/cr-restore.c
> @@ -1055,6 +1055,13 @@ static void sigchld_handler(int signal, siginfo_t *siginfo, void *data)
> status = exit ? WEXITSTATUS(status) : WTERMSIG(status);
> }
>
> + if (!current && siginfo->si_code == CLD_TRAPPED &&
> + siginfo->si_status == SIGCHLD) {
> + /* The root task is ptraced. Allow it to handle SIGCHLD */
> + ptrace(PTRACE_CONT, siginfo->si_pid, 0, SIGCHLD);
> + return;
> + }
> +
> if (!current || status)
> goto err;
>
> --
> 1.9.3
>
More information about the CRIU
mailing list