Concurrency analysis in the presence of procedures using a data-flow framework

Although the data-flow framework is a powerful tool to statically analyze a program, current data-flow analysis techniques have not addressed the effect of procedures on concurrency analysis. This work develops a data race detection technique using a data-flow framework that analyzes concurrent events in a program in which tasks and procedures interact. There are no restrictions placed on the interactions between procedures and tasks, and thus recursion is permitted. Solving a system of data-flow equations, the technique computes a partial execution order for regions in the program by considering the control flow within a program unit, communication between tasks, and the cdlinglcreation context of procedures and tasks. From the computed execution order, concurrent events are determined as unordered events. We show how the information about concurrent events can be used in debugging to automatically detect data races.

[1]  Richard N. Taylor,et al.  Anomaly Detection in Concurrent Software by Static Data Flow Analysis , 1980, IEEE Transactions on Software Engineering.

[2]  Barbara G. Ryder,et al.  A model of Ada programs for static deadlock detection in polynomial times , 1991, PADD '91.

[3]  Richard N. Taylor,et al.  A general-purpose algorithm for analyzing concurrent programs , 1983, CACM.

[4]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[5]  Richard N. Taylor,et al.  Combining Static Concurrency Analysis with Symbolic Execution , 1988, IEEE Trans. Software Eng..

[6]  Ken Kennedy,et al.  Analysis of event synchronization in a parallel programming tool , 1990, PPOPP '90.

[7]  Lori A. Clarke,et al.  Task interaction graphs for concurrency analysis , 1989, ICSE '89.

[8]  Keith D. Cooper,et al.  Analyzing aliases of reference formal parameters , 1985, POPL.

[9]  Charles E. McDowell,et al.  A Practical Algorithm for Static Analysis of Parallel Programs , 1989, J. Parallel Distributed Comput..

[10]  William E. Riddle,et al.  Anomaly Detection in Concurrent Programs , 1979, ICSE.

[11]  G RyderBarbara,et al.  A model of Ada programs for static deadlock detection in polynomial times , 1991 .

[12]  Lori A. Clarke,et al.  Task Interaction Graph: An Intermediate Representation for Concurrency , 1988 .

[13]  Robert E. Tarjan,et al.  A fast algorithm for finding dominators in a flowgraph , 1979, TOPL.

[14]  Jaspal Subhlok,et al.  Static analysis of low-level synchronization , 1988, PADD '88.

[15]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.