Hi,
This question is directly related to my other post from yesterday, “How does one find the exception and exception context records”. It seems prudent to start a new thread rather than confuse the last one with a second copy/paste from windbg.
So, the previous respondent, Joe, told me to enable driver verifier and see what happens. We did this on the debugee and had the windbg going on the debugger. It’s very interesting, any machine I’ve arranged for driver verifier to run on: doesn’t boot but BSODs on boot. I’ve configured driver verifier to “look at/probe” only my driver. I’ve done this on two different machines and neither machine will cleanly boot with this configured.
Anyway, with the debugee configured thusly, I was presented this bugcheck in windbg. Because the other machine I had driver verifier running on *didn’t* get this same bug check, I rebooted the debugee to see what would happen. The debugee did get the same error as you see below.
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 7E, {c0000005, 83625092, 885978fc, 885974e0}
Probably caused by : ntkrpamp.exe ( nt!IovUtilMarkDeviceObject+9 )
Followup: MachineOwner
nt!RtlpBreakWithStatusInstruction:
8368d7b8 cc int 3
2: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (7e)
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.
Arguments:
Arg1: c0000005, The exception code that was not handled
Arg2: 83625092, The address that the exception occurred at
Arg3: 885978fc, Exception Record Address
Arg4: 885974e0, Context Record Address
Debugging Details:
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.
FAULTING_IP:
nt!IovUtilMarkDeviceObject+9
83625092 8b80b0000000 mov eax,dword ptr [eax+0B0h]
EXCEPTION_RECORD: 885978fc – (.exr 0xffffffff885978fc)
ExceptionAddress: 83625092 (nt!IovUtilMarkDeviceObject+0x00000009)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 000000b0
Attempt to read from address 000000b0
CONTEXT: 885974e0 – (.cxr 0xffffffff885974e0)
eax=00000000 ebx=96005808 ecx=00000002 edx=960083f8 esi=96005808 edi=00000000
eip=83625092 esp=885979c4 ebp=885979c8 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010202
nt!IovUtilMarkDeviceObject+0x9:
83625092 8b80b0000000 mov eax,dword ptr [eax+0B0h] ds:0023:000000b0=???
Resetting default scope
PROCESS_NAME: System
CURRENT_IRQL: 2
ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.
EXCEPTION_PARAMETER1: 00000000
EXCEPTION_PARAMETER2: 000000b0
READ_ADDRESS: 000000b0
FOLLOWUP_IP:
nt!IovUtilMarkDeviceObject+9
83625092 8b80b0000000 mov eax,dword ptr [eax+0B0h]
BUGCHECK_STR: 0x7E
DEFAULT_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE
LOCK_ADDRESS: 83779be0 – (!locks 83779be0)
Resource @ nt!PiEngineLock (0x83779be0) Exclusively owned
Contention Count = 2
NumberOfExclusiveWaiters = 1
Threads: 857f34c0-01<*>
Threads Waiting On Exclusive Access:
857f3d48
1 total locks, 1 locks currently held
PNP_TRIAGE:
Lock address : 0x83779be0
Thread Count : 1
Thread address: 0x857f34c0
Thread wait : 0x758
LAST_CONTROL_TRANSFER: from 836f1d5f to 8368d7b8
STACK_TEXT:
885979c0 83625080 88597a98 837d09f5 9a5a8ee8 nt!IovUtilMarkDeviceObject+0x9
885979c8 837d09f5 9a5a8ee8 00000000 96005808 nt!IovUtilMarkStack+0x52
88597a98 837cfedc 96005808 88597cc8 00000000 nt!PipCallDriverAddDevice+0x60a
88597c94 8379be5c 86504aa8 90a8c0c0 88597cc8 nt!PipProcessDevNodeTree+0x15d
88597cd4 83627d09 90a8c0c0 83777b00 857f34c0 nt!PiProcessStartSystemDevices+0x6d
88597d00 8369014b 00000000 00000000 857f34c0 nt!PnpDeviceActionWorker+0x241
88597d50 8381c13d 00000001 e56286f3 00000000 nt!ExpWorkerThread+0x10d
88597d90 836c3559 8369003e 00000001 00000000 nt!PspSystemThreadStartup+0x9e
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: nt!IovUtilMarkDeviceObject+9
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: nt
IMAGE_NAME: ntkrpamp.exe
DEBUG_FLR_IMAGE_TIMESTAMP: 521e9cb6
STACK_COMMAND: .cxr 0xffffffff885974e0 ; kb
FAILURE_BUCKET_ID: 0x7E_VRF_nt!IovUtilMarkDeviceObject+9
BUCKET_ID: 0x7E_VRF_nt!IovUtilMarkDeviceObject+9
Followup: MachineOwner
My original question from yesterday was how to find the exception record and context record. This appears to be something that is now provided for when one clicks on “!analyze -v”. However, I do need some help in deciphering what more is present.
Thanks,
Andy