User-Mode Crash Handler for Application-Specific Reporting

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improvecrash information completenessVSAvoidapplication-specific customization
Core Design Contradiction:
Loss of informationVSAdaptability or versatility

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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

Engineering Contradiction:
Improvesystem-wide crash managementVSAvoiddeveloper control
Core Design Contradiction:
Extent of automationVSEase of operation

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.

Inventive Principle:
Principle #15Dynamics

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.

Inventive Principle:
Principle #10Preliminary action

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

Engineering Contradiction:
Improvebroad compatibilityVSAvoidcrash cause identification accuracy
Core Design Contradiction:
Adaptability or versatilityVSMeasurement precision

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.

Inventive Principle:
Principle #3Local quality

Data Source

PatentEP3120247B1Framework for user-mode crash reporting
Publication Date: 2019.12.04 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP3120247B1 patent drawingFigure 1
  • EP3120247B1 patent drawingFigure 2
  • EP3120247B1 patent drawingFigure 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.