From b6fa2b31a728b74b24f312ccdc55ea11e1ca0016 Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Tue, 26 Mar 2013 22:03:15 +0400 Subject: [PATCH] ptrace: Be more verbose on seize failure 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 Signed-off-by: Pavel Emelyanov --- ptrace.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ptrace.c b/ptrace.c index 01409186b..fad2e54ca 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; }