mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-29 13:28:27 +00:00
Andrey validly pointed out, that restoring pdeath_sig is not compatible with criu_restore_child() call -- after criu restore children, it will exit and fire the pdeath_sig into restored tree root, potentially killing it. The fix for that could be -- when started in swrk more, criu can restore tree not as children tasks, but as siblings, using the CLONE_PARENT flag when fork()-ing the root task. With this we should also take care about errors handing -- right now criu catches the SIGCHILD from dying children tasks, and since we plan to create them be children of the criu parent (the library caller) we will not be able to catch them. To do so we SEIZE the root task in advance thus causing all SIGCHLD-s go to criu, not to its parent. Having this done we no longer need the SUBREAPER trick in the library call -- tasks get restored right as callers kids :) Some thoughts for future -- using this trick we can finally make "natural" restoration of shell jobs. I.e. -- make criu restore some subtree right under bash, w/o leaving itself as intermediate task and w/o re-parenting the subtree to init after restore. Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Acked-by: Andrey Vagin <avagin@parallels.com>
criu ==== 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 * Kernel configuration, compilation, etc: http://criu.org/Installation * A simple example of usage: http://criu.org/Simple_loop * More sophisticated example with graphical app: http://criu.org/VNC
Description
Languages
C
86%
Python
6.1%
Java
2.6%
Shell
2.6%
Makefile
2%
Other
0.7%