[CRIU] [PATCH] ptrace: Be more verbose on seize failure

Pavel Emelyanov xemul at parallels.com
Tue Mar 26 13:09:55 EDT 2013


The ptrace seize may fail for various reasons. E.g. -- no enough perms
to get the ptrace access to the tasks, or various selinux restrictions.

Print what exactly has happened when ptrace failed.

Reported-by: Kevin Wilson <wkevils at gmail.com>
Signed-off-by: Pavel Emelyanov <xemul at parallels.com>

---

diff --git a/ptrace.c b/ptrace.c
index 0140918..fad2e54 100644
--- a/ptrace.c
+++ b/ptrace.c
@@ -48,10 +48,11 @@ int seize_task(pid_t pid, pid_t ppid, pid_t *pgid, pid_t *sid)
 {
 	siginfo_t si;
 	int status;
-	int ret, ret2;
+	int ret, ret2, ptrace_errno;
 	struct proc_pid_stat_small ps;
 
 	ret = ptrace(PTRACE_SEIZE, pid, NULL, 0);
+	ptrace_errno = errno;
 
 	/*
 	 * It's ugly, but the ptrace API doesn't allow to distinguish
@@ -71,8 +72,8 @@ int seize_task(pid_t pid, pid_t ppid, pid_t *pgid, pid_t *sid)
 
 	if (ret < 0) {
 		if (ps.state != 'Z') {
-			pr_err("Unseizeable non-zombie %d found, state %c\n",
-					pid, ps.state);
+			pr_err("Unseizeable non-zombie %d found, state %c, err %d/%d\n",
+					pid, ps.state, ret, ptrace_errno);
 			return -1;
 		}
 


More information about the CRIU mailing list