Code:
1: kd> .bugcheck
Bugcheck code 0000001E
Arguments ffffffff`c0000005 fffff802`2d2cf048 00000000`00000000 ffffffff`ffffffff
Code:
1: kd> kv
Child-SP RetAddr : Args to Child : Call Site
ffffd000`d6344aa8 fffff802`2d45c60a : 00000000`0000001e ffffffff`c0000005 fffff802`2d2cf048 00000000`00000000 : nt!KeBugCheckEx
ffffd000`d6344ab0 fffff802`2d3d1eed : ffffd000`d6345220 00000000`00000000 ffffd000`d6345a18 ffffd000`d6344c20 : nt!KiFatalExceptionHandler+0x22
ffffd000`d6344af0 fffff802`2d338b25 : 00000000`00000001 fffff802`2d27a000 ffffd000`d6345a00 00000438`00000000 : nt!RtlpExecuteHandlerForException+0xd
ffffd000`d6344b20 fffff802`2d33cede : ffffd000`d6345a18 ffffd000`d6345720 ffffd000`d6345a18 ffffd000`d631c180 : nt!RtlDispatchException+0x1a5
ffffd000`d63451f0 fffff802`2d3d65c2 : 00000000`00000000 00000000`00000000 00000000`00000001 00001fa0`003b0048 : nt!KiDispatchException+0x646
ffffd000`d63458e0 fffff802`2d3d4afe : ffff6dcf`ffffffff 00000001`8f57fb1a ffffe000`1ecb06d0 00000000`00000000 : nt!KiExceptionDispatch+0xc2
ffffd000`d6345ac0 fffff802`2d2cf048 : ffffd000`d631c180 ffffd000`d6345c8c ffffd000`d6345c90 ffffd000`d6345c98 : nt!KiGeneralProtectionFault+0xfe (TrapFrame @ ffffd000`d6345ac0)
ffffd000`d6345c50 fffff802`2d3ce4bc : ffffd000`d631c180 ffffd000`d631c180 ffffd000`d63282c0 ffffe000`1e0eea20 : nt!PoIdle+0x98
ffffd000`d6345da0 00000000`00000000 : ffffd000`d6346000 ffffd000`d6340000 00000000`00000000 00000000`00000000 : nt!KiIdleLoop+0x2c
Code:
1: kd> .trap ffffd000`d6345ac0
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=0000000000000000 rbx=0000000000000000 rcx=ffffd000d631c180
rdx=00000000001aa000 rsi=0000000000000000 rdi=0000000000000000
rip=fffff8022d2cf048 rsp=ffffd000d6345c50 rbp=ffffd000d6345d50
r8=0000000000000023 r9=00ffe0001ec88328 r10=ffffe0001ec88010
r11=ffffd000d6345d98 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up di pl nz na po nc
nt!PoIdle+0x98:
fffff802`2d2cf048 4d014128 add qword ptr [r9+28h],r8 ds:00ffe000`1ec88350=????????????????
add instruction, specifically register to memory.
Code:
1: kd> !pte 00ffe0001ec88328
VA 00ffe0001ec88328
PXE at FFFFF6FB7DBEDE00 PPE at FFFFF6FB7DBC0000 PDE at FFFFF6FB780007B0 PTE at FFFFF6F0000F6440
Unable to get PXE FFFFF6FB7DBEDE00
WARNING: noncanonical VA, accesses will fault !
r9 was noncanonical, therefore it faulted and the bug check was thrown as it's a bad virtual address.
Enable verifier, I want to see if it's a driver since this is happening directly after idle.
Driver Verifier:
What is Driver Verifier?
Driver Verifier monitors Windows kernel-mode drivers, graphics drivers, and even 3rd party drivers to detect illegal function calls or actions that might corrupt the system. Driver Verifier can subject the Windows drivers to a variety of stresses and tests to find improper behavior.
Essentially, if there's a 3rd party driver believed to be causing the issues at hand, enabling Driver Verifier will help us see which specific driver is causing the problem.
Before enabling Driver Verifier, it is recommended to create a System Restore Point:
Vista - START | type rstrui - create a restore point
Windows 7 - START | type create | select "Create a Restore Point"
Windows 8/8.1 -
Restore Point - Create in Windows 8
How to enable Driver Verifier:
Start > type "verifier" without the quotes > Select the following options -
1. Select - "Create custom settings (for code developers)"
2. Select - "Select individual settings from a full list"
3. Check the following boxes -
- Special Pool
- Pool Tracking
- Force IRQL Checking
- Deadlock Detection
- Security Checks (only on Windows 7 & 8/8.1)
- DDI compliance checking (only on Windows 8/8.1)
- Miscellaneous Checks
4. Select - "Select driver names from a list"
5. Click on the "Provider" tab. This will sort all of the drivers by the provider.
6. Check EVERY box that is
NOT provided by Microsoft / Microsoft Corporation.
7. Click on Finish.
8. Restart.
Important information regarding Driver Verifier:
- Perhaps the most important which I will now clarify as this has been misunderstood often, enabling Driver Verifier by itself is
not! a solution, but instead a diagnostic utility. It will tell us if a driver is causing your issues, but again it will not outright solve your issues.
- If Driver Verifier finds a violation, the system will BSOD. To expand on this a bit more for the interested, specifically what Driver Verifier actually does is it looks for any driver making illegal function calls, causing memory leaks, etc. When and/if this happens, system corruption occurs if allowed to continue. When Driver Verifier is enabled per my instructions above, it is monitoring
all 3rd party drivers (as we have it set that way) and when it catches a driver attempting to do this, it will quickly flag that driver as being a troublemaker, and bring down the system safely before any corruption can occur.
- After enabling Driver Verifier and restarting the system, depending on the culprit, if for example the driver is on start-up, you may not be able to get back into normal Windows because Driver Verifier will detect it in violation almost straight away, and as stated above, that will cause / force a BSOD.
If this happens, do not panic, do the following:
- Boot into Safe Mode by repeatedly tapping the F8 key during boot-up.
- Once in Safe Mode - Start > Search > type "cmd" without the quotes.
- To turn off Driver Verifier, type in cmd "verifier /reset" without the quotes.
- Restart and boot into normal Windows.
If your OS became corrupt or you cannot boot into Windows after disabling verifier via Safe Mode:
- Boot into Safe Mode by repeatedly tapping the F8 key during boot-up.
- Once in Safe Mode - Start > type "system restore" without the quotes.
- Choose the restore point you created earlier.
-- Note that Safe Mode for Windows 8/8.1 is a bit different, and you may need to try different methods:
5 Ways to Boot into Safe Mode in Windows 8 & Windows 8.1
How long should I keep Driver Verifier enabled for?
I recommend keeping it enabled for at least 24 hours. If you don't BSOD by then, disable Driver Verifier. I will usually say whether or not I'd like for you to keep it enabled any longer.
My system BSOD'd with Driver Verifier enabled, where can I find the crash dumps?
- If you have the system set to generate Small Memory Dumps, they will be located in
%systemroot%\Minidump.
- If you have the system set to generate Kernel Memory Dumps,
it will be located in
%systemroot% and labeled MEMORY.DMP.
Any other questions can most likely be answered by this article:
Using Driver Verifier to identify issues with Windows drivers for advanced users