Basic dump information - small app

mgrzeg

BSOD Kernel Dump Senior Analyst
Joined
Jul 26, 2012
Posts
131
Location
Warsaw, Poland
Hello,

I love the SysnativeBSODApp for all the job it does :) And I begin the analysis with this app whenever I have to work with dumps. But from time to time I have to deal with more than 50 dumps (wer directory coming from the user) and after performing full analysis by the SysnativeBSODApp (which takes some time of course) I discover, that most of the dumps have the same bugcheck and full analysis of all dumps was not necessary. I use the BlueScreenView from Nir Sofer, and it's another great tool, but I thought, that basic information I can read directly from the .dmp file, which can be much faster, than full analysis, or using BSV.
Of course, there's no publicly available memory dump file format specification, so I started with some help from http://computer.forensikblog.de/files/010_templates/DMP.bt and http://www.debuggingexperts.com/win32dd–memory-imaging and after a while I wrote a small tool (available here; written in c#, so you can view the source using reflector or any other .net disasm tool), that reads all .dmp files from current directory and writes only few basics: file name, creation date&time, os version, processor architecture and bugcheck with all the params to the 'basicInfo.txt' file. It's not fully tested (just a few lines of code, so I even didn't bother with error checking) in very early dev stage, but I think it may help you save some time before any further analysis with the SysnativeBSODApp, which is of course primary tool of analysis.
Hope you enjoy it and help in further development (maybe you have the .dmp file format spec? :))

m.g.
 
Ha! That would be great, but at the moment I have no idea how to (in small dumps, which are the most common case):
- translate RVA to file offset (I have the address of the PsLoadedModuleList);
- get the registers (to dump the full raw stack).
Any ideas? :)

m.g.
 
I suffer from a condition I like to call "Can't code for squat!"
I can write 1 or 2 line batch files and a bit of HTML v1 - but that's it!

But I do know that it's possible - as the other similar programs (NirSoft's BlueScreenView and WhoCrashed?) do it.

Still it's good to use - I like to run it before starting the big apps in order to get an idea of what I'm dealing with (hardware vs software errors).
In general, if there's a lot of different BSOD error codes - then a hardware problem is more likely (but that can include other drivers also).

Thanks for the app!
 
Keep in mind that the similar programs usually get it wrong, though. I do not know if there is a way to reliably get the Probably Caused By line without the Kernel Debugger stepping in to load symbols. If you find a way, let us know.

I like the app; nice work!


As to the slowness of the Sysnative apps, how much time are you getting for 50 .dmps? Which version of WinDbg? Local or online symbols search path?

I can run 50 .dmps in ~2-3 minutes with WinDbg 6.11 running local symbols with the faster local symbols option.
 
I think most of the tools dump the raw stack (dps @rsp @rsp+200) and finds the address of the 'latest module' (comparing the addresses found on the stack with those in the modules table). Of course kd uses triage.ini and other tools + matches symbols with addresses.

As for the slowness - I use the online search path with local cache to be sure, that I have the symbols for most of the system modules. And it took about 100 minutes :( I tried to use only local cache (setting c:/websymbols in the symbols path field), but I didn't notice any change :(
OK, you forced me to find the reasons :) So I discovered, that probably _NT_SYMBOL_PATH is the reason (which I have in system's env vars). I started the app with setting the _NT_SYMBOL_PATH to nothing and full analysis of 49 dumps takes about 12 minutes instead of ~ 100 with SysnativeBSODApps started with _NT_SYMBOL_PATH=srv*C:\websymbols*http://msdl.microsoft.com/downloads/symbols (first dump was analyzed in 28 secs in first case vs 5 mins 20 secs in second).

The computer is quite fast (i7 2600k with 16GB ram) and the WinDbg version is 6.2.9200.16384.

m.g.
 
I tried the dbghelp.h file, but couldn't find anything about kernel dumps... or maybe I don't understand something. :(

m.g.
 

Has Sysnative Forums helped you? Please consider donating to help us support the site!

Back
Top