Cantabile Development Blog

Follow the development of music software Cantabile

Articles | Full Index | RSS Feed


Crash MiniDumps

Today I spent some time investigating how to better handle crash reporting in Cantabile.

Previously I've relied on the Microsoft's Dr Watson utility for this. Dr Watson is a diagnostic tool that when enabled, springs into action if an application crashes and captures the state of the program. These dumps can then be sent to the developer for investigation.

In Vista however, Microsoft has removed Dr Watson and recommends developers register their product with their WinQual site. This is what's supposed to happen:

  • When an application crashes, Windows jumps in and contacts the WinQual site.
  • If WinQual knows about the application (because the developer has registered it), it "might" instruct Windows to capture the state of the application as a MiniDump.
  • The MiniDump is then sent to WinQual.
  • WinQual gathers these reports and sends them to the developer for investigation.

Sounds good in theory, but there's a couple of hitches:

  • The end-user's machine must be connected to the internet.
  • The application needs to be registered with WinSite.
  • The application needs to be signed with a certificate (which needs to be purchased by the developer).
  • The crash dumps can take from several days up to a couple of weeks to be delivered to the developer.
  • The developer has no way of contacting the user who encountered the crash (except indirectly by fixing and making solution available through WinQual)
  • Without contact with the end-user some faults just can't be resolved as often additional information is needed.

Although there are work arounds for most of the above issues, it's all a bit messy. So, I've added a new feature to Cantabile so that it can create these MiniDump crash reports itself. In the diagnostics dialog there's two new options:

images/Diagnostics.png

The first option, Generate MiniDump on Crash, tells Cantabile to generate the MidiDump file. For convenience, it's placed in the same directory as Cantabile's other diagnostic log files. This option is on by default.

The second option, Include Data Segments in MiniDumps, causes the MiniDump to include the contents of all the program's user data. It's off by default as the resulting file is much larger, and also touches on privacy issues - though I'm not sure how much "private" information someone would have loaded into Cantabile.

The biggest catch in order for this information to be useful is that I need to keep exact copies of each build I release, including the exact state of source code, all used libraries etc... This isn't a big a as I keep everything under version control anyway, but I'll probably update the build scripts to zip and archive all this automatically, so as to not have to recreate it later.

So I'm rather pleased with these new options as they should simplify crash reporting significantly. I guess I'll find out soon enough...

Posted on April 19, 2008

Share This

Leave A Comment

All comments will be reviewed for spam before being displayed.