IP Library Granted Patent US 9,836,343
Granted Patent B2
US 9,836,343 · App. 14/217,030 · Granted Dec 5, 2017

Framework for user-mode crash reporting

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,836,343
App. No.
14/217,030
Granted
Dec 5, 2017
Kind
B2
Abstract

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.

Claims (34)

1. A computer-readable storage medium storing computer-executable instructions for controlling a computing device to generate a crash report when an application crashes, the application being organized as a module with functions, the computer-executable instructions comprising instructions that:

install a crash handler to execute in the same process as the application when the application crashes; and

under control of the crash handler executing in the process of the application after the application crashes,

identify a victim thread of the process that was executing at the time of a crash;

walk a call stack of the victim thread to identify return addresses for returning from called functions of the application;

identify offsets within the module corresponding to the return addresses;

identify a call chain of functions using the identified offsets; and

create a crash report based on the identified call chain.

2. The computer-readable storage medium of claim 1 wherein the computing device is executing under control of an iOS-based operating system.

3. The computer-readable storage medium of claim 1 wherein the application and the crash handler execute in a user privilege mode within the process.

4. The computer-readable storage medium of claim 1 wherein the computing device is executing under control of an operating system with a Mach-based kernel and a BSD-based kernel and multiple crash handlers are installed to handle Mach exceptions and BSD signals generated when the application crashes.

5. The computer-readable storage medium of claim 1 wherein an identification of the victim thread is provided to the crash handler when control is transferred to the crash handler.

6. The computer-readable storage medium of claim 1 wherein the application executes in a sandbox environment.

7. The computer-readable storage medium of claim 1 wherein the computer-executable instructions further comprise instructions that identify a function to blame for the crash based on analysis of the call chain.

8. The computer-readable storage medium of claim 7 wherein a function that is designated as immune is excluded from being blamed for a crash.

9. The computer-readable storage medium of claim 8 wherein functions are identified as being immune in a configuration file.

10. The computer-readable storage medium of claim 1 wherein the crash report includes a session identification to map the crash report to activity information identified by the session identification, the activity information being logged during execution of the application.

11. The computer-readable storage medium of claim 1 wherein the computer-executable instructions further include instructions that send the crash report to a crash report server when an upload criterion is satisfied.

12. A computing system for generating a crash report when an application executing in a sandbox environment crashes, the application being organized as a module with functions, the computing system comprising:

a computer-readable storage medium storing computer-executable instructions of:

the module; and

a crash handler for executing in the same process as the application when the application crashes, the crash handler comprising:

a component that identifies a victim thread of the process, the victim thread being a thread of the process that was executing at the time of a crash;

a component that retrieves a stack pointer to a call stack of the victim thread and retrieves an instruction pointer to an instruction executing at the time of the crash;

a component that walks the call stack of the victim thread to identify return addresses for called functions, the return addresses indicating a return location within a calling function;

a component that identifies offsets within the module corresponding to the return addresses and the instruction pointer;

a component that identifies a call chain of functions using the identified offsets;

a component that identifies a function to blame for the crash, the function to blame for the crash being the last function called before the crash that is not immune from being blamed for a crash as indicated by an immune function table;

a component that creates a crash report that identifies the function to blame for the crash and a session identification of an application activity log for the execution of the application; and

a component that, when an upload criterion is satisfied, uploads the crash report to a crash report server; and

a processor that executes the computer-executable instructions stored in the computer-readable storage medium.

13. The computing system of claim 12 wherein the crash handler further comprises a component that identifies a name of the function to blame using symbol table information associated with the application.

14. The computing system of claim 12 wherein the computing system is executing under control of an operating system with a Mach-based kernel and a BSD-based kernel and multiple crash handlers are installed to handle one or more Mach exceptions and BSD signals generated when the application crashes.

15. The computing system of claim 12 wherein the component that identifies a call chain of functions identifies functions corresponding to the identified functions and adds an indication of the identified functions to the call chain and wherein the computer-executable instructions further include a component that adds administrative functions to the immune function table.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2024
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 067330/0176 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2015
From: LEBAN, ROY; MATLOCK, STEPHEN; MADDIN, MATTHEW DAVID; TIANO, MICHAEL O.; YOUNG, KENNETH L.; PARVEEN, SHAJEEDA; PARVEEN, JOHN PAUL
To: MICROSOFT CORPORATION
Reel/Frame 036928/0609 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SIGNATURE PAGE FOR INVENTOR EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 034835 FRAME: 0131. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 23, 2015
From: ZHANG, HONGWEI; MUTHUKUMSARASAMY, ARULDEVI
To: MICROSOFT CORPORATION
Reel/Frame 035071/0172 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2015
From: ZHANG, HONGWEI; MUTHUKUMSARASAMY, ARULDEVI; GUNAWAN, ASWIN
To: MICROSOFT CORPORATION
Reel/Frame 034835/0131 →
CHANGE OF NAME Recorded Jan 28, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034835/0253 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →