/* GLOBALS *******************************************************************/
-LIST_ENTRY BugcheckCallbackListHead;
-LIST_ENTRY BugcheckReasonCallbackListHead;
+LIST_ENTRY KeBugcheckCallbackListHead;
+LIST_ENTRY KeBugcheckReasonCallbackListHead;
KSPIN_LOCK BugCheckCallbackLock;
ULONG KeBugCheckActive, KeBugCheckOwner;
LONG KeBugCheckOwnerRecursionCount;
}
/* Print it out */
- if (!KiRosPrintAddress((PVOID)Addr)) DbgPrint("<%X>", Addr);
+ if (!KeRosPrintAddress((PVOID)Addr)) DbgPrint("<%X>", Addr);
/* Go to the next frame */
DbgPrint("\n");
ULONG_PTR Checksum;
/* First make sure that the list is Initialized... it might not be */
- ListHead = &BugcheckCallbackListHead;
+ ListHead = &KeBugcheckCallbackListHead;
if ((ListHead->Flink) && (ListHead->Blink))
{
/* Loop the list */
}
/* Check if we need to save the context for KD */
- if (!KdPitchDebugger) KdDebuggerDataBlock.SavedContext = (ULONG)&Context;
/* Check if a debugger is connected */
if ((BugCheckCode != MANUALLY_INITIATED_CRASH) && (KdDebuggerEnabled))
/* Break in the debugger */
KiBugCheckDebugBreak(DBG_STATUS_BUGCHECK_FIRST);
}
+ else
+ {
+ /*
+ * ROS HACK.
+ * Ok, so debugging is enabled, but KDBG isn't there.
+ * We'll manually dump the stack for the user.
+ */
+ KeRosDumpStackFrames(NULL, 0);
+ }
}
/* Raise IRQL to HIGH_LEVEL */
AnsiName);
/* Check if the debugger is disabled but we can enable it */
- if (!(KdDebuggerEnabled) && !(KdPitchDebugger))
+ //if (!(KdDebuggerEnabled) && !(KdPitchDebugger))
{
/* Enable it */
- KdEnableDebuggerWithLock(FALSE);
+ //KdEnableDebuggerWithLock(FALSE);
}
- else
+ //else
{
/* Otherwise, print the last line */
InbvDisplayString("\r\n");
CallbackRecord->Component = Component;
CallbackRecord->CallbackRoutine = CallbackRoutine;
CallbackRecord->State = BufferInserted;
- InsertTailList(&BugcheckCallbackListHead, &CallbackRecord->Entry);
+ InsertTailList(&KeBugcheckCallbackListHead, &CallbackRecord->Entry);
Status = TRUE;
}
CallbackRecord->CallbackRoutine = CallbackRoutine;
CallbackRecord->State = BufferInserted;
CallbackRecord->Reason = Reason;
- InsertTailList(&BugcheckReasonCallbackListHead,
+ InsertTailList(&KeBugcheckReasonCallbackListHead,
&CallbackRecord->Entry);
Status = TRUE;
}