mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 00:32:25 -04:00
libprocstat kstack: fix race with thread creation
When collecting kernel stacks for a target process, if the process
adds a thread between the two calls to sysctl, ignore the additional
threads. Previously, procstat would print only a useless error
message. Now, it prints a consistent snapshot of the stacks.
We know that snapshot is already stale, but it could still be stale
even with a more complex fix to reallocate and retry, so such a fix
is hardly worth the effort.
Reported by: Daniel.Mitchell@emc.com
MFC after: 1 week
Sponsored by: Dell EMC Isilon
(cherry picked from commit 427f12f150)
This commit is contained in:
parent
94df301ac2
commit
d895236443
1 changed files with 2 additions and 1 deletions
|
|
@ -2610,7 +2610,8 @@ procstat_getkstack_sysctl(pid_t pid, int *cntp)
|
|||
warn("malloc(%zu)", len);
|
||||
return (NULL);
|
||||
}
|
||||
if (sysctl(name, nitems(name), kkstp, &len, NULL, 0) == -1) {
|
||||
if (sysctl(name, nitems(name), kkstp, &len, NULL, 0) == -1 &&
|
||||
errno != ENOMEM) {
|
||||
warn("sysctl: kern.proc.pid: %d", pid);
|
||||
free(kkstp);
|
||||
return (NULL);
|
||||
|
|
|
|||
Loading…
Reference in a new issue