Automating comprehensive safety analysis of concurrent programs using verisoft and TXL

In run-time safety analysis the executions of a concurrent program are monitored and analyzed with respect to safety properties. Similar to testing, run-time analysis is quite efficient, but it also tends to be incomplete. The results pertain only to the observed executions which may constitute just a small subset of all possible executions. In this paper, we describe a tool called ViP which uses the software model checker VeriSoft to perform comprehensive run-time safety analyses of concurrent C/C++ programs. A ViP analysis proceeds in three fully automated steps: First, the input program is prepared for a VeriSoft analysis through instrumentation. Next, VeriSoft is invoked to generate the traces corresponding to all possible executions of the program. Then, the traces are checked efficiently for specification violations. The instrumentation is based on the source code transformation language TXL. TXL allows for the instrumentation to be described in terms of rewrite rules and gives ViP a remarkable amount of flexibility. The paper describes ViP together with its use of VeriSoft and TXL. Several sample analyses are discussed to illustrate the use of ViP.

[1]  Ahmed E. Kamal,et al.  High-speed local area networks and their performance: a survey , 1991, CSUR.

[2]  E. Stewart Lee,et al.  The Principles and Performance of Hubnet: A 50 Mbit/s Glass Fiber Local Area Network , 1983, IEEE J. Sel. Areas Commun..

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

[4]  Matthew B. Dwyer,et al.  Bogor: an extensible and highly-modular software model checking framework , 2003, ESEC/FSE-11.

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

[6]  Gerard J. Holzmann,et al.  Automating software feature verification , 2000, Bell Labs Technical Journal.

[7]  Satish Chandra,et al.  Software model checking in practice: an industrial case study , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[8]  Mahesh Viswanathan,et al.  Verisim: Formal analysis of network simulations , 2000, ISSTA '00.

[9]  Kevin A. Schneider,et al.  Source transformation in software engineering using the TXL transformation system , 2002, Inf. Softw. Technol..

[10]  Gary L. Peterson,et al.  Myths About the Mutual Exclusion Problem , 1981, Inf. Process. Lett..

[11]  Gregor von Bochmann,et al.  An automatic trace analysis tool generator for Estelle specifications , 1995, SIGCOMM '95.

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

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

[14]  Koushik Sen,et al.  Efficient decentralized monitoring of safety in distributed systems , 2004, Proceedings. 26th International Conference on Software Engineering.

[15]  Narciso Martí-Oliet,et al.  The Maude System , 1999, RTA.

[16]  Jürgen Dingel,et al.  Computer-assisted assume/guarantee reasoning with VeriSoft , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[17]  Patrice Godefroid,et al.  Partial-Order Methods for the Verification of Concurrent Systems , 1996, Lecture Notes in Computer Science.

[18]  James R. Cordy,et al.  Unique renaming of Java using source transformation , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[19]  Klaus Havelund,et al.  Model Checking Programs , 2004, Automated Software Engineering.

[20]  Grigore Rosu,et al.  An Overview of the Runtime Verification Tool Java PathExplorer , 2004, Formal Methods Syst. Des..

[21]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[22]  Patrice Godefroid,et al.  Model checking for programming languages using VeriSoft , 1997, POPL '97.

[23]  Jakob Rehof,et al.  Zing: A Model Checker for Concurrent Software , 2004, CAV.

[24]  M. Robby,et al.  Bogor : An Extensible and Highly Modular Model Checking Framework , 2003 .