]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Disable interrupts while in kdb_trap() to handle cases where the caller
authorBruce Evans <bde@FreeBSD.org>
Mon, 24 Mar 2003 10:17:14 +0000 (10:17 +0000)
committerBruce Evans <bde@FreeBSD.org>
Mon, 24 Mar 2003 10:17:14 +0000 (10:17 +0000)
commitf261b1f35fdd5a279c377ca978f712d36584785d
tree4b95fc998041d683ead48a7c799ac1e529d0f525
parent5efb531d6c5662c674990ccb5c891b01909913e7
Disable interrupts while in kdb_trap() to handle cases where the caller
doesn't do it.  This fixes all known causes of "Context switches not
allowed in the debugger" in mi_switch().  The main cause was trap_fatal()
calling kdb_trap() with interrupts enabled.  Switching to ithreads for
interrupt handling then made fatal traps more fatal and harder to debug.
The problem was limited in -current because most interrupt handlers are
blocked by Giant, but it occurred almost deterministically for me because
my clock interrupt handlers are non-fast and not blocked by Giant.
sys/amd64/amd64/db_interface.c
sys/i386/i386/db_interface.c