Vaak is een BSOD de oorzaak van een corrupte, slechte of missende driver dus is een foutcode van de BSOD vaak al genoeg om het probleem te achterhalen maar we gaan toch even dieper spitten.
Belangrijk: Controleer altijd of de pagefile een gelijke waarde heeft, of groter is, als het fysieke geheugen wat in de machine aanwezig is. Is dit niet het geval dan zul je een onvolledige dump krijgen en hier heb je weinig tot niks aan.
Windbg downloaden en installeren waarmee we de MemoryDump gaan analyzeren:
- Download en installeer Windbg.
- Maak de directory "C:\Symbols" handmatig aan.
- Open Windbg, ga naar "File --> Symbol File Path" en voer hier het pad voor de symbols in.
- Microsoft symbols: "SRV*c:\symbols*http://msdl.microsoft.com/download/symbols".
- Citrix symbols: "SRV*c:\css*http://ctxsym.citrix.com/symbols".
- Ga naar "File --> Save Workspace" zodat deze configuratie ook te gebruiken is als je de volgende keer de applicatie start
Open Windbg en ga naar "File --> Open Crash Dump..." en open de crash dump. Dit kan even duren.
Zodra de crash dump is geladen, zal je een mogelijke oorzaak zien zoals b.v.
Probably caused by : ntkrnlmp.exeOm meer informatie te krijgen, typ "!analyze -v"
********************************************************************** *********De informatie bij STACK_TEXT en FOLLOWUP_IP is erg belangrijk om goed te analyseren.
* *
* Bugcheck Analysis *
* *
********************************************************************** *********
Use !analyze -v to get detailed debugging information.
BugCheck 1E, {ffffffffc0000005, 0, 8, 0}
Probably caused by : ntkrnlmp.exe ( nt! ?? ::FNODOBFM::`string'+12767 )
Followup: MachineOwner
---------
2: kd> !analyze -v
********************************************************************** *********
* *
* Bugcheck Analysis *
* *
********************************************************************** *********
KMODE_EXCEPTION_NOT_HANDLED (1e)
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: ffffffffc0000005, The exception code that was not handled
Arg2: 0000000000000000, The address that the exception occurred at
Arg3: 0000000000000008, Parameter 0 of the exception
Arg4: 0000000000000000, Parameter 1 of the exception
Debugging Details:
------------------
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.
FAULTING_IP:
+0
00000000`00000000 ?? ???
EXCEPTION_PARAMETER1: 0000000000000008
EXCEPTION_PARAMETER2: 0000000000000000
WRITE_ADDRESS: GetPointerFromAddress: unable to read from fffff80001dfa0b0
0000000000000000
CUSTOMER_CRASH_COUNT: 2
DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
BUGCHECK_STR: 0x1E
PROCESS_NAME: System
CURRENT_IRQL: 0
TRAP_FRAME: fffff98001213a90 -- (.trap 0xfffff98001213a90)
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=0000000000000000 rbx=0000000000000000 rcx=0000000000000000
rdx=fffff98000c307f0 rsi=0000000000000000 rdi=0000000000000000
rip=0000000000000000 rsp=fffff98001213c20 rbp=fffff98000c30180
r8=0000000000000000 r9=0000000000000000 r10=fffff80001d68958
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl zr na po nc
00000000`00000000 ?? ???
Resetting default scope
LAST_CONTROL_TRANSFER: from fffff80001cbab47 to fffff80001c4dbd0
STACK_TEXT:
fffff980`012132a8 fffff800`01cbab47 : 00000000`0000001e ffffffff`c0000005 00000000`00000000 00000000`00000008 : nt!KeBugCheckEx
fffff980`012132b0 fffff800`01c4da2e : fffff980`012139e8 fffff980`00c30180 fffff980`01213a90 00000000`00000000 : nt! ?? ::FNODOBFM::`string'+0x12767
fffff980`012138b0 fffff800`01c4c825 : 00000000`00000008 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiExceptionDispatch+0xae
fffff980`01213a90 00000000`00000000 : 00000000`00000000 fffff980`15038d2b fffffa80`0540ff01 00000000`00000000 : nt!KiPageFault+0x1e5
STACK_COMMAND: kb
FOLLOWUP_IP:
nt! ?? ::FNODOBFM::`string'+12767
fffff800`01cbab47 cc int 3
SYMBOL_STACK_INDEX: 1
SYMBOL_NAME: nt! ?? ::FNODOBFM::`string'+12767
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe
DEBUG_FLR_IMAGE_TIMESTAMP: 46830f41
FAILURE_BUCKET_ID: X64_0x1E_W_nt!_??_::FNODOBFM::_string_+12767
BUCKET_ID: X64_0x1E_W_nt!_??_::FNODOBFM::_string_+12767
Followup: MachineOwner
---------
2: kd> .trap 0xfffff98001213a90
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=0000000000000000 rbx=0000000000000000 rcx=0000000000000000
rdx=fffff98000c307f0 rsi=0000000000000000 rdi=0000000000000000
rip=0000000000000000 rsp=fffff98001213c20 rbp=fffff98000c30180
r8=0000000000000000 r9=0000000000000000 r10=fffff80001d68958
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl zr na po nc
00000000`00000000 ?? ???
De informatie bij STACK_TEXT moet je van onder naar boven lezen, wat bovenaan staat is als laatste gebeurd.
Informatie uit de STACK_TEXT en FOLLOWUP_IP kan je met elkaar vergelijken, en zodra hier overeenkomstigheden in zitten moet je het probleem in deze richting gaan zoeken.
Een andere manier om de oorzaak van een BSOD te achterhalen kan met Bluescreenview
Als je het systeem zo hebt ingesteld dat er bij elke crash automatisch een minidump wordt gemaakt, dan probeert deze tool uit de inhoud van deze dump nuttige informatie op te diepen.
Je krijgt dan een gedetailleerd rapport over de crash, inclusief alle stuurprogramma’s en modules die wellicht bij die crash betrokken waren. Stuurprogramma’s die vermoedelijk mee de fout hebben veroorzaakt, worden gemarkeerd zodat je snel het probleem kan achterhalen.
- Download en installeer BlueScreenView
- Na de installatie zal BlueScreenView starten.
- Dubbelklik op de dumpfile die je wilt bekijken.
Belangrijke gegevens zijn.
- Bugcheckcode;
- Parameter1;
- Parameter2;
- Parameter3;
- Parameter4;
Caused by driver;
Caused by address; - Bij file -> save selected items kan je de dump bestanden wegschrijven naar een text bestand.
Code: Selecteer alles
==================================================
Filename : nvlddmkm.sys
Address In Stack : nvlddmkm.sys+119cf8
From Address : fffff880`0fe99000
To Address : fffff880`10b2ae00
Size : 0x00c91e00
Time Stamp : 0x4c37918e
Time String : 7/9/2010 11:15:58 PM
Product Name :
File Description :
File Version :
Company :
Full Path :
==================================================
- De optie File -> Google Search - Bug Check + Driver is erg handig om direct meer info te zoeken.