CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2018/07/07 09:19:25
Modified files:
sys/kern : kern_sched.c
Log message:
Release the kernel lock fully on thread exit. This prevents a locking
error that would happen otherwise when a traced and stopped
multithreaded process is forced to exit. The error shows up as a kernel
panic when WITNESS is enabled. Without WITNESS, the error causes
a system hang.
sched_exit() has expected that a single KERNEL_UNLOCK() would release
the lock completely. That assumption is wrong when an exit happens
through the signal tracing logic:
sched_exit
exit1
single_thread_check
single_thread_set
issignal <-- KERNEL_LOCK()
userret <-- KERNEL_LOCK()
syscall
The error is a regression of r1.216 of kern_sig.c.
Panic reported and fix tested by Laurence Tratt
OK mpi@