DRIVER_VERIFIER_IOMANAGER_VIOLATION

Hope some ppl are still on the list in this holiday season :slight_smile:

I got a BSOD with the folowing analysis:

kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

DRIVER_VERIFIER_IOMANAGER_VIOLATION (c9)
The IO manager has caught a misbehaving driver.
Arguments:
Arg1: 0000000c, Invalid IOSB in IRP at APC IopCompleteRequest (appears to be on
stack that was unwound)
Arg2: f791a928, IOSB address
Arg3: 00000000, IRP address
Arg4: 00000000, 0

Debugging Details:

BUGCHECK_STR: 0xc9_c

DRIVER_VERIFIER_IO_VIOLATION_TYPE: c

IOSB_ADDRESS: 8001000000100

IRP_ADDRESS: 830e4e90

DEFAULT_BUCKET_ID: DRIVER_FAULT

PROCESS_NAME: System

DEVICE_OBJECT: 82e21020

DRIVER_OBJECT: 82e26eb8

DEBUG_FLR_IMAGE_TIMESTAMP: 458a70b4

FAULTING_MODULE: bad1c000 Ntfs

LAST_CONTROL_TRANSFER: from 804f780d to 80526da8

STACK_TEXT:
f791a7f8 804f780d 00000003 f791ab54 00000000 nt!RtlpBreakWithStatusInstruction
f791a844 804f83fa 00000003 82a0e778 82e51978 nt!KiBugCheckDebugBreak+0x19
f791ac24 804f8925 000000c9 0000000c f791a928 nt!KeBugCheck2+0x574
f791ac44 8064bb94 000000c9 0000000c f791a928 nt!KeBugCheckEx+0x1b
f791ac60 804f37d1 830e4ed0 f791acfc f791ad00 nt!IovpCompleteRequest+0x4c
f791acb8 804fcfbf 830e4ed0 f791ad04 f791acf8 nt!IopCompleteRequest+0x39
f791ad08 80500198 00000000 00000000 00000000 nt!KiDeliverApc+0xb3
f791ad20 804f99be 00000000 baeb5660 00000000 nt!KiSwapThread+0x64
f791ad48 8064c966 00000000 00000000 00000000 nt!KeWaitForSingleObject+0x1c2
f791ad70 bae9f1c5 baeb5660 00000000 00000000 nt!VerifierKeWaitForSingleObject+0x56
f791adac 805c4a28 00000000 00000000 00000000 MyDriver!MyWorkerThread+0x75
f791addc 80540fa2 bae9f150 00000000 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

The problem is calling KeWaitForSingleObject on a semaphore (I even tried with an event) in a worker thread which absolutely runs at PASSIVE_LEVEL. This KeWaitForSingleObject succeeds on first several calls and then suddenly BSODs.

The code is similar to this:

status = KeWaitForSingleObject(
&Semaphore,
Executive,
KernelMode,
FALSE,
NULL
);

Any suggestions?

Thanks in advance.

R.Y.

This bugcheck means that you are issuing an I/O that specifies a stack based
IOSB either asynchronously, or synchronously with APCs disabled. When the
I/O completion APC is delivered, you have returned from the function that
has the IOSB on the stack. The call to KeWaitForSingleObject is just a
victim.

  • Dan.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@ybwork.com
Sent: Thursday, December 21, 2006 5:08 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] DRIVER_VERIFIER_IOMANAGER_VIOLATION

Hope some ppl are still on the list in this holiday season :slight_smile:

I got a BSOD with the folowing analysis:

kd> !analyze -v
****************************************************************************
***
*
*
* Bugcheck Analysis
*
*
*
****************************************************************************
***

DRIVER_VERIFIER_IOMANAGER_VIOLATION (c9)
The IO manager has caught a misbehaving driver.
Arguments:
Arg1: 0000000c, Invalid IOSB in IRP at APC IopCompleteRequest (appears to be
on
stack that was unwound)
Arg2: f791a928, IOSB address
Arg3: 00000000, IRP address
Arg4: 00000000, 0

Debugging Details:

BUGCHECK_STR: 0xc9_c

DRIVER_VERIFIER_IO_VIOLATION_TYPE: c

IOSB_ADDRESS: 8001000000100

IRP_ADDRESS: 830e4e90

DEFAULT_BUCKET_ID: DRIVER_FAULT

PROCESS_NAME: System

DEVICE_OBJECT: 82e21020

DRIVER_OBJECT: 82e26eb8

DEBUG_FLR_IMAGE_TIMESTAMP: 458a70b4

FAULTING_MODULE: bad1c000 Ntfs

LAST_CONTROL_TRANSFER: from 804f780d to 80526da8

STACK_TEXT:
f791a7f8 804f780d 00000003 f791ab54 00000000
nt!RtlpBreakWithStatusInstruction f791a844 804f83fa 00000003 82a0e778
82e51978 nt!KiBugCheckDebugBreak+0x19 f791ac24 804f8925 000000c9 0000000c
f791a928 nt!KeBugCheck2+0x574 f791ac44 8064bb94 000000c9 0000000c f791a928
nt!KeBugCheckEx+0x1b f791ac60 804f37d1 830e4ed0 f791acfc f791ad00
nt!IovpCompleteRequest+0x4c f791acb8 804fcfbf 830e4ed0 f791ad04 f791acf8
nt!IopCompleteRequest+0x39 f791ad08 80500198 00000000 00000000 00000000
nt!KiDeliverApc+0xb3 f791ad20 804f99be 00000000 baeb5660 00000000
nt!KiSwapThread+0x64 f791ad48 8064c966 00000000 00000000 00000000
nt!KeWaitForSingleObject+0x1c2 f791ad70 bae9f1c5 baeb5660 00000000 00000000
nt!VerifierKeWaitForSingleObject+0x56
f791adac 805c4a28 00000000 00000000 00000000 MyDriver!MyWorkerThread+0x75
f791addc 80540fa2 bae9f150 00000000 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

The problem is calling KeWaitForSingleObject on a semaphore (I even tried
with an event) in a worker thread which absolutely runs at PASSIVE_LEVEL.
This KeWaitForSingleObject succeeds on first several calls and then suddenly
BSODs.

The code is similar to this:

status = KeWaitForSingleObject(
&Semaphore,
Executive,
KernelMode,
FALSE,
NULL
);

Any suggestions?

Thanks in advance.

R.Y.


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Thanks Dan.

Does IOSB mean IO_STATUS_BLOCK? If yes, I can understand this problem. But my driver is a miniport driver and there is no IRP stuff.

>Does IOSB mean IO_STATUS_BLOCK?

Yes.

But my driver is a miniport driver and there is no IRP stuff.

Well, some driver on the system appears to be making this error. Often a
dds command starting at esp-a bunch will show some stack detritus that can
be helpful in tracking down the culprit.

  • Dan.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@ybwork.com
Sent: Thursday, December 21, 2006 4:32 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] DRIVER_VERIFIER_IOMANAGER_VIOLATION

Thanks Dan.

Does IOSB mean IO_STATUS_BLOCK? If yes, I can understand this problem. But
my driver is a miniport driver and there is no IRP stuff.


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer