Hope some ppl are still on the list in this holiday season
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.