Shadow Tracking for Pre-Error Analysis in Real-Time Simulations
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Real-time interactive applications are difficult to troubleshoot due to a lack of tools that provide detailed information about the state before they fail, leading to challenges in identifying the causes of anomalies or failures.
Innovation Solution
A method is implemented to create a time-delayed version of a primary instance of a real-time interactive application, allowing for the preservation of pre-error states by buffering inputs and executing a secondary instance with a configurable delay, enabling inspection and diagnostic functions before an undesired state occurs.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If a primary instance of a real-time interactive application executes in real time, then processing speed and responsiveness are improved, but the ability to detect and analyze error states deteriorates
Solution Approach 1:
The system creates a secondary instance that executes with a time delay behind the primary instance. This secondary instance serves as a preliminary backup that can be paused and inspected before the primary instance encounters an error state, allowing developers to examine the application state at a point before failure occurs.
Solution Approach 2:
The patent creates a copy of the primary application instance (the secondary instance) that processes the same input stream but with a time delay. This copy allows for diagnostic inspection without affecting the real-time performance of the primary instance, enabling error state analysis through the delayed counterpart.
2Loss of information
If developers use crash dumps and logs to troubleshoot failures, then some error information is obtained, but detailed information about the state before failure is lost
Solution Approach 1:
The secondary instance is prepared in advance with a time delay, allowing it to reach the same state as the primary instance did before failure. Developers can pause the secondary instance at this pre-error state and perform detailed inspection, effectively capturing information before it would be lost in a crash dump.
Solution Approach 2:
The system provides feedback about the application state by maintaining a delayed copy that mirrors the primary instance's execution. This feedback mechanism allows developers to observe and analyze the state progression leading up to an error, providing actionable insights that simple crash dumps cannot offer.
3Difficulty of detecting and measuring
If a secondary instance runs with a time delay to preserve pre-error states, then diagnostic capability is improved, but system complexity increases
Solution Approach 1:
Instead of implementing complex diagnostic tools within the primary instance, the system creates a simpler secondary copy that runs with a time delay. This approach trades minimal additional computational resources for significant improvements in diagnostic capability, as the secondary instance essentially mirrors the primary's behavior with a configurable delay.
Solution Approach 2:
The secondary instance serves multiple functions: it acts as a backup, a diagnostic tool, and a means to preserve pre-error states. This multi-functionality reduces the need for separate specialized tools, thereby managing system complexity while providing comprehensive diagnostic capabilities.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
An electronic computing system preserves a pre-error state of a processing unit by receiving a first stream of inputs; buffering the first stream of inputs to generate a buffered stream of inputs identical to the first stream of inputs; conveying the first stream to a primary instance of a first program; conveying the buffered stream to a secondary instance of the first program; executing the primary instance on the first stream in real time; executing the secondary instance on the buffered stream with a predefined time delay with respect to execution of the primary instance on the first stream; detecting an error state resulting from execution of the primary instance; and in response to detecting the error state, pausing the secondary instance and preserving a current state of the secondary instance, wherein the current state of the secondary instance corresponds to a pre-error state of the primary instance.