summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2011-11-09 17:25:43 +0000
committerkib <kib@FreeBSD.org>2011-11-09 17:25:43 +0000
commit969e95a9f7e51110cfe0b80e6fa63779683a4830 (patch)
tree582ab30bda26c6d831037291dfc08ac52b8e574e /sys/i386
parent245b059405bad5f487b5b59da4e4d898e2397fe2 (diff)
downloadFreeBSD-src-969e95a9f7e51110cfe0b80e6fa63779683a4830.zip
FreeBSD-src-969e95a9f7e51110cfe0b80e6fa63779683a4830.tar.gz
Stopped process may legitimately have some threads sleeping and not
suspended, if the sleep is uninterruptible. Reported and tested by: pho MFC after: 1 week
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/machdep.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index 839dd0d..96128e5 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -3299,7 +3299,8 @@ int
fill_fpregs(struct thread *td, struct fpreg *fpregs)
{
- KASSERT(td == curthread || TD_IS_SUSPENDED(td),
+ KASSERT(td == curthread || TD_IS_SUSPENDED(td) ||
+ (P_SHOULDSTOP(td->td_proc) && TD_IS_SLEEPING(td)),
("not suspended thread %p", td));
#ifdef DEV_NPX
npxgetregs(td);
OpenPOWER on IntegriCloud