Associative Registry for Multi-threaded Debugging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current debugging methods for complex software programs, such as SAP HANA DB, face limitations in handling memory leaks and object destruction issues due to reference counting errors, particularly in multi-threaded applications, where existing solutions require annotating objects and have a limited capacity for collected references, leading to resource constraints and potential program crashes.

Innovation Solution

A system and method utilizing an associative registry to collect debugging information without annotating referenced objects, allowing for an unlimited number of debug references, which generates association records with timestamps and call stack traces, and performs lifecycle checks to identify and report reference count errors and object leaks, enhancing scalability and debugging capabilities.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If anchor objects are added to each referenced object to store reference information, then debugging information can be collected, but memory consumption increases and the system becomes more complex

Engineering Contradiction:
Improvedebugging informationVSAvoidsystem complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The patent introduces an associative registry as an intermediary component that stores the mapping between objects and their reference information. Instead of embedding anchor objects within each referenced object, the registry acts as a separate mediator that holds all reference data, thereby reducing per-object complexity while maintaining complete debugging information.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The reference information is extracted from the referenced objects themselves and stored externally in the associative registry. This separation removes the burden of storing anchor objects within each object, reducing memory overhead and system complexity while preserving all necessary debugging data in the registry.

Inventive Principle:
Principle #2Taking out (Extraction)

2Quantity of substance

If anchor objects with fixed size are used to store reference information, then memory management is simplified, but the number of collectable references is limited

Engineering Contradiction:
Improvenumber of referencesVSAvoidmemory management
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent employs dynamic data structures (such as hash maps or dictionaries) in the associative registry to store reference information. This allows the registry to dynamically expand its capacity to accommodate any number of references without being constrained by fixed-size anchor objects, while the underlying dynamic allocation handles memory management efficiently.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The associative registry serves as a universal storage mechanism that can handle an unlimited number of references to various objects. Unlike fixed-size anchor objects that are object-specific, the registry provides a multi-functional solution that can store and manage references to any object in the system, regardless of the number of references.

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

3Reliability

If reference information is stored in anchor objects within each object, then debugging can be performed, but memory leaks and resource consumption increase

Engineering Contradiction:
Improvebug detection capabilityVSAvoidmemory resource consumption
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The associative registry acts as a centralized intermediary that consolidates all reference information in one location. This eliminates the need for duplicate anchor objects in each referenced object, reducing redundant memory consumption while maintaining the ability to detect bugs through comprehensive reference tracking in the registry.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

Instead of storing full anchor objects with all reference information in each referenced object, the patent stores only necessary pointers or keys in the registry that reference the actual object. This copying approach reduces memory overhead by avoiding redundant storage of the same reference information across multiple objects.

Inventive Principle:
Principle #26Copying

4Loss of information

If debugging information is collected for all references, then complete debugging coverage is achieved, but performance degradation occurs

Engineering Contradiction:
Improvedebugging coverageVSAvoidsystem performance
Core Design Contradiction:
Loss of informationVSProductivity

Solution Approach 1:

The patent extracts the overhead of storing reference information from the critical execution path by using a separate associative registry. This allows reference tracking to occur without impacting the performance of object operations, as the registry operations are decoupled from the main execution flow while maintaining complete debugging coverage.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS10725846B1Reference debugging using associative registry
Publication Date: 2020.07.28 SAP SE
  • US10725846B1 patent drawing
  • US10725846B1 patent drawing

AI summary

A system and method of collecting debugging information for code running in a multi-threaded computing system. An association record is generated in an associative registry. The association record has a timestamp, an object pointer and/or further information. Upon detection of a bug, the computing system generates a debug report based on the association record and the detected bug, the debug reference comprising a reference type that references a portion of the code running in the multi-threaded computing system. Based on the debug reference, a lifecycle check of the portion of the code running in the multi-threaded computing system is generated, the lifecycle check annotating the bug within the portion of the code running in the multi-threaded computing system.