• Andrey Vagin's avatar
    criu: allow the root task to handle SIGCHLD · 0b33bac3
    Andrey Vagin authored
    If criu process attaches to the root task (it happens for opts.swrk_restore
    and opts.restore_detach) with ptrace, then any signal delivered to the root
    would be also delivered to criu. The latter woult treat the former to die
    due to this delivery and would abort the restore.
    
    Fix it by checking that criu (current == NULL) gets ptrace notification
    (si_code == CLD_TRAPPED) about signal delivered (si_status = SIGCHLD,
    no other signals are allowed by the restoring tasks).
    
    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@parallels.com>
    Cc: Tycho Andersen <tycho.andersen@canonical.com>
    Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    0b33bac3
cr-restore.c 60.5 KB