Crash reporting in desktop Python applications

This post details the redesign of Dropbox's desktop crash reporting system. It describes the limitations of the previous in-process signal handler, including its inability to capture boot errors and its inherent fragility. The adoption of Crashpad as an out-of-process solution is explained, highlighting its ability to capture richer crash data (stack traces for all threads, heap contents) and its better support for Windows-specific exceptions. The introduction of a Rust-based 'watchdog' process for validating crash reporting rates and classifying terminations is also covered. The post further elaborates on the challenges and solutions for symbolication of mixed-language (Python, C++, Objective-C) stack traces and the process of teaching Crashpad to effectively report Python-related crashes.