Can we get notifications of crash reports for our games?

I was playing around with Slate and got a handful of crashes resulting from some issues with NULL objects, but it has occurred to me that (while we are working with rocket and its likely to be submitting those reports to you) I think we can all get behind receiving bug reports for our games. Is this failure something we can leverage? Is there a way to cram in any other information?

For instance:

  • An object/data reference with the last 10 seconds of position/orientation data,
  • Some other assertions that we can control for,
  • A message to help sort out the actual issue at hand and line numbers, instead of just having the memory access location for instance

Heya Bob!

Right now the crash reporter sends crash reports to Epic to help with engine stability. The server side software to receive the reports is not available to Rocket users, so simply redirecting the uploader to point to a different server would be impractical as you would have to mimic the API yourself. One thing you can do is replace CrashReportUploader.exe with your own program, which would send the reports to a system that you create yourself. Unfortunately you wont be able to add any extra information to the crash report as the report is formed in engine code and making exception handling extensible would be quite challenging since we don’t know how the engine crashed and shouldn’t rely on module-specific code, but you can inspect and/or analyze the reports that are sent to us. They are stored on your computer at this location:

C:\Users\User.Name\AppData\Local\Microsoft\Windows\WER

Your custom CrashReportUploader can operate on those files to send them wherever you like. Each crash should contain a log file, minidump, and metadata file, with some wer info.

You should already see function names, filenames, and line numbers in callstack prompts as long as the crash originated in code that you wrote. Since you do not have the engine symbols, you can not unwind the 64 bit callstack beyond any frame that requires engine symbols. For example, if you attempt to access a NULL pointer in your PlayerController code, the resulting Fatal Error will have your code at the top of the stack, which will provide a callstack until you reach the code that invoked the event that you are implementing.

I hope this information helps!

Absolutely it helps!

Is there a page on the developer network that covers the CrashReportUploader parameters so we can emulate it correctly?

Nope. The only parameter you will get in CrashReportUploader will be the location of the folder where it should put its own internal log files. It comes in as:

-LogFolder=

Note that this is not the WER report location. That location is assumed to be the location listed above in the answer.