From: Sushma on
Hi,

I observed a strange behavior with Intelx64 PCs with my virtual COM
driver. When I pass an irp to lower driver (using IoCallDriver()) i
get an Assertion Failure - code c0000420 exception and when i
forcefully continue it i get a bugcheck. I get this exception when i
pass the IRP with one of the vendor specific commands. Also, this
exception is not happening frequently. It happens for every 3 out of 5
times. I have used an application to test the sequence.

By the way this failure is not happening in either Intel x86, AMD x64
or AMD x86 bit machines. In all the PCs i have installed Vista 32-bit
OS.

I did not see anything pointing in my driver, but i strongly believe
that some thing is going wrong in my driver. I have pasted the
bugcheck code and wdflog below. Can someone help me find the bug where
im going wrong?

Here is the bugcheck code:


*** Fatal System Error: 0x0000008e
(0xC0000420,0x81828671,0x9EF97A3C,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 Vista 6000 x86 compatible target, ptr64 FALSE
Loading Kernel Symbols
................................................................................................................................
Loading User Symbols
.........................................................................................
Loading unloaded module list
.........Unable to enumerate user-mode unloaded modules, Win32 error
0n30
*******************************************************************************
*
*
* Bugcheck
Analysis *
*
*
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 8E, {c0000420, 81828671, 9ef97a3c, 0}
Probably caused by : kdcom.dll ( kdcom!KdCompPollByte+14 )

Followup: MachineOwner
---------

nt!RtlpBreakWithStatusInstruction:
818818d0 cc int 3
0: kd> !analyze -v
*******************************************************************************
*
*
* Bugcheck
Analysis *
*
*
*******************************************************************************

KERNEL_MODE_EXCEPTION_NOT_HANDLED (8e)
This is a very common bugcheck. Usually the exception address
pinpoints
the driver/function that caused the problem. Always note this address
as well as the link date of the driver/image that contains this
address.
Some common problems are exception code 0x80000003. This means a hard
coded breakpoint or assertion was hit, but this system was booted
/NODEBUG. This is not supposed to happen as developers should never
have
hardcoded breakpoints in retail code, but ...
If this happens, make sure a debugger gets connected, and the
system is booted /DEBUG. This will let us see why this breakpoint is
happening.
Arguments:
Arg1: c0000420, The exception code that was not handled
Arg2: 81828671, The address that the exception occurred at
Arg3: 9ef97a3c, Trap Frame
Arg4: 00000000

Debugging Details:
------------------
EXCEPTION_CODE: (NTSTATUS) 0xc0000420 - <Unable to get error code
text>

FAULTING_IP:
nt!KeUpdateRunTime+248
81828671 cd2c int 2Ch

TRAP_FRAME: 9ef97a3c -- (.trap 0xffffffff9ef97a3c)
ErrCode = 00000000
eax=763b38b9 ebx=00000000 ecx=818f622c edx=0000009b esi=818f4820
edi=8bd343f0
eip=81828671 esp=9ef97ab0 ebp=9ef97ac8 iopl=0 nv up ei pl nz
na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00000202
nt!KeUpdateRunTime+0x248:
81828671 cd2c int 2Ch
Resetting default scope

DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT

BUGCHECK_STR: 0x8E

PROCESS_NAME: svchost.exe

CURRENT_IRQL: 1c

LAST_CONTROL_TRANSFER: from 818d87f7 to 818818d0

STACK_TEXT:
9ef971dc 818d87f7 00000003 9ef9c96c 00000000 nt!
RtlpBreakWithStatusInstruction
9ef9722c 818d9264 00000003 9ef97a3c 00000000 nt!KiBugCheckDebugBreak
+0x1c
9ef975d8 818d8681 0000008e c0000420 81828671 nt!KeBugCheck2+0x5f4
9ef975fc 8182335e 0000008e c0000420 81828671 nt!KeBugCheckEx+0x1e
9ef979cc 8188d66a 9ef979e8 00000000 9ef97a3c nt!KiDispatchException
+0x1a9
9ef97a34 8188d606 9ef97ac8 81828673 badb0d00 nt!CommonDispatchException
+0x4a
9ef97a48 804c79ac 804c8020 9ef97a8b 00000000 nt!KiExceptionExit+0x16e
9ef97ac8 818906ad 83347e02 000000d1 9ef97b58 kdcom!KdCompPollByte+0x14
9ef97ac8 81ba4dc0 83347e02 000000d1 9ef97b58 nt!KeUpdateSystemTime
+0xed
9ef97b48 806d8533 83347e10 83347eec 9ef97b6c hal!
KeAcquireSpinLockRaiseToSynch+0x20
9ef97b58 806e0f8c 9ef97b68 8070cf30 83347eec Wdf01000!
FxCallbackSpinLock::Lock+0x7f
9ef97b6c 806e3d13 7ccb81e8 7cf8db90 00000001 Wdf01000!
FxIoQueueIoRead::Invoke+0x1e
9ef97b94 806e6598 7cf8db90 83072468 83347e10 Wdf01000!
FxIoQueue::DispatchRequestToDriver+0x1dc
9ef97bb0 806e7d2c 83347e00 8070d188 83347e10 Wdf01000!
FxIoQueue::DispatchEvents+0x485
9ef97bcc 806e8e67 00000000 83112f40 82f27b58 Wdf01000!
FxIoQueue::QueueRequest+0x237
9ef97bf0 806d7d9a 8bd3a920 9ef97c14 81827f83 Wdf01000!FxPkgIo::Dispatch
+0x377
9ef97bfc 81827f83 82f27b58 8bd3a920 8bd3a920 Wdf01000!
FxDevice::Dispatch+0x7f
9ef97c14 8a42d581 831af0e8 83112e88 831af030 nt!IofCallDriver+0x63
9ef97c28 81827f83 83112e88 00d3a920 82f23030 serenum!
Serenum_DispatchPassThrough+0x65
9ef97c40 86338027 9ef97c60 81827f83 82f23030 nt!IofCallDriver+0x63
9ef97c48 81827f83 82f23030 8bd3a920 8bd3a920 RootMdm!
RootModemPassThrough+0x21
9ef97c60 892bcb1a 8bd410e8 831af030 00000000 nt!IofCallDriver+0x63
9ef97c74 81827f83 8bd3aab0 8bd3a920 8bd3a920 modem!UniRead+0x4a
9ef97c8c 81988f37 8bd3a920 8bd3aab0 8bd410e8 nt!IofCallDriver+0x63
9ef97cac 81993669 831af030 8bd410e8 00000001 nt!
IopSynchronousServiceTail+0x1e0
9ef97d38 8188caaa 831af030 8bd3a920 779ed684 nt!NtReadFile+0x646
9ef97d38 77c30f34 831af030 8bd3a920 779ed684 nt!KiFastCallEntry+0x12a
02e3f1cc 77c30080 779ed71d 00000194 00000000 ntdll!KiFastSystemCallRet
02e3f1d0 779ed71d 00000194 00000000 779ed684 ntdll!ZwReadFile+0xc
02e3f210 6ef09ddf 00000194 03176de4 00000001 kernel32!ReadFileEx+0x72
02e3f698 6ef227ba 00000000 00000000 00780830 unimdmat!
ReadCompletionHandler+0x7ca
02e3f6ac 77a06c6d 00780830 02e3a40e 02e3f718 uniplat!
AsyncProcessingHandler+0x15
02e3f704 77c30dfd 6ef227a5 00780830 00000000 kernel32!BaseDispatchAPC
+0x50
02e3fa5c 6ef22934 000006bc ffffffff 00000001 ntdll!KiUserApcDispatcher
+0x25
02e3fa70 77a23833 6ef24020 02e3fabc 77c0a9bd uniplat!UmWorkerThread
+0x15
02e3fa7c 77c0a9bd 6ef24020 02e37e4f 00000000 kernel32!
BaseThreadInitThunk+0xe
02e3fabc 00000000 6ef2291f 6ef24020 00000000 ntdll!_RtlUserThreadStart
+0x23


STACK_COMMAND: kb

FOLLOWUP_IP:
kdcom!KdCompPollByte+14
804c79ac 0fb7c0 movzx eax,ax

SYMBOL_STACK_INDEX: 7

SYMBOL_NAME: kdcom!KdCompPollByte+14

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: kdcom

IMAGE_NAME: kdcom.dll

DEBUG_FLR_IMAGE_TIMESTAMP: 4549bd7c

FAILURE_BUCKET_ID: 0x8E_kdcom!KdCompPollByte+14

BUCKET_ID: 0x8E_kdcom!KdCompPollByte+14

Followup: MachineOwner
---------

I also captured the WDFLOG as mentioned in
http://blogs.msdn.com/doronh/archive/2006/07/31/684531.aspx.

Here is the wdflog. But i could not find any useful information in it.

0: kd> !load C:\Program Files\Debugging Tools for Windows (x86)\winext
\wdfkd.dll

0: kd> !D:\WINDDK\6000\bin\x86\wdfkd.wdftmffile D:\WINDDK\6000\tools
\tracing\i386\wdf01005.tmf
Set TMF file name is : 'D:\WINDDK\6000\tools\tracing
\i386\wdf01005.tmf'
0: kd> !D:\WINDDK\6000\bin\x86\wdfkd.wdflogdump usbcom
Trace searchpath is:
Trace format prefix is: %7!u!: %!FUNC! -
TMF file used for formatting IFR log is: D:\WINDDK\6000\tools\tracing
\i386\wdf01005.tmf
Log at 83343000
Gather log: Please wait, this may take a moment (reading 4032 bytes).
% read so far ... 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
There are 106 log entries
--- start of log ---
274: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
275: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
276: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
277: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
278: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
279: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
280: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
281: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
282: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
283: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
284: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
285: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
286: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
287: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
288: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
289: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
290: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
cancelled
291: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD4AFE8
292: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
293: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
294: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
295: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
296: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
cancelled
297: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD4AFE8
298: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
299: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
300: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
301: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
302: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
303: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
304: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
305: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
306: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
307: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
308: FxFileObject::GetFileObjectFromWdm - The PFILE_OBJECT 0x8BD460D0
in this request (cleanup/close) is different from the one specified in
create request 0x833D3700.This is bad!
309: FxFileObject::GetFileObjectFromWdm - Since this is a serial port
device, framework is using a workaround to allow this
310: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD2DFE8 requests
cancelled
311: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD2DFE8
312: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
313: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
314: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
cancelled
315: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD4AFE8
316: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD2DFE8 requests
cancelled
317: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD2DFE8
318: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
319: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
320: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
cancelled
321: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD4AFE8
322: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
323: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleStartTimer from
FxIdleDecrementIo
324: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleTimerRunning from
FxIdleStartTimer
325: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleCancelTimer from
FxIdleTimerRunning
326: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleCheckIoCount from
FxIdleCancelTimer
327: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleCheckIoCount
328: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD2DFE8 requests
cancelled
329: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD2DFE8
330: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
331: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
332: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
cancelled
333: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD4AFE8
334: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
335: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
336: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
337: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
338: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
339: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
340: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
341: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
342: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
343: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
344: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
345: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
346: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
347: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
348: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
349: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
350: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
351: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
352: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
353: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
354: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
355: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
356: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
357: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
358: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
359: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
360: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
cancelled
361: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD4AFE8
362: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
363: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
364: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
cancelled
365: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CC681E8
366: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
367: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CC681E8 is already held, deferring to dpc or workitem
368: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
369: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
370: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
371: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
372: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
cancelled
373: FxIoQueue::QueuePurge - All driver cancellable requests
cancelled in WDFQUEUE 0x7CD4AFE8
374: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
375: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
0x7CD4AFE8 is already held, deferring to dpc or workitem
376: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
377: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
378: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
FxIdleBusy
379: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
devobj 0x82F27B58 entering power idle state FxIdleBusy from
FxIdleDecrementIo
---- end of log ----


Thanks and Regards,
Sushma
From: Doron Holan [MSFT] on
you are probably doing something wrong in your driver. send the callstack
and output of !analyze -v and perhaps someone can help you out. the cod
would help as well.

d

--
Please do not send e-mail directly to this alias. this alias is for
newsgroup purposes only.
This posting is provided "AS IS" with no warranties, and confers no rights.


"Sushma" <sushma.yella(a)gmail.com> wrote in message
news:5f580fff-8d60-4797-a07f-de1784fc28bf(a)y21g2000hsf.googlegroups.com...
> Hi,
>
> I observed a strange behavior with Intelx64 PCs with my virtual COM
> driver. When I pass an irp to lower driver (using IoCallDriver()) i
> get an Assertion Failure - code c0000420 exception and when i
> forcefully continue it i get a bugcheck. I get this exception when i
> pass the IRP with one of the vendor specific commands. Also, this
> exception is not happening frequently. It happens for every 3 out of 5
> times. I have used an application to test the sequence.
>
> By the way this failure is not happening in either Intel x86, AMD x64
> or AMD x86 bit machines. In all the PCs i have installed Vista 32-bit
> OS.
>
> I did not see anything pointing in my driver, but i strongly believe
> that some thing is going wrong in my driver. I have pasted the
> bugcheck code and wdflog below. Can someone help me find the bug where
> im going wrong?
>
> Here is the bugcheck code:
>
>
> *** Fatal System Error: 0x0000008e
> (0xC0000420,0x81828671,0x9EF97A3C,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 Vista 6000 x86 compatible target, ptr64 FALSE
> Loading Kernel Symbols
> ...............................................................................................................................
> Loading User Symbols
> ........................................................................................
> Loading unloaded module list
> ........Unable to enumerate user-mode unloaded modules, Win32 error
> 0n30
> *******************************************************************************
> *
> *
> * Bugcheck
> Analysis *
> *
> *
> *******************************************************************************
>
> Use !analyze -v to get detailed debugging information.
>
> BugCheck 8E, {c0000420, 81828671, 9ef97a3c, 0}
> Probably caused by : kdcom.dll ( kdcom!KdCompPollByte+14 )
>
> Followup: MachineOwner
> ---------
>
> nt!RtlpBreakWithStatusInstruction:
> 818818d0 cc int 3
> 0: kd> !analyze -v
> *******************************************************************************
> *
> *
> * Bugcheck
> Analysis *
> *
> *
> *******************************************************************************
>
> KERNEL_MODE_EXCEPTION_NOT_HANDLED (8e)
> This is a very common bugcheck. Usually the exception address
> pinpoints
> the driver/function that caused the problem. Always note this address
> as well as the link date of the driver/image that contains this
> address.
> Some common problems are exception code 0x80000003. This means a hard
> coded breakpoint or assertion was hit, but this system was booted
> /NODEBUG. This is not supposed to happen as developers should never
> have
> hardcoded breakpoints in retail code, but ...
> If this happens, make sure a debugger gets connected, and the
> system is booted /DEBUG. This will let us see why this breakpoint is
> happening.
> Arguments:
> Arg1: c0000420, The exception code that was not handled
> Arg2: 81828671, The address that the exception occurred at
> Arg3: 9ef97a3c, Trap Frame
> Arg4: 00000000
>
> Debugging Details:
> ------------------
> EXCEPTION_CODE: (NTSTATUS) 0xc0000420 - <Unable to get error code
> text>
>
> FAULTING_IP:
> nt!KeUpdateRunTime+248
> 81828671 cd2c int 2Ch
>
> TRAP_FRAME: 9ef97a3c -- (.trap 0xffffffff9ef97a3c)
> ErrCode = 00000000
> eax=763b38b9 ebx=00000000 ecx=818f622c edx=0000009b esi=818f4820
> edi=8bd343f0
> eip=81828671 esp=9ef97ab0 ebp=9ef97ac8 iopl=0 nv up ei pl nz
> na po nc
> cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
> efl=00000202
> nt!KeUpdateRunTime+0x248:
> 81828671 cd2c int 2Ch
> Resetting default scope
>
> DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
>
> BUGCHECK_STR: 0x8E
>
> PROCESS_NAME: svchost.exe
>
> CURRENT_IRQL: 1c
>
> LAST_CONTROL_TRANSFER: from 818d87f7 to 818818d0
>
> STACK_TEXT:
> 9ef971dc 818d87f7 00000003 9ef9c96c 00000000 nt!
> RtlpBreakWithStatusInstruction
> 9ef9722c 818d9264 00000003 9ef97a3c 00000000 nt!KiBugCheckDebugBreak
> +0x1c
> 9ef975d8 818d8681 0000008e c0000420 81828671 nt!KeBugCheck2+0x5f4
> 9ef975fc 8182335e 0000008e c0000420 81828671 nt!KeBugCheckEx+0x1e
> 9ef979cc 8188d66a 9ef979e8 00000000 9ef97a3c nt!KiDispatchException
> +0x1a9
> 9ef97a34 8188d606 9ef97ac8 81828673 badb0d00 nt!CommonDispatchException
> +0x4a
> 9ef97a48 804c79ac 804c8020 9ef97a8b 00000000 nt!KiExceptionExit+0x16e
> 9ef97ac8 818906ad 83347e02 000000d1 9ef97b58 kdcom!KdCompPollByte+0x14
> 9ef97ac8 81ba4dc0 83347e02 000000d1 9ef97b58 nt!KeUpdateSystemTime
> +0xed
> 9ef97b48 806d8533 83347e10 83347eec 9ef97b6c hal!
> KeAcquireSpinLockRaiseToSynch+0x20
> 9ef97b58 806e0f8c 9ef97b68 8070cf30 83347eec Wdf01000!
> FxCallbackSpinLock::Lock+0x7f
> 9ef97b6c 806e3d13 7ccb81e8 7cf8db90 00000001 Wdf01000!
> FxIoQueueIoRead::Invoke+0x1e
> 9ef97b94 806e6598 7cf8db90 83072468 83347e10 Wdf01000!
> FxIoQueue::DispatchRequestToDriver+0x1dc
> 9ef97bb0 806e7d2c 83347e00 8070d188 83347e10 Wdf01000!
> FxIoQueue::DispatchEvents+0x485
> 9ef97bcc 806e8e67 00000000 83112f40 82f27b58 Wdf01000!
> FxIoQueue::QueueRequest+0x237
> 9ef97bf0 806d7d9a 8bd3a920 9ef97c14 81827f83 Wdf01000!FxPkgIo::Dispatch
> +0x377
> 9ef97bfc 81827f83 82f27b58 8bd3a920 8bd3a920 Wdf01000!
> FxDevice::Dispatch+0x7f
> 9ef97c14 8a42d581 831af0e8 83112e88 831af030 nt!IofCallDriver+0x63
> 9ef97c28 81827f83 83112e88 00d3a920 82f23030 serenum!
> Serenum_DispatchPassThrough+0x65
> 9ef97c40 86338027 9ef97c60 81827f83 82f23030 nt!IofCallDriver+0x63
> 9ef97c48 81827f83 82f23030 8bd3a920 8bd3a920 RootMdm!
> RootModemPassThrough+0x21
> 9ef97c60 892bcb1a 8bd410e8 831af030 00000000 nt!IofCallDriver+0x63
> 9ef97c74 81827f83 8bd3aab0 8bd3a920 8bd3a920 modem!UniRead+0x4a
> 9ef97c8c 81988f37 8bd3a920 8bd3aab0 8bd410e8 nt!IofCallDriver+0x63
> 9ef97cac 81993669 831af030 8bd410e8 00000001 nt!
> IopSynchronousServiceTail+0x1e0
> 9ef97d38 8188caaa 831af030 8bd3a920 779ed684 nt!NtReadFile+0x646
> 9ef97d38 77c30f34 831af030 8bd3a920 779ed684 nt!KiFastCallEntry+0x12a
> 02e3f1cc 77c30080 779ed71d 00000194 00000000 ntdll!KiFastSystemCallRet
> 02e3f1d0 779ed71d 00000194 00000000 779ed684 ntdll!ZwReadFile+0xc
> 02e3f210 6ef09ddf 00000194 03176de4 00000001 kernel32!ReadFileEx+0x72
> 02e3f698 6ef227ba 00000000 00000000 00780830 unimdmat!
> ReadCompletionHandler+0x7ca
> 02e3f6ac 77a06c6d 00780830 02e3a40e 02e3f718 uniplat!
> AsyncProcessingHandler+0x15
> 02e3f704 77c30dfd 6ef227a5 00780830 00000000 kernel32!BaseDispatchAPC
> +0x50
> 02e3fa5c 6ef22934 000006bc ffffffff 00000001 ntdll!KiUserApcDispatcher
> +0x25
> 02e3fa70 77a23833 6ef24020 02e3fabc 77c0a9bd uniplat!UmWorkerThread
> +0x15
> 02e3fa7c 77c0a9bd 6ef24020 02e37e4f 00000000 kernel32!
> BaseThreadInitThunk+0xe
> 02e3fabc 00000000 6ef2291f 6ef24020 00000000 ntdll!_RtlUserThreadStart
> +0x23
>
>
> STACK_COMMAND: kb
>
> FOLLOWUP_IP:
> kdcom!KdCompPollByte+14
> 804c79ac 0fb7c0 movzx eax,ax
>
> SYMBOL_STACK_INDEX: 7
>
> SYMBOL_NAME: kdcom!KdCompPollByte+14
>
> FOLLOWUP_NAME: MachineOwner
>
> MODULE_NAME: kdcom
>
> IMAGE_NAME: kdcom.dll
>
> DEBUG_FLR_IMAGE_TIMESTAMP: 4549bd7c
>
> FAILURE_BUCKET_ID: 0x8E_kdcom!KdCompPollByte+14
>
> BUCKET_ID: 0x8E_kdcom!KdCompPollByte+14
>
> Followup: MachineOwner
> ---------
>
> I also captured the WDFLOG as mentioned in
> http://blogs.msdn.com/doronh/archive/2006/07/31/684531.aspx.
>
> Here is the wdflog. But i could not find any useful information in it.
>
> 0: kd> !load C:\Program Files\Debugging Tools for Windows (x86)\winext
> \wdfkd.dll
>
> 0: kd> !D:\WINDDK\6000\bin\x86\wdfkd.wdftmffile D:\WINDDK\6000\tools
> \tracing\i386\wdf01005.tmf
> Set TMF file name is : 'D:\WINDDK\6000\tools\tracing
> \i386\wdf01005.tmf'
> 0: kd> !D:\WINDDK\6000\bin\x86\wdfkd.wdflogdump usbcom
> Trace searchpath is:
> Trace format prefix is: %7!u!: %!FUNC! -
> TMF file used for formatting IFR log is: D:\WINDDK\6000\tools\tracing
> \i386\wdf01005.tmf
> Log at 83343000
> Gather log: Please wait, this may take a moment (reading 4032 bytes).
> % read so far ... 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
> There are 106 log entries
> --- start of log ---
> 274: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 275: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 276: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 277: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 278: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 279: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 280: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 281: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 282: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 283: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 284: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 285: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 286: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 287: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 288: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 289: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 290: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
> cancelled
> 291: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD4AFE8
> 292: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 293: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 294: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 295: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 296: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
> cancelled
> 297: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD4AFE8
> 298: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 299: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 300: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 301: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 302: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 303: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 304: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 305: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 306: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 307: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 308: FxFileObject::GetFileObjectFromWdm - The PFILE_OBJECT 0x8BD460D0
> in this request (cleanup/close) is different from the one specified in
> create request 0x833D3700.This is bad!
> 309: FxFileObject::GetFileObjectFromWdm - Since this is a serial port
> device, framework is using a workaround to allow this
> 310: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD2DFE8 requests
> cancelled
> 311: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD2DFE8
> 312: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 313: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 314: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
> cancelled
> 315: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD4AFE8
> 316: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD2DFE8 requests
> cancelled
> 317: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD2DFE8
> 318: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 319: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 320: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
> cancelled
> 321: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD4AFE8
> 322: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 323: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleStartTimer from
> FxIdleDecrementIo
> 324: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleTimerRunning from
> FxIdleStartTimer
> 325: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleCancelTimer from
> FxIdleTimerRunning
> 326: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleCheckIoCount from
> FxIdleCancelTimer
> 327: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleCheckIoCount
> 328: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD2DFE8 requests
> cancelled
> 329: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD2DFE8
> 330: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 331: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 332: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
> cancelled
> 333: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD4AFE8
> 334: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 335: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 336: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 337: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 338: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 339: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 340: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 341: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 342: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 343: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 344: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 345: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 346: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 347: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 348: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 349: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 350: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 351: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 352: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 353: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 354: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 355: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 356: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 357: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 358: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 359: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 360: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
> cancelled
> 361: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD4AFE8
> 362: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 363: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 364: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CC681E8 requests
> cancelled
> 365: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CC681E8
> 366: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 367: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CC681E8 is already held, deferring to dpc or workitem
> 368: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 369: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 370: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 371: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 372: FxIoQueue::QueuePurge - All WDFQUEUE 0x7CD4AFE8 requests
> cancelled
> 373: FxIoQueue::QueuePurge - All driver cancellable requests
> cancelled in WDFQUEUE 0x7CD4AFE8
> 374: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 375: FxIoQueue::DispatchEvents - Presentation lock for WDFQUEUE
> 0x7CD4AFE8 is already held, deferring to dpc or workitem
> 376: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 377: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> 378: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleDecrementIo from
> FxIdleBusy
> 379: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7CE73D78 !
> devobj 0x82F27B58 entering power idle state FxIdleBusy from
> FxIdleDecrementIo
> ---- end of log ----
>
>
> Thanks and Regards,
> Sushma

From: Sushma on
I had already posted the callstack and output of !analyze -v in my OP.
I was not able to trace out much in it. Can you look into it?

Thanks and Regards,
Sushma
From: Sushma on
I have found a workaround to solve this problem. I made the
executionlevel for WDF_OBJECT_ATTRIBUTES while creating the frame work
device object to passive. It worked.

I am not sure if this was a reliable one. Can anyone let me know if
this would have any consequences on other parts of code.

Thanks and Regards,
Sushma
From: Eliyas Yakub [MSFT] on
If you are receiving I/Os at dispatch-level, it's going to be deferred to a
worker thread. So the consequences would be serialization of I/O even if
it's a parallel queue, because there is one worker thread per queue to drain
I/Os at passive-level, and the performance impact due to the fact that you
are deferring I/O processing to another thread. So you should really
understand the cause of the problem before blindly turning on passive-level
execution.

-Eliyas


"Sushma" <sushma.yella(a)gmail.com> wrote in message
news:f80bcd57-e5d9-4d82-8ba2-e0fcd8f7e057(a)l64g2000hse.googlegroups.com...
> I have found a workaround to solve this problem. I made the
> executionlevel for WDF_OBJECT_ATTRIBUTES while creating the frame work
> device object to passive. It worked.
>
> I am not sure if this was a reliable one. Can anyone let me know if
> this would have any consequences on other parts of code.
>
> Thanks and Regards,
> Sushma

 |  Next  |  Last
Pages: 1 2
Prev: IRP Tracker
Next: Sharing COM1 with WinDbg