FAST AND ACCURATE DATA RACE DETECTION FOR CONCURRENT PROGRAMS WITH ASYNCHRONOUS CALLS
First Claim
1. A context-sensitive method for analyzing a concurrent program stored in memory, which employs asynchronous function calls for communication and/or recursion, comprising:
- constructing a control flow graph, using a processor, based on a context-sensitive pointer analysis, wherein upon encountering a function pointer, a points-to set of the function pointer is resolved on-the-fly in a context-sensitive fashion to accurately determine a set of potential function calls;
terminating the context-sensitive control flow graph construction when no new potential function calls are encountered that potentially contribute new data races that are not already discovered in existing contexts; and
detecting data races in the concurrent program using the context-sensitive control flow graph which is constructed to not miss any potential data race.
3 Assignments
0 Petitions
Accused Products
Abstract
A system and method for analyzing a concurrent program employ asynchronous function calls for communication and recursion. A control flow graph is constructed based on a context-sensitive pointer analysis, whereupon encountering a function pointer, a points-to set of the function pointer is computed in a context-sensitive fashion to determine a set of potential function calls. The context-sensitive pointer analysis is terminated when no new potential function calls are encountered and where the potential function calls may contribute new data races other than those that exist in the contexts traversed thus far. To decide this, a characterization of pointer aliasing based upon complete update sequences is employed. A set of contexts that may contribute to different data races are enumerated by tracking update sequences for function and lock pointers and pointers that are shared or point to shared memory locations. Data race detection is carried out on the control flow graph.
25 Citations
12 Claims
-
1. A context-sensitive method for analyzing a concurrent program stored in memory, which employs asynchronous function calls for communication and/or recursion, comprising:
-
constructing a control flow graph, using a processor, based on a context-sensitive pointer analysis, wherein upon encountering a function pointer, a points-to set of the function pointer is resolved on-the-fly in a context-sensitive fashion to accurately determine a set of potential function calls; terminating the context-sensitive control flow graph construction when no new potential function calls are encountered that potentially contribute new data races that are not already discovered in existing contexts; and detecting data races in the concurrent program using the context-sensitive control flow graph which is constructed to not miss any potential data race. - View Dependent Claims (2, 3, 4)
-
-
5. A computer readable storage medium comprising a computer readable program for analyzing a concurrent program stored in memory, which employs asynchronous function calls for communication and/or recursion, wherein the computer readable program when executed on a computer causes the computer to perform the steps of:
-
constructing a control flow graph, using a processor, based on a context-sensitive pointer analysis, wherein upon encountering a function pointer, a points-to set of the function pointer is resolved on-the-fly in a context-sensitive fashion to accurately determine a set of potential function calls; terminating the context-sensitive control flow graph construction when no new potential function calls are encountered that potentially contribute new data races that are not already discovered in existing contexts; and detecting data races in the concurrent program using the context-sensitive control flow graph which is constructed to not miss any potential data race. - View Dependent Claims (6, 7, 8)
-
-
9. A system for analyzing a concurrent program stored in memory, which employs asynchronous function calls for communication and/or recursion, comprising:
-
a program application stored on program storage media and configured to construct a control flow graph for a concurrent program being analyzed, the control flow graph being constructed based on a context-sensitive pointer analysis executed by the program application, wherein upon encountering a function pointer in the concurrent program, a points-to set of the function pointer is computed in a context-sensitive fashion to accurately determine a set of potential function calls, the context-sensitive pointer analysis being terminated when no new potential function calls are encountered such that no new potential function calls are determined using a characterization of pointer aliasing encountered based upon complete update sequences to decide whether new aliases are discoverable; and a processor configured to detect data races in the concurrent program using the control flow graph which includes resolved context sensitive pointers. - View Dependent Claims (10, 11, 12)
-
Specification