Multi-Level Java Record Replay for Accurate Malfunction Debugging
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing debug solutions for Java applications suffer from high recording overhead and inaccurate replay, making it difficult to reproduce sporadic malfunctions, which decreases production reliability and extends the duration of unrepaired defects.
Innovation Solution
A multilevel record and replay approach that records nondeterministic execution, arguments, and side effects at various architectural levels, using Java APIs and JVM tool interface agents to minimize overhead and enhance accuracy.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If recording is performed at the system call level to capture all sources of nondeterminism, then replay accuracy is improved, but recording overhead in time and space increases significantly
Solution Approach 1:
The patent segments the recording process into two distinct levels: high-level API calls (e.g., file I/O, network operations) and low-level system calls. The instrumentation captures nondeterministic behavior at the high-level API boundary, avoiding the need to record every individual system call while maintaining replay accuracy. This segmentation reduces recording overhead by filtering out redundant low-level details.
Solution Approach 2:
The patent extracts and records only the essential nondeterministic elements (API calls, inputs, outputs, exceptions) at the high-level boundary, separating them from the detailed system call execution. This extraction approach captures the critical information needed for accurate replay while discarding excessive low-level details that contribute to high recording overhead.
2Measurement precision
If recording is performed at the system call level to capture all sources of nondeterminism, then replay accuracy is improved, but space consumption increases significantly
Solution Approach 1:
The patent segments the information captured into high-level API semantics rather than low-level system call details. By recording at the API boundary, the system captures only the essential nondeterministic elements (API names, parameters, returns, exceptions) without storing redundant system call sequences, thereby reducing space consumption while maintaining replay accuracy.
Solution Approach 2:
The patent extracts only the critical nondeterministic information at the high-level API boundary, separating essential replay data from excessive system call details. This extraction reduces the volume of recorded data stored in the log, decreasing space consumption while preserving the accuracy needed for malfunction reproduction.
3Measurement precision
If manual configuration is used to inject malfunctions for debugging, then debugging precision can be achieved, but developer time and productivity decrease
Solution Approach 1:
The patent implements self-service debugging through automated record and replay functionality. The system automatically records nondeterministic execution paths during normal operation and replays them to reproduce malfunctions without requiring manual intervention. This eliminates the need for developers to manually configure and inject test cases, significantly improving productivity while maintaining debugging precision through accurate replay of recorded execution states.
4Extent of automation
If existing record and replay solutions are used, then automation of debugging is improved, but replay accuracy deteriorates due to incomplete reproduction of malfunctions
Solution Approach 1:
The patent replaces the conventional system call-level recording mechanism with a high-level API boundary recording approach. This substitution captures nondeterministic behavior at the semantically meaningful API level rather than at the low-level system call boundary, improving replay accuracy by preserving the essential program logic and nondeterministic elements that matter for malfunction reproduction while maintaining full automation.
Data Source
AI summary
Here is accelerated debug of more accurate replay of recorded Java execution. Nondeterministic execution, arguments, results, and side effects of subroutines are recorded by instrumentation at various architectural levels for increased accuracy of instrumented replay. In an embodiment, a computer configures for nondeterminism recording all of: a recorded subroutine, a native subroutine that is not a Java method, and a Java method that invokes the native subroutine. The native subroutine is invoked by invoking the Java method. For the native subroutine, instrumentation detects that the Java method already has activated nondeterminism recording. After the Java method finishes, the recorded subroutine is invoked. For the recorded subroutine, instrumentation detects that nondeterminism recording is inactive and should be activated.


