[CRIU] [PATCH RESEND 0/4] Fix restore of tasks having zombie pgid

Kirill Tkhai ktkhai at virtuozzo.com
Thu Dec 28 13:50:29 MSK 2017


(RESENDING because patchwork breaks on [4/4] commit message)

This problem originally was detected on Virtuozzo 7 criu package
and is connected with tasks having zombie sid. For criu-dev
it's actual for pgid inherited from a zombie.

The problem is a zombie may be choosen as parent for a task helper.
Zombie does not expect its children may exit, and it's being blaimed
by generic SIGCHLD handler in this case. See patch [3/4] for details.
Also, there is a problem that prepare_fds() is not called for zombie
for such cases. Zombie does not have open files, but it shares fdt
with task helper and must do that just to increment fdt::fdt_lock.
See patch [2/4] for details. Patch [4/4] contains the test.

https://travis-ci.org/tkhai/criu/builds/322479960

---

Kirill Tkhai (4):
      zdtm: Export sys_clone_unified() to headers
      restore: Call prepare_fds() in restore_one_zombie()
      restore: Split restore_one_helper() and wait exiting zombie children
      zdtm: Add zombie01 test


 criu/cr-restore.c              |   36 ++++++++++++------
 test/zdtm/lib/zdtmtst.h        |    2 +
 test/zdtm/static/Makefile      |    1 +
 test/zdtm/static/zombie01.c    |   80 ++++++++++++++++++++++++++++++++++++++++
 test/zdtm/static/zombie01.desc |    1 +
 5 files changed, 107 insertions(+), 13 deletions(-)
 create mode 100644 test/zdtm/static/zombie01.c
 create mode 100644 test/zdtm/static/zombie01.desc

--
Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>


More information about the CRIU mailing list