cvs commit: src/sys/platform/pc32/i386 trap.c src/sys/platform/vkernel/i386 trap.c
Nicolas Thery
nth at crater.dragonflybsd.org
Sun Jul 13 03:29:10 PDT 2008
nth 2008/07/13 03:28:51 PDT
DragonFly src repository
Modified files:
sys/platform/pc32/i386 trap.c
sys/platform/vkernel/i386 trap.c
Log:
Fix deadlock occuring when booting vkernel from gdb. One lwp in the vkernel
sends a signal to another one and is preempted by the signal receiving one in
userexit(). As the vkernel is traced, the vkernel process is stopped and the
receiving lwp stops too. The emitting lwp then resumes and blocks later on a
condition variable. The gdb process sleeps on wait(2) which never completes
because the emitting lwp is not stopped.
To prevent this, stop lwps in userexit(), after lwkt_reschedule, if their
owning process is stopped.
Reported-by: Simon Schubert <corecode at fs.ei.tum.de>
Revision Changes Path
1.114 +11 -1 src/sys/platform/pc32/i386/trap.c
1.34 +11 -1 src/sys/platform/vkernel/i386/trap.c
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/trap.c.diff?r1=1.113&r2=1.114&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/i386/trap.c.diff?r1=1.33&r2=1.34&f=u
More information about the Commits
mailing list