Work
Everything below is in checkpoint-restore/criu, the Linux checkpoint/restore tool. Links go to the merged commits or the pull request.
Google Summer of Code 2026
Checkpoint/restore support for the identity data the kernel attaches to Unix socket messages. Mentored by Alexander Mikhalitsyn. Written up in the article.
Earlier upstream work
- Per-thread timer_slack_ns checkpoint/restore
Collected from each thread through PR_GET_TIMERSLACK inside the parasite and restored per thread, so a process that tuned its own timer slack keeps it. Image format change, plus a test.
- Pipe ownership on restore
A pipe restored by a root CRIU stayed owned by root, so a non-root process got EACCES reopening its own pipe through /proc/self/fd. Fixes issue #2984.
- Partial write handling in bwritev()
Unbuffered writes went straight to writev(), which can return short. A short write there leaves a checkpoint image quietly incomplete.
- Dangling pointers in the Unix socket icon hash
A failed allocation partway through could leave half-inserted entries in a global hash. Everything is now allocated before anything is published.
- Memory leaks and a truncation check in the socket queue
Several leaks along error paths, a packet that could be left on a list with its data already freed, a missing MSG_CTRUNC check, and a control buffer too small for the file descriptors SCM_RIGHTS can carry.
- Double-open of the userns image in stream mode
The image streamer rejects duplicate file requests, so the entry is now read once and shared. Plus assorted CI and coverage fixes.