diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2017-11-24 15:05:33 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2017-11-24 15:05:33 +0100 |
commit | d43ee3003350df56c6d1a96dac9784f064daad46 (patch) | |
tree | 65ab533d75dd634440477f58dc5d8a504db37854 /psutil/_psutil_osx.c | |
parent | 04e867218f565bbf3fd37eb14dd68699092e99b0 (diff) | |
download | psutil-d43ee3003350df56c6d1a96dac9784f064daad46.tar.gz |
fix #1181: raise AD if task_for_pid() fails with 5 and errno == ENOENT
Diffstat (limited to 'psutil/_psutil_osx.c')
-rw-r--r-- | psutil/_psutil_osx.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/psutil/_psutil_osx.c b/psutil/_psutil_osx.c index fef61ca8..55dd64ca 100644 --- a/psutil/_psutil_osx.c +++ b/psutil/_psutil_osx.c @@ -338,8 +338,16 @@ psutil_proc_memory_maps(PyObject *self, PyObject *args) { err = task_for_pid(mach_task_self(), (pid_t)pid, &task); if (err != KERN_SUCCESS) { - psutil_debug("task_for_pid() failed"); // TODO temporary - psutil_raise_for_pid(pid, "task_for_pid()"); + if ((err == 5) && (errno == ENOENT)) { + // See: https://github.com/giampaolo/psutil/issues/1181 + psutil_debug("task_for_pid(MACH_PORT_NULL) failed; err=%i, " + "errno=%i, msg='%s'\n", err, errno, + mach_error_string(err)); + AccessDenied(""); + } + else { + psutil_raise_for_pid(pid, "task_for_pid(MACH_PORT_NULL)"); + } goto error; } |