Effective Predictive Runtime Analysis Using Sliced Causality and Atomicity

Predictive runtime analysis has been proposed to improve the effectiveness of concurrent program analysis and testing. By observing one execution trace of the running system, predictive runtime analysis extracts a causality relation among runtime events, which is then used as an abstract model of the program and checked against desired properties. This way, one can predict concurrency errors without actually hitting them and without re-executing the program. The quality of the extracted causality relation directly determines the effectiveness of predictive runtime analysis. This paper presents an efficient and sound approach to compute sliced causality and sliced atomicity. These significantly improve upon existing causalities: irrelevant causal relationships are removed using an apriori static analysis process based on control and data dependence, and on property relevance and atomicity analysis. The algorithms presented in this paper have been implemented and extensively evaluated. The results show that the proposed technique is effective and sound: we found the previously known concurrency bugs as well as some unknown errors in popular systems, like the Tomcat webserver and the Apache FTP server, without any false alarms.

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

[2]  Scott D. Stoller,et al.  Accurate and efficient runtime detection of atomicity errors in concurrent programs , 2006, PPoPP '06.

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

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

[5]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

[6]  Grigore Rosu,et al.  Mop: an efficient and generic runtime verification framework , 2007, OOPSLA.

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

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

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

[10]  Koen De Bosschere,et al.  TRaDe: Data Race Detection for Java , 2001, International Conference on Computational Science.

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

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

[13]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multithreaded programs , 1997, TOCS.

[14]  Eitan Farchi,et al.  Multithreaded Java program test generation , 2001, JGI '01.

[15]  Alexander Aiken,et al.  Effective static race detection for Java , 2006, PLDI '06.

[16]  Grigore Rosu,et al.  Parametric and Sliced Causality , 2007, CAV.

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

[18]  Stephen N. Freund,et al.  Atomizer: a dynamic atomicity checker for multithreaded programs , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..