From d2608984c9460c7056c819d9394da2dde42422fc Mon Sep 17 00:00:00 2001 From: Stefan Ginsberg Date: Tue, 15 Sep 2015 17:55:14 +0000 Subject: [PATCH] Completely disable the debug register assertions in the trap exit code for KDBG as it sets them improperly. These checks should not have been added for KDBG to begin with and would have made any usage of address breakpoints inside KDBG end up in a trap exit breakpoint. Whoever knows KDBG better than I do please investigate. However, enable the DR7 debug check for KD as it handles the debug registers just fine. The likelihood of loading a driver that modifies a debug register (which would be the only other thing triggering this) is pretty slim. svn path=/trunk/; revision=69244 --- reactos/ntoskrnl/include/internal/i386/trap_x.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/include/internal/i386/trap_x.h b/reactos/ntoskrnl/include/internal/i386/trap_x.h index 08acc3f647c..862403f9e64 100644 --- a/reactos/ntoskrnl/include/internal/i386/trap_x.h +++ b/reactos/ntoskrnl/include/internal/i386/trap_x.h @@ -153,6 +153,8 @@ KiExitTrapDebugChecks(IN PKTRAP_FRAME TrapFrame, __debugbreak(); } + /* FIXME: KDBG messes around with these improperly */ +#if !defined(KDBG) /* Check DR values */ if (KiUserTrap(TrapFrame)) { @@ -175,8 +177,9 @@ KiExitTrapDebugChecks(IN PKTRAP_FRAME TrapFrame, CheckDr(1, Prcb->ProcessorState.SpecialRegisters.KernelDr1); CheckDr(2, Prcb->ProcessorState.SpecialRegisters.KernelDr2); CheckDr(3, Prcb->ProcessorState.SpecialRegisters.KernelDr3); - //CheckDr(7, Prcb->ProcessorState.SpecialRegisters.KernelDr7); + CheckDr(7, Prcb->ProcessorState.SpecialRegisters.KernelDr7); } +#endif StopChecking = FALSE; } -- 2.17.1