Hi all,
I’m trying to write postnotifiactionfunction, which is called when
asyncwrite writes some data.
I’m getting error-
*** Fatal System Error: 0x000000d1
(0x00000000,0x00000002,0x00000000,0x00000000)
Break instruction exception - code 80000003 (first chance)
Could somebody suggest some method to avoid this error. I’ve attached
log;I’m using WinBbg.
Crash occurs in a do nothing callbackfunction also; and strangely 1 time
out of 20 it works without crash.
I’ve noted that when I put a endless loop at the end of callbackfunction
it runs endlessly without crashing;
/************This crashes*******************************/
VOID
t1394Diag_DriverNotificationRoutine(
IN PNOTIFICATION_INFO NotificationInfo
){
ENTER(“DriverNotificationRoutine”);
TRACE(TL_TRACE, (“This function crashes with above error \r\n”));
}
/************************************************************/
/*******This doesn’t crash********************************/
VOID
t1394Diag_DriverNotificationRoutine(
IN PNOTIFICATION_INFO NotificationInfo
){
ENTER(“DriverNotificationRoutine”);
while(1)
{
TRACE(TL_TRACE, (“Running endlessly without
crash \r\n”));
}
}
/***************************************************************/
Thanks
Sanjeev
------------------------LOG------------
number Diagnostic Devices = 0x1
number Virtual Devices = 0x0
DeviceName[0x0] =
\?\1394#031887&040892#8118bb90#{c459df55-db08-11d1-b009-00a0c9081ff6}
1394DIAG: Irp = 0x81104620
1394API: Exit NotifyClients
1394DIAG: t1394Diag_IoControl: IRP_MJ_DEVICE_CONTROL
1394DIAG: IOCTL_BUS_RESET_NOTIFY
1394DIAG: Adding BusResetIrp->Irp = 0x81104620
1394DIAG: t1394Diag_IoControl Exit = 103
1394API: BusThreadProc: DeviceIoControl: dwRet = 997
Enter w1394_AllocateAddressRange
1394API: Enter AllocateAddressRange
1394API: fulAllocateFlags = 0x1
1394API: fulFlags = 0x0
1394API: nLength = 0x200
1394API: MaxSegmentSize = 0x0
1394API: fulAccessType = 0xf
1394API: fulNotificationOptions = 0x2
1394API: Required1394Offset.Off_High = 0x1
1394API: Required1394Offset.Off_low = 0x0
1394DIAG: t1394Diag_Create Enter
1394DIAG: t1394Diag_Create Exit = 0
1394DIAG: t1394Diag_IoControl Enter
1394DIAG: Irp = 0xffb6f950
1394DIAG: t1394Diag_IoControl: IRP_MJ_DEVICE_CONTROL
1394DIAG: IOCTL_ALLOCATE_ADDRESS_RANGE
1394DIAG: t1394_AllocateAddressRange Enter
1394DIAG: fulAllocateFlags = 0x1
1394DIAG: fulFlags = 0x0
1394DIAG: nLength = 0x200
1394DIAG: MaxSegmentSize = 0x0
1394DIAG: fulAccessType = 0xf
1394DIAG: fulNotificationOptions = 0x2
1394DIAG: Required1394Offset->Off_High = 0x1
1394DIAG: Required1394Offset->Off_Low = 0x0
1394DIAG: Data = 0x811daccc
1394DIAG: pAsyncAddressData->Buffer = 0x811f78a0
1394DIAG: nPages = 0x1
1394DIAG: pMdl = 0xffb5c160
1394DIAG: t1394_SubmitIrpAsync Enter
1394DIAG: AddressesReturned = 0x1
1394DIAG: hAddressRange = 0x811e6ca8
1394DIAG: Off_High = 0x1
1394DIAG: Off_Low = 0x0
1394DIAG: t1394_AllocateAddressRange Exit = 0
1394DIAG: t1394Diag_IoControl Exit = 0
1394API: hAddressRange = 811E6CA8
1394API: Required1394Offset.Off_High = 0x1
1394API: Required1394Offset.Off_low = 0x0
1394DIAG: t1394Diag_Close Enter
1394DIAG: t1394Diag_Close Exit = 0
1394API: Exit AllocateAddressRange = 0
Exit w1394_AllocateAddressRange
*** Fatal System Error: 0x000000d1
(0x00000000,0x00000002,0x00000000,0x00000000)
Break instruction exception - code 80000003 (first chance)
A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
Loading Kernel Symbols
…
Loading unloaded module list
…
Loading User Symbols
*******************************************************************************
*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck D1, {0, 2, 0, 0}
Probably caused by : 1394BUS.SYS ( 1394BUS!Bus1394NotificationDpc+c1 )
Followup: MachineOwner
nt!RtlpBreakWithStatusInstruction:
805103fa cc int 3
kd> !analyze -v
*******************************************************************************
*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************
DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pagable (or completely invalid) address at
an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 00000000, address which referenced memory
Debugging Details:
READ_ADDRESS: 00000000
CURRENT_IRQL: 2
FAULTING_IP:
+0
00000000 ?? ???
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: 0xD1
LAST_CONTROL_TRANSFER: from 805258ca to 805103fa
STACK_TEXT:
80541a20 805258ca 00000003 80541d50 00000000
nt!RtlpBreakWithStatusInstruction
80541a6c 80526160 00000003 00000000 00000000 nt!KiBugCheckDebugBreak+0x19
80541e38 805266db 0000000a 00000000 00000002 nt!KeBugCheck2+0x46d
80541e58 804dce53 0000000a 00000000 00000002 nt!KeBugCheckEx+0x19
80541e58 00000000 0000000a 00000000 00000002 nt!KiTrap0E+0x2ad
80541ee4 fc4ed91f 80541efc 8054a6a0 ffdff000 0x0
80541f2c 804f1e02 81274600 81274008 00000000
1394BUS!Bus1394NotificationDpc+0xc1
80541f40 804eed89 8054a6a0 ffdffc50 00000000 nt!KiRetireDpcList+0x46
ffdff980 ffdff980 fc8d7000 00002b6a 00000000 nt!PopIdle0+0x47
FAILED_INSTRUCTION_ADDRESS:
+0
00000000 ?? ???
FOLLOWUP_IP:
1394BUS!Bus1394NotificationDpc+c1
fc4ed91f 8bcf mov ecx,edi
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: 1394BUS!Bus1394NotificationDpc+c1
MODULE_NAME: 1394BUS
IMAGE_NAME: 1394BUS.SYS
DEBUG_FLR_IMAGE_TIMESTAMP: 3d6ddc4f
STACK_COMMAND: kb
BUCKET_ID: 0xD1_CODE_AV_BAD_IP_1394BUS!Bus1394NotificationDpc+c1
Followup: MachineOwner
-----------------------END OF LOG-----