Sometimes you need to get a stacktrace (call stack) for a Firefox crash or hang but Talkback or Breakpad fail because it's a special crasher or a hang. This article describes how to get a stacktrace in those cases with WinDbg on Windows.
To get such a stacktrace you need to install the following software:
Debugging Tools for Windows
Microsoft distributes the Debugging Tools for Windows for free, those include WinDbg which you will need here. Download it from Install Debugging Tools for Windows 32-bit Version for 32-bit versions of Windows (if you own a 64-bit version of Windows, follow the link on that page to the 64-bit version). Then install it, the standard settings in the installation process are fine.
A Firefox nightly or release
You need a Firefox version for which symbols are availables from the Mozilla symbol server to use with WinDbg. You can use any official nightly build or release from MoFo. You can find the latest trunk nightly builds under http://ftp.mozilla.org/pub/mozilla.o.../latest-trunk/.
First you have to start WinDbg via Start->Programs->Debugging Tools for Windows->WinDbg. Now open the firefox.exe executable you downloaded before via File->Open Executable... Make sure that the "Debug child processes also" check box is checked.
You need to configure your WinDbg to download symbols from the Mozilla symbol server. To do that, you can follow the instruction from the page Using the Mozilla symbol server or just use the commands below.
You should now see a text window with some output in it and a input field below it. Enter in the input field these lines
.sympath SRV*c:\symbols*http://symbols.mozilla.org/firefox .symfix+ c:\symbols .reload /f
Now wait for the symbols to download. This may take some time since it needs to download about 70MB. Now run Firefox via Debug->Go and try to reproduce the crasher or hang you are seeing. Switch back to WinDbg and look if there is some new text in the WinDbg Command window saying "Access violation" or similar. If there is not, click on Debug->Break (most likely you have to do this when you want to debug a hang). You should now see a input field again, enter <tt>kp</tt> there, this will give you the so-called stacktrace. Wait until it is done, then mark the text in that window and copy it into your clipboard with Ctrl+C so you can paste the stacktrace as a bug comment if needed.
Q: The first four frames of my stack trace look like this
0012fe20 7c90e89a ntdll!KiFastSystemCallRet 0012fe24 7c81cd96 ntdll!ZwTerminateProcess+0xc 0012ff20 7c81cdee kernel32!_ExitProcess+0x62 0012ff34 6000179e kernel32!ExitProcess+0x14
This looks wrong to me?!
A: You ran the application without the "Debug child processes also" check box being checked. You need to detach the debugger and open the application again, this time with the check box being checked.