# US 9,436,540 B2 · Automated diagnosis of software crashes

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,436,540 B2
- Document ID: US9436540B2
- Status: Granted
- Kind: B2
- Application number: 14/515,934
- Filed: 2014-10-16
- Published: 2016-04-21
- Granted: 2016-09-06
- Earliest claimed: 2014-10-16
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Ramanjaneya S. Burugula; Kaoutar El Maghraoui; Joefon Jann
- Web page: https://patentgrep.com/patent/US9436540B2

## CPC

- G06F 11/079: {Root cause analysis, i.e. error or fault diagnosis (in a hardware test environment G06F11/22; in a software test environment G06F11/36)}
- G06F 11/0706: {the processing taking place on a specific hardware platform or in a specific software environment}
- G06F 11/0715: {in a system implementing multitasking (multitasking per se G06F9/46)}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/0778: {Dumping, i.e. gathering error/state information after a fault for later diagnosis}
- G06F 11/0787: {Storage of error reports, e.g. persistent data storage, storage using memory protection}
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F 11/0766: {Error or fault reporting or storing}
- G06F 11/3636: {by tracing the execution of the program}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for diagnosing software crashes includes retrieving a stack-trace from at least one of a new problem report, updated problem report, and authorized analysis report from a repository. A vector is automatically created from the retrieved stack-trace using the function name and associating the resultant vector with the problem report and authorized analysis reports. Vector space modeling is used to calculate the angles between the resultant vectors to determine similarities. Similar problem reports and authorized analysis reports are grouped into similar sets using a maximal cliques process. New software crashes are automatically diagnosed by extracting the stack-trace from a new problem report of the new software crash, and selecting a potential solution by searching the grouped problem reports and authorized analysis reports for a stack-trace similar to the new stack-trace.

## Claims

### Claim 1

A method for diagnosing software crashes, the method comprising:
retrieving, by one or more processors, a stack-trace from at least one of a new problem report, updated problem report and authorized analysis report from a repository on one or more server computer systems;
automatically creating, by one or more processors, a vector from the retrieved stack-trace, wherein each function name within the stack-trace is a dimension of the resultant vector, and the vector is associated with the problem report and authorized analysis report containing the stack-trace;
calculating, by one or more processors, using vector space modeling, angles between resultant vectors to define similarities in problem reports and authorized analysis reports, wherein problem reports and authorized analysis reports are deemed similar where angles between resultant vectors are less than a threshold value;
grouping, by one or more processors, the problem reports and authorized analysis reports into similar sets using a maximal cliques process; and
automatically diagnosing, by one or more processors, in response to a new software crash, a new stack-trace extracted from a new problem report of the new software crash, and selecting a potential solution by searching the grouped problem reports and authorized analysis reports for a stack-trace similar to the new stack-trace.

### Claim 2 (depends on 1)

The method of claim 1, wherein retrieving, by one or more processors, a stack-trace from at least one of a new problem report, updated problem report and authorized analysis report from a repository on one or more server computer systems further comprises:
scanning, by one or more processors, for at least one of a new problem report, updated problem report and authorized analysis report files; and
parsing, by one or more processors, the stack-traces from said at least one of new problem report, updated problem report and authorized analysis report files.

### Claim 3 (depends on 1)

The method of claim 1, wherein automatically creating, by one or more processors, a vector from the retrieved stack-trace further comprises:
determining, by one or more processors, length of the vectors in each dimension by their offsets in the stack-trace.

### Claim 4 (depends on 1)

The method of claim 1, wherein calculating, by one or more processors, using vector space modeling, angles between resultant vectors to define similarities in problem reports and authorized analysis reports, wherein problem reports and authorized analysis reports are deemed similar where angles between resultant vectors are less than a threshold value further comprises:
computing, by one or more processors, the angle between each pair of vectors; and
determining, by one or more processors, if the angle between each pair of vectors is less than one degree.

### Claim 5 (depends on 1)

The method of claim 1, wherein grouping, by one or more processors, the problem reports and authorized analysis reports into similar sets using a maximal cliques process further comprises:
creating, by one or more processors, an undirected graph wherein a vertex represents each problem report or authorized analysis report;
connecting, by one or more processors, a pair of problem reports and authorized analysis reports, determined to be similar, by an edge;
extracting, by one or more processors, one or more separate connected component subgraphs from the undirected graph;
determining, by one or more processors, a maximal clique for each subgraph, wherein each maximal clique represents a set of similar problem reports and authorized analysis reports;
grouping, by one or more processors, the problem reports and authorized analysis reports contained in the maximal clique together; and
storing, by one or more processors, cliques into a repository.

### Claim 6 (depends on 1)

The method of claim 1, wherein automatically diagnosing, by one or more processors, in response to a new software crash, a new stack-trace extracted from a new problem report of the new software crash, and selecting a potential solution, further comprises:
extracting, by one or more processors, a stack-trace from the new problem report;
identifying, by one or more processors, a set of problem reports and authorized analysis reports from the grouped problem reports and authorized analysis reports that have a similar stack-trace to the extracted stack trace; and
selecting, by one or more processors, a potential solution from among program temporary fixes associated with the similar stack trace.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
scheduling, by one or more processors, user determined scans for new or updated problem reports or authorized analysis reports;
creating, by one or more processors, a diagnosis report listing all problem reports and patches with its authorized analysis report; and
reporting, by one or more processors, results to system administrators and logging the results into an external repository.

### Claim 8

A computer program product for diagnosing software crashes, including one or more computer-readable storage media and program instructions stored on at least one of the one or more storage media, wherein execution of the program instructions by one or more processors of a computer system causes the one or more processors to perform a method comprising:
retrieving, by one or more processors, a stack-trace from at least one of a new problem report, updated problem report and authorized analysis report from a repository on one or more server computer systems;
automatically creating, by one or more processors, a vector from the retrieved stack-trace, wherein each function name within the stack-trace is a dimension of the resultant vector, and the vector is associated with the problem report and authorized analysis report containing the stack-trace;
calculating, by one or more processors, using vector space modeling, angles between resultant vectors to define similarities in problem reports and authorized analysis reports, wherein problem reports and authorized analysis reports are deemed similar where angles between resultant vectors are less than a threshold value;
grouping, by one or more processors, the problem reports and authorized analysis reports into similar sets using a maximal cliques process; and
automatically diagnosing, by one or more processors, in response to a new software crash, a new stack-trace extracted from a new problem report of the new software crash, and selecting a potential solution by searching the grouped problem reports and authorized analysis reports for a stack-trace similar to the new stack-trace.

### Claim 9 (depends on 8)

The computer program product of claim 8, wherein program instructions causing the one or more processors to perform the step of retrieving a stack-trace from at least one of a new problem report, updated problem report and authorized analysis report from a repository on one or more server computer systems further comprises program instructions causing the one or more processors to perform the steps of:
scanning, by one or more processors, for at least one of a new problem report, updated problem report and authorized analysis report files; and
parsing, by one or more processors, the stack-traces from said at least one of new problem report, updated problem report and authorized analysis report files.

### Claim 10 (depends on 8)

The computer program product of claim 8, wherein program instructions causing the one or more processors to perform the step of automatically creating a vector from the retrieved stack-trace further comprises program instructions causing the one or more processors to perform the step of:
determining, by one or more processors, length of the vectors in each dimension by their offsets in the stack-trace.

### Claim 11 (depends on 8)

The computer program product of claim 8, wherein program instructions causing the one or more processors to perform the step of calculating, using vector space modeling, angles between resultant vectors to define similarities in problem reports and authorized analysis reports, wherein problem reports and authorized analysis reports are deemed similar where angles between resultant vectors are less than a threshold value further comprises program instructions causing the one or more processors to perform the steps of:
computing, by one or more processors, the angle between each pair of vectors; and
determining, by one or more processors, if the angle between each pair of vectors is less than one degree.

### Claim 12 (depends on 8)

The computer program product of claim 8, wherein program instructions causing the one or more processors to perform the step of grouping the problem reports and authorized analysis reports into similar sets using a maximal cliques process further comprises program instructions causing the one or more processors to perform the steps of:
creating, by one or more processors, an undirected graph wherein a vertex represents each problem report or authorized analysis report;
connecting, by one or more processors, a pair of problem reports and authorized analysis reports, determined to be similar, by an edge;
extracting, by one or more processors, one or more separate connected component subgraphs from the undirected graph;
determining, by one or more processors, a maximal clique for each subgraph, wherein each maximal clique represents a set of similar problem reports and authorized analysis reports;
grouping, by one or more processors, the problem reports and authorized analysis reports contained in the maximal clique together; and
storing, by one or more processors, cliques into a repository.

### Claim 13 (depends on 8)

The computer program product of claim 8, wherein program instructions causing the one or more processors to perform the step of automatically diagnosing, in response to a new software crash, a new stack-trace extracted from a new problem report of the new software crash, and selecting a potential solution, further comprises program instructions causing the one or more processors to perform the steps of:
extracting, by one or more processors, a stack-trace from the new problem report;
identifying, by one or more processors, a set of problem reports and authorized analysis reports from the grouped problem reports and authorized analysis reports that have a similar stack-trace to the extracted stack trace; and
selecting, by one or more processors, a potential solution from among program temporary fixes associated with the similar stack trace.

### Claim 14 (depends on 8)

The computer program product of claim 8, further comprising program instructions causing the one or more processors to perform the steps of:
scheduling, by one or more processors, user determined scans for at least one of a new problem report, updated problem report and authorized analysis report;
creating, by one or more processors, a diagnosis report listing all problem reports and patches with its authorized analysis report; and
reporting, by one or more processors, results to system administrators and logging the results into an external repository.

### Claim 15

A computer system for diagnosing software crashes, the computer system comprising:
one or more computer processors;
one or more computer readable storage media;
program instructions stored on the computer readable storage media, wherein execution of the program instructions by the one or more processors of the computer system causes the one or more processors to perform a method comprising:
retrieving, by one or more processors, a stack-trace from at least one of a new problem report, updated problem report and authorized analysis report from a repository on one or more server computer systems;
automatically creating, by one or more processors, a vector from the retrieved stack-trace, wherein each function name within the stack-trace is a dimension of the resultant vector, and the vector is associated with the problem report and authorized analysis report containing the stack-trace;
calculating, by one or more processors, using vector space modeling, angles between resultant vectors to define similarities in problem reports and authorized analysis reports, wherein problem reports and authorized analysis reports are deemed similar where angles between resultant vectors are less than a threshold value;
grouping, by one or more processors, the problem reports and authorized analysis reports into similar sets using a maximal cliques process; and
automatically diagnosing, by one or more processors, in response to a new software crash, a new stack-trace extracted from a new problem report of the new software crash, and selecting a potential solution by searching the grouped problem reports and authorized analysis reports for a stack-trace similar to the new stack-trace.

### Claim 16 (depends on 15)

The computer system of claim 15, wherein program instructions causing the one or more processors to perform the step of retrieving a stack-trace from at least one of a new problem report, updated problem report and authorized analysis report from a repository on one or more server computer systems further comprises program instructions causing the one or more processors to perform the steps of:
scanning, by one or more processors, for at least one of a new problem report, updated problem report and authorized analysis report files; and
parsing, by one or more processors, the stack-traces from said at least one of new problem report, updated problem report and authorized analysis report files.

### Claim 17 (depends on 15)

The computer system of claim 15, wherein program instructions causing the one or more processors to perform the step of automatically creating a vector from the retrieved stack-trace further comprises program instructions causing the one or more processors to perform the step of:
determining, by one or more processors, length of the vectors in each dimension by their offsets in the stack-trace.

### Claim 18 (depends on 15)

The computer system of claim 15, wherein program instructions causing the one or more processors to perform the step of calculating, using vector space modeling, angles between resultant vectors to define similarities in problem reports and authorized analysis reports, wherein problem reports and authorized analysis reports are deemed similar where angles between resultant vectors are less than a threshold value further comprises program instructions causing the one or more processors to perform the steps of:
computing, by one or more processors, the angle between each pair of vectors; and
determining, by one or more processors, if the angle between each pair of vectors is less than one degree.

### Claim 19 (depends on 15)

The computer system of claim 15, wherein program instructions causing the one or more processors to perform the step of grouping the problem reports and authorized analysis reports into similar sets using a maximal cliques process further comprises program instructions causing the one or more processors to perform the steps of:
creating, by one or more processors, an undirected graph wherein a vertex represents each problem report or authorized analysis report;
connecting, by one or more processors, a pair of problem reports and authorized analysis reports, determined to be similar, by an edge;
extracting, by one or more processors, one or more separate connected component subgraphs from the undirected graph;
determining, by one or more processors, a maximal clique for each subgraph, wherein each maximal clique represents a set of similar problem reports and authorized analysis reports;
grouping, by one or more processors, the problem reports and authorized analysis reports contained in the maximal clique together; and
storing, by one or more processors, cliques into a repository.

### Claim 20 (depends on 15)

The computer system of claim 15, wherein program instructions causing the one or more processors to perform the step of automatically diagnosing, in response to a new software crash, a new stack-trace extracted from a new problem report of the new software crash, and selecting a potential solution, further comprises program instructions causing the one or more processors to perform the steps of:
extracting, by one or more processors, a stack-trace from the new problem report;
identifying, by one or more processors, a set of problem reports and authorized analysis reports from the grouped problem reports and authorized analysis reports that have a similar stack-trace to the extracted stack trace; and
selecting, by one or more processors, a potential solution from among program temporary fixes associated with the similar stack trace.
