User-Mode Crash Handler for Application-Specific Reporting
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing crash reporting systems provide generic reports that are not tailored to specific applications or developer needs, lacking program-specific tools to determine the cause of crashes, and often controlled by the operating system regarding timing and content.
Innovation Solution
A user-mode crash reporting system that executes a crash handler in the same process as the application, generating a crash report by walking the call stack to identify a call chain of functions and controlling the report's sending to a server, with the ability to specify blame functions and customize report content.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of information
If a crash handler executes in supervisory privilege mode to access all data structures, then complete crash information can be collected, but the crash report is not tailored to specific application needs and loses timing control
Solution Approach 1:
The system segments crash reporting functionality into two parts: the crash handler in supervisory mode collects complete raw crash data, while a separate user-mode component processes and customizes the report for specific application needs. This segmentation allows both complete information collection and application-specific tailoring.
Solution Approach 2:
The patent introduces an intermediary crash reporting server that receives complete crash data from the supervisory-mode handler and generates customized reports. This intermediary translates between the need for complete data collection and the need for application-specific customization.
2Extent of automation
If the operating system controls crash report timing and content, then system-wide crash management is maintained, but developers lose control over report timing and customization
Solution Approach 1:
The system dynamically adapts between system-controlled and developer-controlled modes. The crash reporting framework allows developers to configure timing and content preferences, creating a dynamic system that responds to both system-wide requirements and individual application needs.
Solution Approach 2:
Developers can pre-configure crash reporting preferences, timing, and customization parameters before crashes occur. This preliminary configuration allows developer control to be established in advance while maintaining system-wide crash management capabilities.
3Adaptability or versatility
If generic crash reporting tools are provided for all programs, then broad compatibility is achieved, but program-specific diagnostic tools are unavailable
Solution Approach 1:
The system implements local quality by providing different levels of crash reporting customization for different applications. Each application can have its own crash reporting configuration, diagnostic tools, and format preferences, while still using the same underlying crash handling infrastructure.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A user-mode crash reporting system for generating a crash report when an application crashes is provided. The user-mode crash reporting system installs a crash handler to execute in the same process as the application when the application crashes. When the application crashes, the crash handler identifies a victim thread of the process that was executing at the time of a crash. The crash handler then walks a call stack of the victim thread to identify return addresses for returning from called functions of the application. The crash handler identifies offsets within the module corresponding to the return addresses and creates a call chain of functions using the identified offsets. The crash handler then generates a crash report based on the identified call chain.