Toon posts:

Windows Crash/Memory dumps FAQ

Pagina: 1
Acties:
  • 10.224 views sinds 30-01-2008

FAQ: Windows Crash/Memory dumps FAQ

Inleiding


Windows NT achtige (2000/xp) systemen geven een BSOD (Blue Screen Of Death) als het systeem niet meer garant kan staan voor het correct functioneren van het systeem. Om evt data corruptie te voorkomen wordt het systeem dan stil gelegd. En de gebruiker getrakteerd op het "Wow hier ging iets *HEEL* erg mis"-BSOD.



·^

Oorzaken


Rotte drivers


De nr.1 oorzaak van crashes zijn rotte drivers, ook hardware fabrikanten zijn niet perfect en willen nog wel es een rotte (meestal niet signed) driver ophoesten. de WHQL (getest door ms) drivers geven iets meer garantie dat er weinig/geen bugs in zitten maar helemaal uitgesloten is het nooit.



Rotte Hardware


Rotte of tever overclockte hardware wil nog wel eens voor onstabile situaties zorgen waar drivers niet opgerekend hebben en over hun nek gaan of er treed gewoon corruptie van het werkgeheugen op, de cpu doet verkeerde/onvoorspelbare dingen omdat ie het te heet heeft ect ect ect...Onvoorspelbare situaties houd nt niet zo van en geeft je een BSOD.



Bugs in het OS


Ook microsoft is niet perfect (big surprise here) en laat nog wel es een foutje zitten hier en daar.



·^

Instellen


De instellingen aangaande crashes zijn in te stellen in het system properties scherm (Rechts klikken op my computer, properties, Advanced, Startup and recovery, settings). De enige echt interessante opties hier zijn bij het dump type de mogelijkheid tot automatishe reboot na een crash en het vinkje voor het automatish overschrijven van oude dumps, als deze optie niet aanstaat en er is al een oude dump aanwezig op het systeem zal er *GEEN* nieuwe gemaakt worden (geld alleen voor full en kernel memory dump)



·^

Soorten Crash Dumps


  • Full memory dump. (default voor NT4)
    Hierbij wordt het complete interne geheugen weggeschreven naar disk.De dump wordt echter alleen gemaakt als de grote van de paging file groter is dan de grote van het fysieke geheugen + 1 megabyte (paging file moet dus minimaal 129mb zijn op een pc met 128mb geheugen). De dump die aangemaakt wordt zal (meestal afhangkelijk van de instellingen) in je X:\winnt map geplaatst worden met de naam Memory.dmp. Let wel op dat de optie

  • Kernel memory dump (vanaf windows 2000)
    Hierbij wordt alleen de stukken geheugen weggeschreven die gebruikt worden door kernel mode drivers/componenten. Deze optie is toegevoegd omdat het interne geheugen steeds groter werd en het soms nogal problematish werd om bv een dump van een pc met bv 2 gig ram bij support personeel of microsoft te krijgen. Dit imho de beste optie om kiezen een dump van handelbare grote maar met toch voldoende informatie om de oorzaak van je bsod te achterhalen. De dump die aangemaakt wordt zal (meestal afhangkelijk van de instellingen) in je X:\winnt map geplaatst worden met de naam Memory.dmp

  • Small memory dump. (vanaf windows 2000,default voor XP/2000)
    Dit is een dump van 64kb waar de meest belangrijke informatie zoals active drivers in het geheugen een stacktrace de active thread toen de bsod gebeurde. De dump die aangemaakt wordt zal (meestal afhangkelijk van de instellingen) in je X:\winnt\minidumps map geplaatst worden met de naam miniMMDDYY-NN.dmp. waar MMDDYY voor de huidige datum staat en NN voor de nummer van de crash die dag.

  • None
    Geen dump. Er wordt geen informatie weggeschreven aangaande de crash en het os zal aan de hand van de gekozen opties rebooten of in het bsod blijven hangen.


·^

Ja leuk maar wat doe ik er aan?


Als het een eenmalige crash is zou ik zeggen zand er over niet meer naar kijken maar als het een regelmatig terug kerend iets is wordt het toch wel een beetje irritant en kunnen we de informatie uit de dump analyseren om er achter te komen waarom onze pc het niet zo naar z'n zin heeft.




·^

Tools


Om uit te vinden waar de BSOD vandaan komt hebben we wat dingen nodig:




·^

Windbg


Na het starten van windbg hebben gestart gaan we naar

File->Symbol file path en vullen de de directory in waar de symbols geinstaleerd staan (waarschijnlijk c:\winnt\symbols).

In de 4.0 beta versie van de tols kan je ook SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols invullen waarna de debugger de informatie die ie nodig heeft zelf zal downloaden bij microsoft en deze in c:\websymbols plaatsen.

Vervolgens vullen we bij File ->image file path het path in waar windows geinstaleerd staat. (C:\winnt waarschijnlijk)

waarna we File->Open Crashdump onze crashdump kunnen openen. Ik heb ter illustratie een van m'n eigen mini dumps geanalyseerd. Na het openen zal windbg automatish een korte analyse geven van de dump. deze is later nog es op te roepen door !kanalyzebugcheck



Bugcheck Analysis

Use !analyze -v to get detailed debugging information.

BugCheck 100000EA, {81600708, 814b43a8, 8179f888, 1}

Probably caused by : nv4_disp ( nv4_disp+2dddb )

Followup: MachineOwner
---------


Okay NV4_DISP ging op zijn plaat dit keer dus, toch maar es checken of er al een driver update is van nvidia >:) . Als je meer techishe info wil weten of deze informatie wil door sturen naar de hardware fabrikant. Staan er nog wat handige commando's tot je beschikking.

!drivers geeft een overzicht van alle geladen drivers in het geheugen op het moment van de crash met de datum/tijd dat ze gecreeerd zijn. In dit geval is nv4_disp.dll gedateerd Thu Sep 20 02:03:17 2001. Deze informatie is vrij handig zodat zowel jij als de fabrikant over de zelfde versie van de driver spreken.

!analyze -v Geeft een uitgebreidere analyze van de crash.Als je van technishe termen houd is dit the place to be ;)



Bugcheck Analysis

THREAD_STUCK_IN_DEVICE_DRIVER_M (100000ea)
The device driver is spinning in an infinite loop, most likely waiting for
hardware to become idle. This usually indicates problem with the hardware
itself or with the device driver programming the hardware incorrectly.
If the kernel debugger is connected and running when watchdog detects a
timeout condition then DbgBreakPoint() will be called instead of KeBugCheckEx()
and detailed message including bugcheck arguments will be printed to the
debugger. This way we can identify an offending thread, set breakpoints in it,
and hit go to return to the spinning code to debug it further. Because
KeBugCheckEx() is not called the .bugcheck directive will not return bugcheck
information in this case. The argumentes are already printed out to the kernel
debugger. You can also retrieve them from watchdog's global variable via
"dd watchdog!g_WdBugCheckData l5" (use dq on NT64).
On MP machines it is possble to hit a timeout when the spinning thread is
interrupted by hardware interrupt and ISR routine is running at the time of
the bugcheck (this is because watchdog's work item can be delivered and
handled on the second CPU and the same time). If this is the case you will have
to look deeper at the offending thread's stack (e.g. using dds) to determine
spinning code which caused the timeout to occur.
Arguments:
Arg1: 81600708, Pointer to a stuck thread object. Do .thread then kb on it to find
the hung location.
Arg2: 814b43a8, Pointer to a DEFERRED_WATCHDOG object.
Arg3: 8179f888, Pointer to offending driver name.
Arg4: 00000001, Number of times "intercepted" bugcheck 0xEA was hit (see notes).

Debugging Details:
------------------

Faulting Thread address: 81600708
Faulting thread:
Cannot read thread type from thread 81600708, HRESULT 0x80004005
ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
f564ebc8 bf9efe28 nv4_disp+0x2dddb
f564ebd4 bfa0813c nv4_disp+0x37e28
f564ebf8 804db47b nv4_disp+0x5013c
e1996100 000041a8 nt!CcPfLogPageFault+0x85
Implicit thread is now 817cbb30

Last Control Transfer from bf9efe28 to bf9e5ddb


Failure Image Name nv4_disp

Failure Module Name nv4_disp

BUCKET ID: 0xEA_IMAGE_nv4_disp_TS_3BA93245

Command to show faulting stack:
-------------------------------
.thread ffffffff81600708 ; kb

Probably caused by : nv4_disp ( nv4_disp+2dddb )

Followup: MachineOwner
---------



!process Laat informatie zien van het active process toen de BSOD plaatsvond. Dit is alleen mogelijk met kernel/fulldumps.



·^

Ter afsluiting


Door het analyseren van crashdumps zullen de bsod's niet als sneeuw voor de zon verdwijnen, je zal alleen iets beter weten in welke richting je de oorzaak moet zoeken, succ6!




·^

Thanks to


Met dank aan Yarvieh voor het schrijven van dit duidelijke stuk :)



·^

Lijst met figuren


  • Geen figuren gevonden


·^

Inhoudsopgave


[Voor 52% gewijzigd door sanfranjake op 08-10-2008 21:39]


Dit topic is gesloten.



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee