Index: kdb_cli.c =================================================================== --- ntoskrnl/kdbg/kdb_cli.c (revision 71138) +++ ntoskrnl/kdbg/kdb_cli.c (working copy) @@ -1124,7 +1124,7 @@ /* Try printing the function at EIP */ if (!KdbSymPrintAddress((PVOID)KdbCurrentTrapFrame->Tf.Eip, &KdbCurrentTrapFrame->Tf)) - KdbpPrint("<%08x>\n", KdbCurrentTrapFrame->Tf.Eip); + KdbpPrint("%08x <%08x>\n", KdbCurrentTrapFrame->Tf.Ebp, KdbCurrentTrapFrame->Tf.Eip); else KdbpPrint("\n"); } @@ -1150,7 +1150,7 @@ /* Print the location of the call instruction */ if (!KdbSymPrintAddress((PVOID)(Address - 5), &TrapFrame)) - KdbpPrint("<%08x>\n", Address); + KdbpPrint("%08x <%08x>\n", Frame, Address); else KdbpPrint("\n"); @@ -1167,7 +1167,7 @@ Frame = TrapFrame.Ebp; if (!KdbSymPrintAddress((PVOID)Address, &TrapFrame)) - KdbpPrint("<%08x>\n", Address); + KdbpPrint("%08x <%08x>\n", Frame, Address); else KdbpPrint("\n"); } Index: kdb_symbols.c =================================================================== --- ntoskrnl/kdbg/kdb_symbols.c (revision 71138) +++ ntoskrnl/kdbg/kdb_symbols.c (working copy) @@ -156,6 +156,7 @@ CHAR FileName[256]; CHAR FunctionName[256]; CHAR ModuleNameAnsi[64]; + ULONG_PTR Ebp = 0; if (!KdbpSymbolsInitialized || !KdbpSymFindModule(Address, NULL, -1, &LdrEntry)) return FALSE; @@ -170,14 +171,15 @@ &LineNumber, FileName, FunctionName); + if (Context) Ebp = ((PKTRAP_FRAME)Context)->Ebp; if (NT_SUCCESS(Status)) { - DbgPrint("<%s:%x (%s:%d (%s))>", - ModuleNameAnsi, RelativeAddress, FileName, LineNumber, FunctionName); + DbgPrint("%08x <%s:%x (%s:%d (%s))>", + Ebp, ModuleNameAnsi, RelativeAddress, FileName, LineNumber, FunctionName); } else { - DbgPrint("<%s:%x>", ModuleNameAnsi, RelativeAddress); + DbgPrint("%08x <%s:%x>", Ebp, ModuleNameAnsi, RelativeAddress); } return TRUE; Index: scsiport.c =================================================================== --- drivers/storage/scsiport/scsiport.c (revision 71160) +++ drivers/storage/scsiport/scsiport.c (working copy) @@ -1559,7 +1559,7 @@ } Status = IoConnectInterrupt(&DeviceExtension->Interrupt[i], - (PKSERVICE_ROUTINE)ScsiPortIsr, + ScsiPortIsr, DeviceExtension, &DeviceExtension->IrqLock, MappedIrq[i], @@ -4600,7 +4600,15 @@ PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; DPRINT("ScsiPortIsr() called!\n"); - + { + ULONG_PTR stack; + stack = IoGetRemainingStackSize(); + if (stack < PAGE_SIZE) + { + DPRINT1("ScsiPortIsr: called with only 0x%Ix bytes of stack remaining\n", stack); + DPRINT1("ScsiPortIsr: Initial stack was %p, we are now at %p\n", IoGetInitialStack(), &stack); + } + } DeviceExtension = (PSCSI_PORT_DEVICE_EXTENSION)ServiceContext; /* If interrupts are disabled - we don't expect any */