No description
Find a file
Tycho Andersen 03e13d475d restore: zombies should collect their children
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: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-04-04 17:10:14 +03:00
contrib Add OverlayFS support to docker_cr.sh 2015-08-18 18:14:32 +03:00
crit crit: Add symbolic link for pycriu module 2016-03-01 12:50:47 +03:00
criu restore: zombies should collect their children 2016-04-04 17:10:14 +03:00
Documentation rework criu check logic 2016-03-25 23:39:21 +03:00
images build: images -- Add missing cleanups 2016-03-25 23:39:22 +03:00
lib build: clean up various other bits 2016-03-16 16:16:08 +03:00
scripts nmk: build.mk -- Add @libso-y helper 2016-04-01 18:06:31 +03:00
test tests: remap_dead_pid[_root] -- Run in namespace only 2016-04-01 18:06:30 +03:00
.gitignore git: ignore scripts/build/qemu-user-static/* 2016-03-16 16:16:09 +03:00
.mailmap repo: Add mailmap file 2012-03-25 23:31:20 +04:00
.travis.yml travis: execute tests from travis 2016-02-24 13:17:44 +03:00
COPYING Add LGPL licence for library directory 2013-04-01 12:29:06 +04:00
CREDITS Add the CREDITS file 2012-07-30 13:52:37 +04:00
Makefile Makefile: drop 'rebuild' from help message 2016-04-01 18:06:31 +03:00
Makefile.install build: Bring install back to life 2016-02-19 14:31:42 +03:00
Makefile.versions criu: Version 2.0 2016-03-07 20:56:59 +03:00
README.md Updated README 2015-05-19 22:38:06 +03:00

CRIU (Checkpoint and Restore in Userspace)

An utility to checkpoint/restore tasks. Using this tool, you can freeze a running application (or part of it) and checkpoint it to a hard drive as a collection of files. You can then use the files to restore and run the application from the point it was frozen at. The distinctive feature of the CRIU project is that it is mainly implemented in user space.

The project home is at http://criu.org.

Pages worth starting with are:

How to contribute