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 | |
parent | 04e867218f565bbf3fd37eb14dd68699092e99b0 (diff) | |
download | psutil-d43ee3003350df56c6d1a96dac9784f064daad46.tar.gz |
fix #1181: raise AD if task_for_pid() fails with 5 and errno == ENOENT
-rw-r--r-- | HISTORY.rst | 1 | ||||
-rw-r--r-- | psutil/_psutil_osx.c | 12 |
2 files changed, 11 insertions, 2 deletions
diff --git a/HISTORY.rst b/HISTORY.rst index fb3311bb..430fb5e4 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -17,6 +17,7 @@ - 1169_: [Linux] users() "hostname" returns username instead. (patch by janderbrain) - 1172_: [Windows] `make test` does not work. +- 1181_: [OSX] Process.memory_maps() may raise ENOENT. 5.4.1 ===== 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; } |