Do not assume that a debugger is present only because we are debugging to a file or to the screen. This corrects bugchecks not to launch an INT3 where no debugger is actually there to catch it. Modified: trunk/reactos/ntoskrnl/kd/kdebug.c _____
Modified: trunk/reactos/ntoskrnl/kd/kdebug.c --- trunk/reactos/ntoskrnl/kd/kdebug.c 2005-03-14 02:08:17 UTC (rev 14045) +++ trunk/reactos/ntoskrnl/kd/kdebug.c 2005-03-14 04:51:51 UTC (rev 14046) @@ -118,7 +118,7 @@
if (!_strnicmp(p2, "SCREEN", 6) && BootPhase > 0) { p2 += 6; - KdDebuggerEnabled = TRUE; + KdDebuggerEnabled = FALSE; KdDebugState |= KD_DEBUG_SCREEN; } else if (!_strnicmp(p2, "BOCHS", 5) && BootPhase == 0) @@ -150,7 +150,7 @@ Value = (ULONG)atol(p2); if (Value > 0 && Value < 5) { - KdDebuggerEnabled = TRUE; + KdDebuggerEnabled = FALSE; KdDebugState |= KD_DEBUG_SERIAL; LogPortInfo.ComPort = Value; } @@ -158,7 +158,7 @@ else if (!_strnicmp(p2, "FILE", 4) && BootPhase > 0) { p2 += 4; - KdDebuggerEnabled = TRUE; + KdDebuggerEnabled = FALSE; KdDebugState |= KD_DEBUG_FILELOG; } else if (!_strnicmp(p2, "MDA", 3) && BootPhase > 0) @@ -247,8 +247,6 @@ }
/* Perform any initialization nescessary */ - if (KdDebuggerEnabled == TRUE) - { if (KdDebugState & KD_DEBUG_GDB && BootPhase == 0) KdPortInitializeEx(&GdbPortInfo, 0, 0);
@@ -260,7 +258,6 @@
if (KdDebugState & KD_DEBUG_MDA && BootPhase > 0) KdInitializeMda(); - } }
@@ -292,8 +289,6 @@ KdInit3(VOID) { /* Print some information */ - if (KdDebuggerEnabled == TRUE) - { if (KdDebugState & KD_DEBUG_GDB) PrintString("\n GDB debugging enabled. COM%ld %ld Baud\n\n", GdbPortInfo.ComPort, GdbPortInfo.BaudRate); @@ -315,7 +310,6 @@ PrintString("\n File log debugging enabled\n\n"); if (KdDebugState & KD_DEBUG_MDA) PrintString("\n MDA debugging enabled\n\n"); - } }
@@ -449,7 +443,7 @@ /* B - Bug check the system. */ else if (Code == 1) { - KEBUGCHECK(0xDEADDEAD); + KEBUGCHECK(MANUALLY_INITIATED_CRASH); } /* * C - Dump statistics about the distribution of tagged blocks in