|
Prev: IRP Tracker
Next: Sharing COM1 with WinDbg
From: Sushma on 5 May 2008 09:48 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 5 May 2008 13:27 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 6 May 2008 02:05 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 6 May 2008 10:00 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 6 May 2008 20:28
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 |