Software variation for robustness through randomized execution contexts
First Claim
1. A computer-implemented method for improving the robustness of a software program execution, the method comprising:
- initiating execution of the program;
determining an execution context for the program that is error tolerant; and
allowing the program to execute according to the error tolerant execution context.
2 Assignments
0 Petitions
Accused Products
Abstract
Improved robustness of software program executions is achieved via randomization of their execution contexts. For instance, errors related to runtime allocation of memory on the heap can be probabilistically addressed by generating an approximation of the infinite heap and using a randomized memory manager to allocate memory on the heap. In addition to stand alone randomization, several replicas of a software program are executed, each with a memory manager configured with different randomization seeds for randomly allocating memory on an approximation of an infinite heap. Outputs of correctly executing instances of the replicas are determined by accepting the output that at least two of the replicas agree upon.
-
Citations
25 Claims
-
1. A computer-implemented method for improving the robustness of a software program execution, the method comprising:
-
initiating execution of the program;
determining an execution context for the program that is error tolerant; and
allowing the program to execute according to the error tolerant execution context. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer implemented method for randomized management of runtime heap-based memory associated with an executing software program, the method comprising:
-
receiving a call related to managing runtime heap-based memory; and
handling the call in accordance with a runtime system configured to manage a heap which is an approximation of an infinite heap. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computer implemented method for improving robustness of a software program execution, the method comprising:
-
initiating execution of a plurality of replicas of the software program;
generating approximations of infinite heaps correspondingly associated with each of the replicas, wherein each replica has associated therewith a different randomization seed for randomizing allocation of the memory on their respective approximation of the infinite heap;
periodically comparing data outputs of at least some of the replicas; and
accepting as an output of correctly executing programs, the output agreed upon by at least two of the plurality of replicas. - View Dependent Claims (16, 17, 18, 19, 20)
-
-
21. The runtime system for heap-based memory management related to execution of a software program, the system comprising a memory manager programmed to be operable for:
-
generating a heap to be associated with the software program that approximates infinite heap semantics;
receiving requests for allocating heap memory from the program; and
in response to receiving the requests, allocating randomly selected locations on the approximated infinite heap. - View Dependent Claims (22, 23, 24)
-
-
25. At least one computer-readable medium useful in conjunction with a computer, the computer comprising at least one processor and memory, the computer-readable medium having stored thereon computer executable instructions for improving robustness of a software program execution method, the method comprising:
-
initiating execution of a plurality of replicas of the software program;
generating heaps correspondingly associated with each of the replicas having semantics that are approximations of those of an infinite heap, filling the heaps of at least some of the replicas with random values generated using a different randomization seed;
in response to requests for memory allocation by the replicas, allocating memory on the respective approximations of the infinite heap;
periodically comparing data outputs of at least some of the replicas; and
accepting as an output of correctly executing programs, the output agreed upon by at least two of the plurality of replicas.
-
Specification