diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2023-04-14 21:38:07 +0000 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2023-04-14 21:38:07 +0000 |
commit | 19461905377ce3060b60df1949c082086492dab9 (patch) | |
tree | 4da20c0133cbc1902e59bc22926c66742f4c3160 /psutil | |
parent | a0b096c88421548593ecebe93bbe369385087f3b (diff) | |
download | psutil-19461905377ce3060b60df1949c082086492dab9.tar.gz |
Fix #2236 / NetNBSD: skip terminated process threads
Process threads() and num_threads() methods now skip threads which are
in ZOMBIE or IDLE state. It turns out that after a thread is terminated
/ join()ed, instead of disappearing it can stick around in a ZOMBIE or
IDLE state, presumably for a while before being garbage collected.
Signed-off-by: Giampaolo Rodola <g.rodola@gmail.com>
Diffstat (limited to 'psutil')
-rw-r--r-- | psutil/arch/netbsd/proc.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/psutil/arch/netbsd/proc.c b/psutil/arch/netbsd/proc.c index b87473a6..e71afb38 100644 --- a/psutil/arch/netbsd/proc.c +++ b/psutil/arch/netbsd/proc.c @@ -247,6 +247,10 @@ psutil_proc_threads(PyObject *self, PyObject *args) { nlwps = (int)(size / sizeof(struct kinfo_lwp)); for (i = 0; i < nlwps; i++) { + if ((&kl[i])->l_stat == LSIDL || (&kl[i])->l_stat == LSZOMB) + continue; + // XXX: we return 2 "user" times because the struct does not provide + // any "system" time. py_tuple = Py_BuildValue("idd", (&kl[i])->l_lid, PSUTIL_KPT2DOUBLE((&kl[i])->l_rtime), |