Some applications implement a watchdog thread whose job is to perform internal application liveness checking.  When these checks fail, the thread triggers a crash report.  This has implications for the report's content that may require accounting for.

Hang detection
Crash reports normally include an indicator as to the culpable thread that triggered the report, generally because they faulted or raised an exception that was left unhandled.  Watchdog threads often generate reports when they detect that some part of the application has stopped making forward progress.  In such a case, the report needs to explicitly call out the triggering thread.

Reports made using the JSON format can do so by adjusting the mainThread parameter.  See the API documentation for more information on this.  For other report types, like minidumps, the watchdog can send a signal (e.g. SIGABRT) to the affected thread in order to set the context appropriately.

Crash dump context
When a crash report is generated, it is crucial to ensure that the crash context is accurately associated.  That is, it should reflect the context of the guilty thread, not the reporting thread or any other context.

Did this answer your question?