Runtime safety analysis of multithreaded programs

Foundational and scalable techniques for runtime safety analysis of multithreaded programs are explored in this paper. A technique based on vector clocks to extract the causal dependency order on state updates from a running multithreaded program is presented, together with algorithms to analyze a multithreaded computation against safety properties expressed using temporal logics. A prototype tool implementing our techniques, is also presented, together with examples where it can predict safety errors in multithreaded programs from successful executions of those programs. This tool is called Java MultiPathExplorer (JMPaX), and available for download on the web. To the best of our knowledge, JMPaX is the first tool of its kind.

[1]  Grigore Rosu,et al.  Monitoring programs using rewriting , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

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

[3]  Mikko H. Lipasti,et al.  Verifying sequential consistency using vector clocks , 2002, SPAA '02.

[4]  Zohar Manna,et al.  Temporal verification of reactive systems - safety , 1995 .

[5]  Grigore Rosu,et al.  Monitoring Java Programs with Java PathExplorer , 2001, RV@CAV.

[6]  Scott D. Stoller,et al.  Detecting global predicates in distributed systems with clocks , 1997, Distributed Computing.

[7]  Mahesh Viswanathan,et al.  Runtime Assurance Based On Formal Specifications , 1999, PDPTA.

[8]  SenKoushik,et al.  Runtime safety analysis of multithreaded programs , 2003 .

[9]  Grigore Rosu,et al.  Electronic Notes in Theoretical Computer Science: Preface , 2001 .

[10]  Mahesh Viswanathan,et al.  Java-MaC: a Run-time Assurance Tool for Java Programs , 2001, RV@CAV.

[11]  Stephan Merz,et al.  Model Checking , 2000 .

[12]  Vijay K. Garg,et al.  Detection of global predicates: Techniques and their limitations , 1998, Distributed Computing.

[13]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[14]  Grigore Rosu,et al.  Synthesizing Monitors for Safety Properties , 2002, TACAS.

[15]  Friedemann Mattern,et al.  Virtual Time and Global States of Distributed Systems , 2002 .

[16]  Colin J. Fidge,et al.  Partial orders for parallel debugging , 1988, PADD '88.