Parametric and Sliced Causality

Happen-before causal partial orders have been widely used in concurrent program verification and testing. This paper presents a parametric approach to happen-before causal partial orders. Existing variants of happen-before relations can be obtained as instances of the parametric framework. A novel causal partial order, called sliced causality, is then defined also as an instance of the parametric framework, which loosens the obvious but strict happen-before relation by considering static and dynamic dependence information about the program. Sliced causality has been implemented in a runtime predictive analysis tool for JAVA, named jPREDICTOR, and the evaluation results show that sliced causality can significantly improve the capability of concurrent verification and testing.

[1]  Koushik Sen,et al.  Runtime safety analysis of multithreaded programs , 2003, ESEC/FSE-11.

[2]  Volker Diekert,et al.  The Book of Traces , 1995 .

[3]  Gul Agha,et al.  Online Efficient Predictive Safety Analysis of Multithreaded Programs , 2004, TACAS.

[4]  Tibor Gyimóthy,et al.  An efficient relevant slicing method for debugging , 1999, ESEC/FSE-7.

[5]  Peter Winkler,et al.  Counting linear extensions is #P-complete , 1991, STOC '91.

[6]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[7]  Jens Krinke,et al.  Static slicing of threaded programs , 1998, PASTE '98.

[8]  Barton P. Miller,et al.  Improving the accuracy of data race detection , 1991, PPOPP '91.

[9]  Vijay K. Garg,et al.  Detecting Temporal Logic Predicates in Distributed Programs Using Computation Slicing , 2003, OPODIS.

[10]  Selmer M. Johnson Generation of permutations by adjacent transposition , 1963 .

[11]  Grigore Rosu,et al.  Parametric and Termination-Sensitive Control Dependence , 2006, SAS.

[12]  Grzegorz Rozenberg,et al.  Dependence Graphs , 1995, The Book of Traces.

[13]  Keith Marzullo,et al.  Consistent detection of global predicates , 1991, PADD '91.

[14]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[15]  Leslie Lamport,et al.  Distributed snapshots: determining global states of distributed systems , 1985, TOCS.

[16]  Eitan Farchi,et al.  Concurrent bug patterns and how to test them , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[17]  Thomas R. Gross,et al.  Object race detection , 2001, OOPSLA '01.

[18]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[19]  Grigore Rosu,et al.  Parametric and Termination-Sensitive Control Dependence - Extended Abstract , 2006 .

[20]  Patrice Godefroid,et al.  Dynamic partial-order reduction for model checking software , 2005, POPL '05.

[21]  Grigore Rosu,et al.  Predicting Concurrency Errors at Runtime using Sliced Causality , 2005 .

[22]  Yanhong A. Liu,et al.  Efficient Detection of Global Properties in Distributed Systems Using Partial-Order Methods , 2000, CAV.

[23]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[24]  Jong-Deok Choi,et al.  Hybrid dynamic data race detection , 2003, PPoPP '03.

[25]  Koushik Sen,et al.  Detecting Errors in Multithreaded Programs by Generalized Predictive Analysis of Executions , 2005, FMOODS.

[26]  Thomas W. Reps,et al.  The use of program dependence graphs in software engineering , 1992, International Conference on Software Engineering.