summaryrefslogtreecommitdiffstats
path: root/etc/rc
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-09-03 08:18:07 +0000
committerkib <kib@FreeBSD.org>2014-09-03 08:18:07 +0000
commit401c0a1c8ff088805d19a448e538e6d6608fedf1 (patch)
tree9484e9ecd7f4377d18ac5c5b4bbd8350c398ad50 /etc/rc
parente58a48ab6d3934b371fcb4e8f9a3161b64f2b8dc (diff)
downloadFreeBSD-src-401c0a1c8ff088805d19a448e538e6d6608fedf1.zip
FreeBSD-src-401c0a1c8ff088805d19a448e538e6d6608fedf1.tar.gz
Right now, thread_single(SINGLE_EXIT) returns after the p_numthreads
reaches 1. The p_numthreads counter is decremented in thread_exit() by a call to thread_unlink(). This means that the exiting threads may still execute on other CPUs when thread_single(SINGLE_EXIT) returns. As result, vmspace could be destroyed while paging structures are still used on other CPUs by exiting threads. Delay the return from thread_single(SINGLE_EXIT) until all threads are really destroyed by thread_stash() after the last switch out. The p_exitthreads counter already provides the required mechanism, move the wait from the thread_wait() (which is called from wait(2) code) into thread_single(). Reported by: many (as "panic: pmap active <addr>") Reviewed by: alc, jhb Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week
Diffstat (limited to 'etc/rc')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud