Queryable Memory Resources via Execution Trace Handles

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging software code is challenging due to the rarity and randomness of undesired software behaviors, making it difficult for developers to identify and diagnose issues such as execution crashes, runtime exceptions, and data corruption, especially since these can be triggered by various factors and are hard to reproduce.

Innovation Solution

The approach involves leveraging execution traces to expose memory-backed objects as queryable resources, allowing developers to process queries against the lifetime of these objects. This is achieved by identifying handles that represent the memory covered by objects over time, enabling queries that determine memory usage at specific points or periods, and comparing query conditions to execution times represented in associations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If execution traces are recorded with bit-accurate fidelity, then measurement precision of memory state is improved, but device complexity and storage requirements increase

Engineering Contradiction:
Improvememory state fidelityVSAvoidtracing system complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent extracts only the necessary memory state information at specific time points rather than recording every memory detail continuously. By selecting key frames and critical memory states from the execution trace, the system achieves sufficient measurement precision for debugging while significantly reducing the volume of stored data and system complexity.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The execution trace is segmented into discrete time points and memory states rather than being recorded as a continuous stream. This segmentation allows the system to capture essential memory state information at critical moments while avoiding the complexity of tracking every memory operation continuously, thus balancing precision with manageability.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If memory is exposed as a flat structure, then ease of operation is improved, but loss of information about memory object lifetime and relationships occurs

Engineering Contradiction:
Improvememory access simplicityVSAvoidmemory object lifetime information
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The patent introduces memory objects as intermediary entities that wrap raw memory addresses. These memory objects maintain the simplicity of address-based access while adding metadata about lifetime, allocation source, and relationships. The memory objects act as mediators between the simple flat memory structure and the complex temporal information, allowing developers to query memory state at specific times without complicating basic access operations.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent adds a temporal dimension to the flat memory structure by associating memory addresses with specific execution time points. Instead of merely exposing memory as a static flat structure, the system exposes memory states at different times, enabling queries about memory content and relationships at any point in the execution timeline while maintaining the simplicity of address-based access.

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

3Measurement precision

If developers manually track memory usage, then measurement precision of memory state is improved, but loss of time for debugging increases

Engineering Contradiction:
Improvememory state accuracyVSAvoiddebugging time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The system performs self-service by automatically recording memory states and generating execution traces without requiring manual intervention from developers. The tracing infrastructure automatically captures memory allocation, deallocation, and state changes, providing precise memory usage information that would otherwise require manual tracking tools and significant developer time investment.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent performs preliminary action by recording memory states and execution traces during normal program operation before debugging is needed. By capturing this information in advance, the system enables developers to query and analyze memory usage patterns, identify issues, and resolve problems without requiring time-consuming manual tracking during the actual debugging process.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11442842B2Exposing memory-backed objects as queryable memory resources
Publication Date: 2022.09.13 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11442842B2 patent drawing
  • US11442842B2 patent drawing
  • US11442842B2 patent drawing

AI summary

This disclosure relates to the use of execution traces to process queries against objects over their lifetime. Embodiments identify, from a trace, a memory-backed object that existed during a prior execution of an entity. A handle for logically representing memory covered by the object over the object's lifetime is identified. A plurality of associations that are represented by the handle are identified. These associations identify memory addresses that were covered by the object over its lifetime. Each association represents at least (i) a memory address that was covered by the object during its lifetime, and (ii) an execution time during the object's lifetime at which the memory address was covered by the object. A query is processed against the handle. The query includes a query based on an execution time, and processing the query includes comparing the execution time in the query to execution time(s) represented in the associations.