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 === |