Hot Update Method Resolving Ambiguous Symbols in Running Code
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing hot update systems for computer programs require significant human intervention or programmer labor to handle ambiguous symbols and compiler variations, making them unsafe and inefficient for updating running programs without restarting.
Innovation Solution
A method that automatically determines symbol values and handles compiler differences by comparing the running program's object code with the patched object code, allowing for safe and automated hot updates without requiring special preparation or human assistance, using a multi-step process to create a primary module that replaces functions and redirects execution flow.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If existing hot update systems are used to update running programs, then program updates can be performed without restarting, but significant human intervention and programmer labor are required to handle ambiguous symbols and compiler variations
Solution Approach 1:
The system performs self-service by automatically comparing running object code with patched object code to resolve ambiguous symbols and determine correct symbol values without requiring human programmer intervention. The comparison process autonomously identifies differences and applies corrections, making the hot update process self-sufficient.
Solution Approach 2:
The system uses feedback by comparing the actual running object code against the patched object code and using the discovered differences to guide the update process. This feedback mechanism allows the system to automatically adapt to compiler variations and resolve ambiguous symbols based on actual runtime behavior rather than relying on static analysis or human inspection.
2Reliability
If existing hot update systems are used to update running programs, then updates can be applied without restarting, but the systems cannot safely determine values for ambiguous symbols without significant human intervention
Solution Approach 1:
The system autonomously determines symbol values by comparing running object code with patched object code, eliminating the need for human programmers to manually inspect and resolve ambiguous symbols. This self-service approach maintains safety guarantees while dramatically simplifying the operation process.
Solution Approach 2:
The comparison process acts as an intermediary between the patched code and the running program, automatically resolving ambiguities by discovering actual symbol values from the running object code. This intermediary mechanism safely bridges the gap between static patch definitions and dynamic runtime behavior without requiring human intervention.
3Reliability
If manual inspection and intervention are used to handle ambiguous symbols in hot updates, then safety can be maintained, but significant programmer labor and time are required
Solution Approach 1:
The system replaces the mechanical process of manual programmer inspection and intervention with an automated computational comparison process. By substituting human cognitive labor with algorithmic object code comparison, the system maintains safety guarantees while dramatically increasing productivity and reducing the time required to apply hot updates.
Solution Approach 2:
The automated comparison process performs self-service by independently discovering symbol values and resolving ambiguities without human assistance, thereby eliminating the productivity bottleneck of manual inspection while preserving safety through systematic verification of code differences.
Data Source
AI summary
In a method of modifying code of a running computer program so as to modify the running computer program without having to restart the running computer program for changes to the running computer program to take effect, the improvement is disclosed of: (a) comparing differences in the running program's running binary code versus object code produced by compiling the running program's source code and (b) using the results of step (a), determining what values to use for symbols in said changes to the program. The compiling may be performed using either the compiler originally used to compile the running program or a different compiler. A data storage medium having instructions stored therein for a computer to perform the improved method is also disclosed.

