Error Report Clustering via Call Stack Similarity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The sheer volume of error reports received by software companies makes it difficult to process and derive insights into the causes of software errors, particularly because these reports are not logically grouped, hindering rapid error detection and analysis.

Innovation Solution

Error reports are re-bucketed into meta-buckets based on the similarity of their call stacks, using factors such as common functions, distance from the crash point, and offset distances, to cluster related errors together, providing deeper insights for programmers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If error reports are processed individually without grouping, then each error can be analyzed in detail, but the processing efficiency decreases and insights are harder to derive

Engineering Contradiction:
Improveerror analysis depthVSAvoiderror processing efficiency
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent segments error reports into buckets based on application name and version, then further segments these buckets into meta-buckets based on call stack similarity. This hierarchical segmentation allows detailed analysis of individual errors while grouping similar errors together to improve processing efficiency and derive insights.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent merges error reports with similar call stacks into the same meta-bucket, combining individual error analyses into grouped insights. This merging approach maintains the ability to analyze individual errors while improving overall processing efficiency by identifying patterns across multiple errors.

Inventive Principle:
Principle #5Merging (Combining)

2Device complexity

If error reports are grouped by application name and version only, then processing is simplified, but related errors with different application versions or names are not clustered together

Engineering Contradiction:
Improvegrouping structureVSAvoiderror relationship insight
Core Design Contradiction:
Device complexityVSLoss of information

Solution Approach 1:

The patent adds a new dimension to error grouping by introducing call stack similarity as a clustering criterion. Instead of only grouping by application name and version (first dimension), the system now groups by call stack similarity (second dimension), creating meta-buckets that capture deeper error relationships and prevent loss of insightful information.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Measurement precision

If call stack similarity is calculated using multiple factors, then error clustering accuracy improves, but processing time increases

Engineering Contradiction:
Improveerror clustering accuracyVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs preliminary actions by pre-processing call stacks to identify common functions and calculate similarity metrics before error reporting. This preliminary preparation enables accurate error clustering when errors actually occur, balancing processing time and accuracy by doing the heavy lifting in advance rather than in real-time.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9459947B2Error report processing using call stack similarity
Publication Date: 2016.10.04 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9459947B2 patent drawing
  • US9459947B2 patent drawing
  • US9459947B2 patent drawing

AI summary

Techniques for error report processing are described herein. Error reports, received by a developer due to program crashes, may be organized into a plurality of “buckets.” The buckets may be based in part on a name and a version of the application associated with a crash. Additionally, a call stack of the computer on which the crash occurred may be associated with each error report. The error reports may be “re-bucketed” into meta-buckets to provide additional information to programmers working to resolve software errors. The re-bucketing may be based in part on measuring similarity of call stacks of a plurality of error reports. The similarity of two call stacks—a measure of likelihood that two error reports were caused by a same error—may be based in part on functions in common, a distance of those functions from the crash point, and an offset distance between the common functions.