Hi all,
We develop a driver for a modem, and during DevPathExer test we get a strange BSOD:
DRIVER_VERIFIER_IOMANAGER_VIOLATION (c9)
The IO manager has caught a misbehaving driver.
Arguments:
Arg1: 00000215, A non-successful non-STATUS_NOT_SUPPORTED IRP status for
IRP_MJ_PNP is being
passed down stack. Failed PNP IRPs must be completed.
Arg2: 88e5c21e, The address in the driver’s code where the error was detected.
Arg3: b1a4aed8, IRP address.
Arg4: 00000000
From my logs I can’t see that we get calls in the driver for d0Entry of d0Exit callbacks, so it seems that we couldn’t handle the IRP_MJ_PNP incorrectly.
From another reproduction we got an exception when the message “A non-successful non-STATUS_NOT_SUPPORTED IRP status for IRP_MJ_PNP is being passed down stack. Failed PNP IRPs must be completed.” was printed, and when I stopped the debugger and dumped the stack, I could see that the IRP is forwarded by modem.sys, but probably doesn’t reach our driver:
STACK_TEXT:
807ec830 8301dda1 00000215 977ea429 8c33b338 nt!ViErrorFinishReport+0x43
807ec878 830249d1 00000215 8c33b414 8c33b338 nt!VfErrorReport1+0x4d
807ec89c 8301d94e 8c33b438 8c33b414 00000001 nt!VfPnpVerifyIrpStackDownward+0xb1
807ec8b8 8301b716 8c387c08 94167ea0 8c33b438 nt!VfMajorVerifyIrpStackDownward+0x3e
807ec918 8301af05 8c2c3008 8c33b338 8c2c3008 nt!IovpCallDriver1+0x58e
807ec92c 830155db 94167ea0 8c2c3008 94167ea0 nt!VfBeforeCallDriver+0xfd
807ec950 8284afa7 977ea429 8c33b430 977ea2f4 nt!IovCallDriver+0x23b
807ec96c 977ea429 8c33b718 8c33b338 8c33b5e8 nt!IofCallDriver+0x1d
807ec980 977ef878 94167ea0 8c33b338 8c33b530 modem!ForwardIrp+0xdb
807ec9a8 8301564c 8c33b530 8c33b338 8c33b530 modem!ModemPnP+0x1aa
807ec9cc 8284afa7 00000000 8c33b45c 807eca74 nt!IovCallDriver+0x2ac
807ec9e8 82d58b0f 8c377be0 8e266dd8 8c377be0 nt!IofCallDriver+0x1d
807eca18 82d58e7e 8c377be0 807eca50 c00000bb nt!IopSynchronousCall+0x111
807eca78 82d43221 8c377be0 00000017 8e266dd8 nt!IopRemoveDevice+0x130
807ecaa8 82d4306c 00000000 81e619d8 00000000 nt!PnpSurpriseRemoveLockedDeviceNode+0x14f
807ecabc 82d43485 00000003 81e619d8 00000000 nt!PnpDeleteLockedDeviceNode+0x62
807ecaf4 82d4e5ff 8c377be0 81e619d8 00000003 nt!PnpDeleteLockedDeviceNodes+0x85
807ecbb4 82d4ee56 807ecbe8 93f5ddd0 00000000 nt!PnpProcessQueryRemoveAndEject+0x673
807ecbcc 82d4d446 00000000 8ddfa9e8 84de34c0 nt!PnpProcessTargetDeviceEvent+0x66
807ecd04 82994591 8ddfa9e8 84dd9768 84de34c0 nt!PnpDeviceEventWorker+0x3e0
807ecd54 82f0710c 00000001 cb945f3f 00000000 nt!ExpWorkerThread+0x129
807ecd90 829b1cc5 82994468 00000001 00000000 nt!PspSystemThreadStartup+0x178
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19
I can’t say where the exception occurred exactly, because it was not in our driver, and we disabled the debug prints in order to reproduce the issue.
What could the problem be? What should I look for here? What could be a common scenario when this bugcheck occurs?
Thanks for help,
S.