Two-Pass Stack Trace Analysis for Failure Location Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In extensible applications with multiple adapters and code sources, identifying the origin of failures during execution is challenging, as it is unclear whether the failure stems from the base application or one of the adapters, making debugging and fault resolution difficult.

Innovation Solution

A two-pass stack trace analysis is employed, where the first pass flags suspect types within stack frames, and the second pass analyzes associated assemblies to find matching types, isolating the responsible code and providing metadata for responsible parties, enabling effective error handling and debugging.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If a two-pass stack trace analysis is performed to identify failure locations, then measurement precision of failure origin is improved, but loss of time increases due to analyzing multiple stack frames and assemblies

Engineering Contradiction:
Improvefailure location identification accuracyVSAvoiddebugging time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The failure analysis process is divided into two distinct passes: first pass analyzes stack frames to identify suspect types, second pass analyzes assemblies to pinpoint exact failure locations. This segmentation allows comprehensive analysis while organizing the complex debugging process into manageable stages, improving precision without overwhelming the user with a single monolithic analysis.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The first pass performs preliminary analysis by identifying suspect types in stack frames before the second pass analyzes the actual assemblies. This preliminary action filters down the search space, so the second pass only needs to examine assemblies associated with already-identified suspect types, significantly reducing the overall analysis time while maintaining high precision.

Inventive Principle:
Principle #10Preliminary action

2Loss of information

If comprehensive metadata is collected from multiple code sources, then information completeness is improved, but device complexity increases due to managing multiple assembly files and type information

Engineering Contradiction:
Improvefailure context informationVSAvoiddata structure complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The system merges type information from multiple sources (stack frames, assembly files, external adapters) into a unified data structure that tracks called types, their sources, and associated metadata. This consolidation allows comprehensive information collection while managing complexity through a single integrated view rather than separate data structures for each source.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent introduces an intermediary data structure (the list of called types with metadata) that mediates between the complex raw data from multiple assemblies and the simplified failure identification output. This intermediary organizes and standardizes information from diverse sources, making it manageable and queryable without exposing the underlying complexity to the user or higher-level processes.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If assembly analysis is performed to identify suspect types, then reliability of failure identification is improved, but productivity decreases due to the additional analysis step

Engineering Contradiction:
Improvefailure origin accuracyVSAvoiddebugging efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The second pass performs analysis only on assemblies associated with suspect types identified in the first pass, rather than analyzing all assemblies in the application. This partial action approach maintains high reliability by focusing on relevant code while improving productivity by avoiding unnecessary analysis of unrelated assemblies, thus balancing thoroughness with efficiency.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS7971100B2Failure location detection using types in assembly files
Publication Date: 2011.06.28 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7971100B2 patent drawing
  • US7971100B2 patent drawing
  • US7971100B2 patent drawing

AI summary

A failure identification routine uses a two pass stack trace analysis in conjunction with a list of called types. As each method is called, a call list is generated with the called type, method, and various metadata. During the first pass stack trace analysis, each stack frame is analyzed to determine if the failed type is included in the stack frame. If so, the method associated with the frame is flagged as suspect. If the failed type is not found in the first stack trace, a second pass stack trace analysis is performed and an assembly associated with the method associated with the stack frame is analyzed to determine a set of types. The set of types are analyzed to find at least one match with the called types. If a match exists, the methods associated with the matched types are flagged as suspect.