jpf-concurrent: An extension of Java PathFinder for java.util.concurrent

One of the main challenges when verifying multi-threaded Java applications is the state space explosion problem. Due to thread interleavings, the number of states that the model checker has to verify can grow rapidly and impede the feasibility of verification. In the Java language, the source of thread interleavings can be the system under test as well as the Java Development Kit (JDK) itself. In our paper, we propose a method to minimize the state space explosion problem for applications verified under the Java PathFinder (JPF) model checker. Our method is based on abstracting the state of the application to a smaller domain and implementing application behavior using the Model Java Interface (MJI) of JPF. To show the capabilities of our approach, we have created a JPF extension called jpf-concurrent which abstracts classes from the Java Concurrency Utilities. Several benchmarks proved the usefulness of our approach. In all cases, our implementation was faster than the JDK implementation when running under the JPF model checker. Moreover, our implementation led to significantly smaller state spaces.

[1]  Klaus Havelund,et al.  Model checking programs , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[2]  Jeremy Manson,et al.  The Java memory model , 2005, POPL '05.

[3]  Cyrille Artho,et al.  Efficient Model Checking of Networked Applications , 2008, TOOLS.

[4]  Cyrille Artho,et al.  Cache-Based Model Checking of Networked Applications: From Linear to Branching Time , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[5]  Mateusz Ujma,et al.  JPF-AWT: Model checking GUI applications , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[6]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[7]  Christel Baier,et al.  Principles of model checking , 2008 .

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

[9]  David Holmes,et al.  Java Concurrency in Practice , 2006 .