CRIU supports checkpointing and restoring zombie processes (tasks that have terminated but have not yet been reaped by their parent). These processes are a vital part of a process tree’s state, as they maintain exit codes that the parent may eventually need to read.
Zombie processes are unique because they have no active memory, no file descriptors, and no CPU state. However, they still occupy an entry in the kernel’s process table and maintain an identity via their PID.
During the dump phase, CRIU identifies zombie tasks by checking their state in /proc/$pid/stat.
Restoring a zombie process involves recreating a task and immediately forcing it into a terminated state without allowing its parent to reap it.
clone3 or ns_last_pid).exit() system call with the captured exit code.