Thread Dump Call-Stack Tree Representation for Root Cause Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Complex computer systems running complex applications often become unresponsive due to issues like deadlocks or resource shortages, making it difficult to diagnose the cause from large amounts of execution data in thread dumps, which lack informative log files.

Innovation Solution

A method for representing call-stacks in thread dumps by grouping threads with common actions and generating a tree structure, along with condensing call-stack fragments into readable descriptions, to facilitate analysis and identify the root cause of unresponsiveness.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If thread dumps are analyzed in their original format with all individual call-stacks, then complete execution data is available, but the analysis complexity and time required increase significantly

Engineering Contradiction:
Improveexecution data completenessVSAvoidanalysis time
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The patent segments the large volume of thread dump data by grouping threads based on their call-stack patterns. Threads with similar execution patterns are clustered together, dividing the monolithic analysis task into manageable segments that can be processed more efficiently.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent merges threads with identical or similar call-stacks into consolidated representations. By combining multiple threads that follow the same execution path, the system reduces redundant information while preserving the essential execution data needed for diagnosis.

Inventive Principle:
Principle #5Merging (Combining)

2Measurement precision

If all threads are analyzed individually to identify the root cause, then detailed thread-specific information is obtained, but the overall complexity of the analysis process increases

Engineering Contradiction:
Improvediagnosis accuracyVSAvoidanalysis complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The analysis process is segmented into distinct phases: first grouping threads by call-stack similarity, then analyzing representative threads from each group. This segmentation reduces complexity by eliminating the need to individually examine every thread while maintaining diagnostic precision through systematic sampling.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent creates a universal analysis approach that handles different thread types through a common grouping mechanism. The same clustering algorithm and analysis procedures are applied uniformly across all threads, simplifying the overall process while adapting to diverse thread behaviors through the grouping logic.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Quantity of substance

If no log files are written to monitor system state, then storage space is conserved, but diagnostic information is lost when problems occur

Engineering Contradiction:
Improvestorage spaceVSAvoiddiagnostic information
Core Design Contradiction:
Quantity of substanceVSLoss of information

Solution Approach 1:

The patent creates a compressed copy of the essential execution state through call-stack grouping. Instead of storing complete log files for all threads, the system generates a condensed representation that captures the critical execution patterns, providing diagnostic information with minimal storage overhead.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS8099631B2Call-stacks representation for easier analysis of thread dump
Publication Date: 2012.01.17 SAP SE
  • US8099631B2 patent drawing
  • US8099631B2 patent drawing
  • US8099631B2 patent drawing

AI summary

Computer systems and methods for call-stacks representation for easier analysis of thread dumps. Execution data for a number of process threads are accessed by a parser in a thread dump wherein execution data includes a number of call-stacks. Process threads have corresponding call-stacks comprising information about active program subroutines of the thread. Threads are grouped in a number of sets that include threads with one or more actions in common. The sets correspond to a same action or subroutine in the call-stacks of the grouped threads. A tree representation of the execution data is generated based on the active actions in the call-stacks. In the tree representation, a first set of grouped threads is a child to a second set of grouped threads when the action corresponding to the first set is invoked by the subroutine corresponding to the second set.