Hot Update Method Resolving Ambiguous Symbols in Running Code

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveprogram downtimeVSAvoidautomation of hot update process
Core Design Contradiction:
Loss of timeVSExtent of automation

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.

Inventive Principle:
Principle #25Self-service

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.

Inventive Principle:
Principle #23Feedback

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

Engineering Contradiction:
Improvesafety of hot updateVSAvoidease of applying hot update
Core Design Contradiction:
ReliabilityVSEase of operation

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.

Inventive Principle:
Principle #25Self-service

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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

Engineering Contradiction:
Improvesafety guarantee of hot updateVSAvoidspeed of hot update application
Core Design Contradiction:
ReliabilityVSProductivity

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.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

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.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS8261247B2Method of modifying code of a running computer program based on symbol values discovered from comparison of running code to corresponding object code
Publication Date: 2012.09.04 ORACLE INT CORP
  • US8261247B2 patent drawing
  • US8261247B2 patent drawing

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.