Commit b6fa2b31 authored by Pavel Emelyanov's avatar Pavel Emelyanov

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: 's avatarKevin Wilson <wkevils@gmail.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 7571ff69
...@@ -48,10 +48,11 @@ int seize_task(pid_t pid, pid_t ppid, pid_t *pgid, pid_t *sid) ...@@ -48,10 +48,11 @@ int seize_task(pid_t pid, pid_t ppid, pid_t *pgid, pid_t *sid)
{ {
siginfo_t si; siginfo_t si;
int status; int status;
int ret, ret2; int ret, ret2, ptrace_errno;
struct proc_pid_stat_small ps; struct proc_pid_stat_small ps;
ret = ptrace(PTRACE_SEIZE, pid, NULL, 0); ret = ptrace(PTRACE_SEIZE, pid, NULL, 0);
ptrace_errno = errno;
/* /*
* It's ugly, but the ptrace API doesn't allow to distinguish * 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) ...@@ -71,8 +72,8 @@ int seize_task(pid_t pid, pid_t ppid, pid_t *pgid, pid_t *sid)
if (ret < 0) { if (ret < 0) {
if (ps.state != 'Z') { if (ps.state != 'Z') {
pr_err("Unseizeable non-zombie %d found, state %c\n", pr_err("Unseizeable non-zombie %d found, state %c, err %d/%d\n",
pid, ps.state); pid, ps.state, ret, ptrace_errno);
return -1; return -1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment