Skip to content

Crash Analysis

When running on Windows, Chatterino will automatically save information about a crash in a minidump.

Crashdumps are saved inside the Crashes/reports folder in your Chatterino folder.

Minidumps contain the stacks of all threads, their state (registers), the exception associated with the crash, and some metadata about the CPU and the OS. If you are unsure if your crashdump contains sensitive information, ask a Chatterino developer on the Discord server.

There are several ways of analyzing crashes. To get started, you need to have a symbol (PDB) file for your installation. These files are unique per build meaning that you need to download the file (this is especially important when using nightly builds). For GitHub builds, you can find the PDB file in the release - it's zipped in an archive ending in .pdb.7z. For simplicity, extract the .pdb to the location of your chatterino.exe.

WinDbg

For analyzing with a GUI, install WinDbg. After the installation, you should be able to open the crashdumps (.dmp files) right from the Windows Explorer. By default, you won't get much information.

To add names to functions (symbols), open the settings (Home > Settings), go to Debugging Settings, and add the directory you extracted your symbol file to the Symbol path. If there's no srv* entry, consider adding one - this will try to load symbols from servers for system libraries.

To add source-files, clone the repository and checkout the source-tree at the version of your executable. Then add this path to Source Path in the Debugging Settings.

Note: You might need to reload your window to have your changes be picked up.

Example Settings Example screenshot of WinDbg settings

minidump-stackwalk

If you want to use the terminal or don't have a Windows machine, you can use minidump-stackwalk. Install minidump-stackwalk and dump_syms with cargo (installation): cargo install <app>.

First, you need to generate a symbol-store from the PDB file with dump_syms:

dump_syms chatterino.exe -s <store-path> # (1)!
  1. This can be any folder you want. Symbols will be extracted here.

After you dumped the symbols, run:

minidump-stackwalk <path-to-crashdump> --symbols-path <store-path>

Since Chatterino has quite a few threads, the output will be long. Most of the time, you're interested in the first thread (GUI thread) since it's the crashing thread.