summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exit.c
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2003-03-11 00:07:53 +0000
committerdavidxu <davidxu@FreeBSD.org>2003-03-11 00:07:53 +0000
commitbb4f70ad77336204f47c1f34d447e9b21b4a0510 (patch)
treeff2e7470175d49774ac87c9aa830640b3bc32c2d /sys/kern/kern_exit.c
parent29e1315705c89238422661038791bcd98cf379f0 (diff)
downloadFreeBSD-src-bb4f70ad77336204f47c1f34d447e9b21b4a0510.zip
FreeBSD-src-bb4f70ad77336204f47c1f34d447e9b21b4a0510.tar.gz
Fix threaded process job control bug. SMP tested.
Reviewed by: julian
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r--sys/kern/kern_exit.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 59a1a4c..6cc3e0a 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -732,7 +732,8 @@ loop:
mtx_unlock(&Giant);
return (0);
}
- if (P_SHOULDSTOP(p) && ((p->p_flag & P_WAITED) == 0) &&
+ if (P_SHOULDSTOP(p) && (p->p_suspcount == p->p_numthreads) &&
+ ((p->p_flag & P_WAITED) == 0) &&
(p->p_flag & P_TRACED || uap->options & WUNTRACED)) {
p->p_flag |= P_WAITED;
sx_xunlock(&proctree_lock);
OpenPOWER on IntegriCloud