diff --git a/HISTORY.rst b/HISTORY.rst index d214e61ff..324961bc8 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -37,6 +37,8 @@ - 2231_, [NetBSD]: *available* `virtual_memory()`_ is higher than *total*. - 2234_, [NetBSD]: `virtual_memory()`_ metrics are wrong: *available* and *used* are too high. We now match values shown by *htop* CLI utility. +- 2236_, [NetBSD]: `Process.num_threads()`_ and `Process.threads()`_ return + threads that are already terminated. 5.9.4 ===== diff --git a/psutil/arch/netbsd/proc.c b/psutil/arch/netbsd/proc.c index b87473a6a..e71afb388 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),