Topological, on-the-fly classification of objects into a global set and local sets
OwnerMark Christiaensinventor
Life of this patent
Estimating the term…
Abstract
The present invention relates to concurrently executing program threads in computer systems, an more particularly to detecting data races. A computer implemented method for detecting data races in the execution of multi-threaded, strictly object oriented programs is provided, whereby objects on a heap are classified in a set of global objects, containing objects that can be reached by more than one thread, and sets of local objects, containing objects that can only be reached by one thread. Only the set of global objects is observed for determining occurrence of data races.
Claims27
A computer implemented method for classifying objects into a set of global objects, containing objects that can be reached by more than one thread, and a set of local objects, containing objects that can only be reached by one thread, when executing multi-threaded programs, whereby the classifying is done dynamically by observing modifications to references to objects by operations performed in the computer system.
A computer implemented method for detecting inconsistent dynamic concurrency state transitions in the execution of multi-threaded programs amenable to object reachability analysis, the method comprising the steps of:
- executing multiple threads on a computer;
- at least periodically during execution of the threads classifying instantiated objects into a set of global objects (503;
- 1508), containing objects that can be reached by more than one thread, and sets of local objects (504;
- 1505, 1506, 1507), containing objects that can only be reached by one thread, and
- recording in a memory concurrency state transition information of global objects.
A computer implemented method for determining the order of events in the presence of a dynamically changing number of threads of a computer program executable on a computer, wherein a clock data structure (601) is maintained in memory from which clock data structure the occurrence of two events in parallel during execution of the threads can be determined, the dimension of the clock data structure (601) being determined dynamically dependent upon the number of threads created and destroyed during execution of the program.
Dependencies are inferred from the claim text.