How to read crash dumps, and what causes them

For code related discussions and questions

How to read crash dumps, and what causes them

Postby Buginator » 12 Sep 2009, 21:41

There is some confusion on how to read crash dumps, and I wish to clarify what is our fault, and what isn't.

Example one:
Code: Select all
C:\Program Files\Warzone 2100 2.2.2\warzone2100.exe caused an Integer Divide By Zero at location 691ce026 in module C:\WINDOWS\system32\atioglxx.dll.
   
   Log message: info    |11:37:42: [SDL_main] (global) mod (sequences-2.2.wz) is enabled
   
   Registers:
   eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=0657c000 edi=00000000
   eip=691ce026 esp=0022f950 ebp=00000010 iopl=0         nv up ei pl zr na po nc
   cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00210246
   
   Call stack:
   691CE026  C:\WINDOWS\system32\atioglxx.dll:691CE026  atiPPHSN

In this case, the problem is NOT with our code, it is with (in this case) ATI drivers. Best you can do is try newer/older video drivers.
=============================================================
Example 2:
Code: Select all
H:\Program Files\Warzone 2100\warzone2100.exe caused an Access Violation at location 004aefd6 in module H:\Program Files\Warzone 2100\warzone2100.exe Reading from location 8000001c.

...

Registers:
eax=80000000 ebx=07aab528 ecx=80000000 edx=00000001 esi=0113e600 edi=07aab528
eip=004aefd6 esp=0022f9a0 ebp=0022f9c8 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00210202

Call stack:
004AEFD6  H:\Program Files\Warzone 2100\warzone2100.exe:004AEFD6  removeObjectFromFuncList  /home/admins/wz2.2/2.2.2/2.2.2/src/objmem.c:361
00436178  H:\Program Files\Warzone 2100\warzone2100.exe:00436178  droidRemove  /home/admins/wz2.2/2.2.2/2.2.2/src/droid.c:601
004FCA96  H:\Program Files\Warzone 2100\warzone2100.exe:004FCA96  transporterAddDroid  /home/admins/wz2.2/2.2.2/2.2.2/src/transporter.c:1514
004B57AB  H:\Program Files\Warzone 2100\warzone2100.exe:004B57AB  orderUpdateDroid  /home/admins/wz2.2/2.2.2/2.2.2/src/order.c:839
0043912F  H:\Program Files\Warzone 2100\warzone2100.exe:0043912F  droidUpdate  /home/admins/wz2.2/2.2.2/2.2.2/src/droid.c:833
0047FBF6  H:\Program Files\Warzone 2100\warzone2100.exe:0047FBF6  gameLoop  /home/admins/wz2.2/2.2.2/2.2.2/src/loop.c:299
0048201C  H:\Program Files\Warzone 2100\warzone2100.exe:0048201C  runGameLoop  /home/admins/wz2.2/2.2.2/2.2.2/src/main.c:649
005807FA  H:\Program Files\Warzone 2100\warzone2100.exe:005807FA
005809E2  H:\Program Files\Warzone 2100\warzone2100.exe:005809E2
00580499  H:\Program Files\Warzone 2100\warzone2100.exe:00580499
004010A7  H:\Program Files\Warzone 2100\warzone2100.exe:004010A7  __mingw_CRTStartup  /home/ron/devel/debian/mingw32-runtime/mingw32-runtime-3.13/build_dir/src/mingw-runtime-3.13-20070825-1/crt1.c:237

Whoops! Wz fault.
=============================================================
Example 3:
Code: Select all
H:\Program Files\Warzone 2100\warzone2100.exe caused an Access Violation at location 005f4086 in module H:\Program Files\Warzone 2100\warzone2100.exe Reading from location 08c66fb8.
...
Registers:
eax=00000058 ebx=00000000 ecx=08c66fb8 edx=056ad068 esi=00000004 edi=055b0f08
eip=005f4086 esp=0022e230 ebp=056b9fe4 iopl=0         nv up ei pl nz ac po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00210216

Call stack:
005F4086  H:\Program Files\Warzone 2100\warzone2100.exe:005F4086

In this case, the problem is NOT with our code, it is with video or sound drivers. Best you can do is try newer/older video /sound drivers. (almost all the time, it is the fault of video drivers)

=============================================================
Example 4:
Code: Select all
H:\Program Files\Warzone 2100\warzone2100.exe caused an Access Violation at location 005b4d15 in module H:\Program Files\Warzone 2100\warzone2100.exe Reading from location 054d5010.

...

Registers:
eax=00000001 ebx=054e77d0 ecx=053b74a8 edx=054d4ff8 esi=00000000 edi=056917b8
eip=005b4d15 esp=0022f590 ebp=0022f598 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00210202

Call stack:
005B4D15  H:\Program Files\Warzone 2100\warzone2100.exe:005B4D15
005B4DD9  H:\Program Files\Warzone 2100\warzone2100.exe:005B4DD9
00466017  H:\Program Files\Warzone 2100\warzone2100.exe:00466017  strlcpy  ../lib/framework/string_ext.h:83
00465F67  H:\Program Files\Warzone 2100\warzone2100.exe:00465F67  rebuildSearchPath  /home/admins/wz2.2/2.2.2/2.2.2/src/init.c:240
004667CE  H:\Program Files\Warzone 2100\warzone2100.exe:004667CE  stageOneShutDown  /home/admins/wz2.2/2.2.2/2.2.2/src/init.c:851
00479768  H:\Program Files\Warzone 2100\warzone2100.exe:00479768  levReleaseAll  /home/admins/wz2.2/2.2.2/2.2.2/src/levels.c:525
00479B17  H:\Program Files\Warzone 2100\warzone2100.exe:00479B17  levLoadData  /home/admins/wz2.2/2.2.2/2.2.2/src/levels.c:595
0044E8D8  H:\Program Files\Warzone 2100\warzone2100.exe:0044E8D8  gameLoadV  /home/admins/wz2.2/2.2.2/2.2.2/src/game.c:4697
0044FCD8  H:\Program Files\Warzone 2100\warzone2100.exe:0044FCD8  gameLoad  /home/admins/wz2.2/2.2.2/2.2.2/src/game.c:3907
00480593  H:\Program Files\Warzone 2100\warzone2100.exe:00480593  initSaveGameLoad  /home/admins/wz2.2/2.2.2/2.2.2/src/main.c:623
004820AC  H:\Program Files\Warzone 2100\warzone2100.exe:004820AC  runGameLoop  /home/admins/wz2.2/2.2.2/2.2.2/src/main.c:662
005807FA  H:\Program Files\Warzone 2100\warzone2100.exe:005807FA
005809E2  H:\Program Files\Warzone 2100\warzone2100.exe:005809E2
00580499  H:\Program Files\Warzone 2100\warzone2100.exe:00580499
004010A7  H:\Program Files\Warzone 2100\warzone2100.exe:004010A7  __mingw_CRTStartup  /home/ron/devel/debian/mingw32-runtime/mingw32-runtime-3.13/build_dir/src/mingw-runtime-3.13-20070825-1/crt1.c:237

D'oh! Another warzone problem.
=============================================================

Everyone see the pattern?


If the Call stack is lacking in details, then it is NOT warzone's fault. It is a external issue, driver related, and it crashed in the drivers.
There is nothing we can do about those errors, since those are out of our hands.

Almost all of those kind crash dumps are from faulty video drivers, and possibly sound drivers.
Best you can do is try newer/older video (or sound) drivers, and report the bugs to the video card maker.

Note, there is one other type of crashes, that warzone can't currently handle. That is stack overflow.
It also doesn't make a crash dump.
:gonk:

This is the "Random crashing to desktop" issue.

Thus concludes the 'how to read crashdumps' tutorial.
:stare:
and it ends here.
User avatar
Buginator
Professional
Professional
 
Posts: 3285
Joined: 04 Nov 2007, 02:20

Re: How to read crash dumps, and what causes them

Postby -Kosh- » 18 Sep 2009, 21:37

Only 39 views, and 100+ tickets with the exact symptoms that you describe for the driver bugs. :rolleyes:
Would be great of you guys can write a auto parser to detect this stuff in bug reports, so you do not have to deal with them.
This is a waste of space. Something important should be here.
-Kosh-
Trained
Trained
 
Posts: 203
Joined: 16 Sep 2009, 23:34

Re: How to read crash dumps, and what causes them

Postby Buginator » 27 Sep 2009, 23:22

-Kosh- wrote:Only 39 views, and 100+ tickets with the exact symptoms that you describe for the driver bugs. :rolleyes:
Would be great of you guys can write a auto parser to detect this stuff in bug reports, so you do not have to deal with them.

Indeed, it would be nice. I wasn't expecting anyone to reply to this thread. heh
and it ends here.
User avatar
Buginator
Professional
Professional
 
Posts: 3285
Joined: 04 Nov 2007, 02:20

Re: How to read crash dumps, and what causes them

Postby Duha » 31 May 2012, 11:16

-Kosh- wrote:Only 39 views, and 100+ tickets with the exact symptoms that you describe for the driver bugs. :rolleyes:
Would be great of you guys can write a auto parser to detect this stuff in bug reports, so you do not have to deal with them.


80% job for creating autoparser is describing of task.

It you need script in python that finds some world combination in file it is very easy.
http://addons.wz2100.net/ developer
User avatar
Duha
Trained
Trained
 
Posts: 287
Joined: 25 Mar 2012, 20:05
Location: SPb, Russia

Re: How to read crash dumps, and what causes them

Postby milo christiansen » 05 Jun 2012, 20:59

Also if it crashes in a module other than "warzone2100.exe" it's almost never warzones fault.
In general, if you see glowing, pulsating things in the game, you should click on them.
- Demigod Game Ganual
User avatar
milo christiansen
Regular
Regular
 
Posts: 749
Joined: 02 Jun 2009, 21:23
Location: Perrinton Michigan

Re: How to read crash dumps, and what causes them

Postby Stratadrake » 26 Aug 2012, 20:09

milo christiansen wrote:Also if it crashes in a module other than "warzone2100.exe" it's almost never warzones fault.

Not as simple as that. If an external library throws an exception as a direct result of Warzone 2100 passing invalid data, that is almost certainly Warzone's fault -- the problem lies in determining whether or not that is actually the case relative to a given crash.

The presence/absence of a comprehensive stack trace is one tool. If you see several layers of call from within the Warzone exe then it is almost certainly Warzone's fault -- unfortunately the inverse is not so easy to prove.

All crashes can be sorted in two ways - immediate and latent. The first one's easy to spot - bug shows up, program crashes right on the spot, very predictable, very reproducible. Latent ones are when something went wrong but isn't detected until it comes to a crash (much) later, at which point you only have secondhand, circumstantial evidence to go by - it takes some real detective work to figure out what was originally and truly responsible for it.
Strata @dA, @FAC
User avatar
Stratadrake
Trained
Trained
 
Posts: 197
Joined: 07 Sep 2008, 09:43
Location: Pacific NW


Return to Coding

cron