Hi,
I’ve continued investigating the exception, and found that it was emanating from a NULL pointer which wasn’t supposed to be null.
This pointer is a new queue being created with the following function call:
hr = m_FxDevice->CreateIoQueue(pQueueCallbackInterface,
FALSE,
WdfIoQueueDispatchManual,
false,
false,
&ReadQueueItemToAdd->ReadQueue);
From a certain point and on the error code returned is 723. According to WinError.h this is an ERROR_ARBITRATION_UNHANDLED (The arbiter has deferred arbitration of these resources to its parent)
I’ve noticed it happens when the system wakes from sleep (but this might be because this is the specific scenario I’ve been testing).
Later on I get a lot of the following message:
Power Irp Watchdog: warning for PDO=858C7C90 Current=8EA2E020 IRP=8444F680 (2) status c00000bb
…
…
Power Irp Watchdog: warning for PDO=858C7C90 Current=8EA2E020 IRP=8444F680 (2) status c00000bb
And finally the whole thing results in a bug check and a BLOD.
Please tell me the reason this happens and how to solve\override\avoid it.
Thanks,
Gadi
*** Fatal System Error: 0x0000009f
(0x00000003,0x858C7C90,0x8EA2E020,0x8444F680)
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 Vista 6000 x86 compatible target, ptr64 FALSE
…
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 9F, {3, 858c7c90, 8ea2e020, 8444f680}
Probably caused by : WUDFRd.sys
Followup: MachineOwner
nt!RtlpBreakWithStatusInstruction:
81c81770 cc int 3
kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_POWER_STATE_FAILURE (9f)
A driver is causing an inconsistent power state.
Arguments:
Arg1: 00000003, A device object has been blocking an Irp for too long a time
Arg2: 858c7c90, Physical Device Object of the stack
Arg3: 8ea2e020, Functional Device Object of the stack
Arg4: 8444f680, The blocked IRP
Debugging Details:
DRVPOWERSTATE_SUBCODE: 3
DEVICE_OBJECT: 8ea2e020
DRIVER_OBJECT: 8a3dcbc8
IMAGE_NAME: WUDFRd.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4549b25b
MODULE_NAME: WUDFRd
FAULTING_MODULE: 90c6b000 WUDFRd
DEFAULT_BUCKET_ID: VISTA_RC
BUGCHECK_STR: 0x9F
PROCESS_NAME: Idle
CURRENT_IRQL: 2
LAST_CONTROL_TRANSFER: from 81cd86e3 to 81c81770
STACK_TEXT:
81cf1734 81cd86e3 00000003 81cfacc4 00000000 nt!RtlpBreakWithStatusInstruction
81cf1784 81cd9150 00000003 8444f680 96c71058 nt!KiBugCheckDebugBreak+0x1c
81cf1b30 81cd856d 0000009f 00000003 858c7c90 nt!KeBugCheck2+0x5f4
81cf1b54 81c4af78 0000009f 00000003 858c7c90 nt!KeBugCheckEx+0x1e
81cf1bb0 81c5044b 81cf1cbc 81cf1c88 00000001 nt!PopCheckIrpWatchdog+0x165
81cf1bf0 81ca98d1 81d09fa0 00000000 2e7ef880 nt!PopCheckForIdleness+0x33f
81cf1ce8 81ca9221 00000000 00000000 00017713 nt!KiTimerExpiration+0x498
81cf1d50 81c9128e 00000000 0000000e 00000000 nt!KiRetireDpcList+0xba
81cf1d54 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x46
STACK_COMMAND: kb
FOLLOWUP_NAME: MachineOwner
FAILURE_BUCKET_ID: 0x9F_IMAGE_WUDFRd.sys_DATE_2006_11_02
BUCKET_ID: 0x9F_IMAGE_WUDFRd.sys_DATE_2006_11_02
Followup: MachineOwner