• Tycho Andersen's avatar
    restore: zombies should collect their children · 03e13d47
    Tycho Andersen authored
    Consider when there is a double fork of helpers or zombies, e.g. when a
    zombie has a session id which doesn't match its pid. If the child dies and
    exits before the grandchild, the grandchild reparents to init, and when the
    task dies init doesn't have it in the helper list, so init dies as well,
    viz. the log below.
    
    (00.118789) Add a helper 293 for restoring SID 293
    (00.118792) Attach 294 to the temporary task 293
    ...
    (01.394403)    294: Restoring zombie with 0 code
    ...
    pie: Task 294  exited, status= 0
    (01.434279) Error (cr-restore.c:1308): 12097 killed by signal 19
    (01.434420) Error (cr-restore.c:1308): 12097 killed by signal 19
    (01.450258) Switching to new ns to clean ghosts
    (01.450324) Error (cr-restore.c:2138): Restoring FAILED.
    
    Let's have the helpers reap their children before they exit to avoid this.
    
    v2: block SIGCHLD when waiting on helpers so that it doesn't race with the
        SICGHLD handler
    v3: * only helpers should collect their children, zombies can't have kids
        * don't double decrement nr_tasks in zombie case
    Signed-off-by: 's avatarTycho Andersen <tycho.andersen@canonical.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    03e13d47
Name
Last commit
Last update
Documentation Loading commit data...
contrib Loading commit data...
crit Loading commit data...
criu Loading commit data...
images Loading commit data...
lib Loading commit data...
scripts Loading commit data...
test Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
Makefile Loading commit data...
Makefile.install Loading commit data...
Makefile.versions Loading commit data...
README.md Loading commit data...