CRIU relies on a wide array of advanced Linux kernel features and userspace libraries to perform transparent checkpoint and restore.
PR_SET_MM: Allows the restorer to reconstruct a process’s original memory layout (code, data, heap, etc.).PR_GET_TID_ADDRESS: Captures the address used for set_tid_address.PR_SET_THP_DISABLE: Preserves the status of Transparent Huge Pages.PTRACE_SEIZE & PTRACE_INTERRUPT: Enables non-disruptive task stopping.PTRACE_GETSIGMASK & PTRACE_SETSIGMASK: Captures and restores thread signal masks.PTRACE_PEEKSIGINFO: Reads pending signal queues without delivering them.PTRACE_GET_RSEQ_CONF: Retrieves Restartable Sequences (rseq) registration details./proc/$pid/map_files: Provides stable handles to files mapped into a process’s memory./proc/$pid/fdinfo: Exposes internal state for file descriptors, including positions, flags, and socket handles.ioctl(PAGEMAP_SCAN): Efficiently identifies dirty and present pages in large address spaces.fsopen(), fsmount(), open_tree(), and move_mount() to robustly reconstruct complex filesystem hierarchies and propagation groups.Compel is a dedicated sub-project that provides the infrastructure for Parasite Injection. It allows CRIU to execute self-contained code (PIE) within the context of a target process to capture internal state.
CRIU uses Protocol Buffers as the standard serialization format for all image files. This ensures a structured, extensible, and cross-version compatible way to store process state.
ZDTM is CRIU’s comprehensive test suite. It includes hundreds of tests that verify the functional correctness of C/R across various architectures and kernel versions.