Line 3:
Line 3:
== PID mismatch on restore ==
== PID mismatch on restore ==
−
If you see one of these lines in failed restore logs
+
If you see one of these lines in the failed restore logs
<pre>
<pre>
Line 12:
Line 12:
</pre>
</pre>
−
this means that while restoring a process tree CRIU has failed to recreate a process or a thread with the PID (TID) value it used to have on dump. This most likely is due to the PID/TID value in question being busy with some other task or thread. There are several possible solutions to this.
+
this means that while restoring a process tree, CRIU has failed to recreate a process (or a thread) with the PID (TID) value the proceess (thread) used to have on dump. Most likely, this is because the desired PID/TID is used by other task or thread. There are several possible solutions to this.
−
=== Restore "by hands" ===
+
=== Restore "by hand" ===
−
One is to restore the images into a separate pid namespace. This can be done by using the <code>unshare -p -m --fork --mount-proc</code> command and then doing the restore. In this case you might also want to unshare the mount namespace and re-mount the /proc so that the restored tasks can use it. This method effectively means restoring tasks in container.
+
One way is to restore the images into a separate pid namespace. This can be done by using the <code>unshare -p -m --fork --mount-proc</code> command and then doing the restore. In this case, you might also want to unshare the mount namespace and re-mount the /proc, so that the restored tasks can use it. This method effectively means restoring tasks in a container.
−
Having said the above, the most correct way to handle this is to run the tasks you plan to checkpoint in the pid namespace (with /proc tune-up if required) from the very beginning.
+
Note, however, that them most correct way is to run the tasks you plan to checkpoint in the pid namespace (with /proc tune-up if required) from the very beginning.
=== Kill the obstacle ===
=== Kill the obstacle ===
−
Another solution to PID mismatch, not correct, but still, is in killing the offending task :)
+
Another solution to PID mismatch, which is not correct, but still efficient, is to kill the offending task :)
=== With CRIU help ===
=== With CRIU help ===