Model-Checking Multi-threaded Distributed Java Programs

  • Scott D. Stoller
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1885)


Systematic state-space exploration is a powerful technique for verification of concurrent software systems. Most work in this area deals with manually-constructed models of those systems. We propose a framework for applying state-space exploration to multi-threaded distributed systems written in standard programming languages. It generalizes Godefroid’s work on VeriSoft, which does not handle multi-threaded systems, and Bruening’s work on ExitBlockRW, which does not handle distributed (multi-process) systems. Unlike ExitBlockRW, our search algorithms incorporate powerful partial-order methods, guarantee detection of deadlocks, and guarantee detection of violations of the locking discipline used to avoid race conditions in accesses to shared variables.


Control Point Dependency Relation Concurrent System Conditional Dependency Selective Search 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [BHPV00]
    Brat, G., Havelund, K., Park, S.-J., Visser, W.: Model checking programs. In: IEEE International Conference on Automated Software Engineering (ASE) (September 2000)Google Scholar
  2. [Bru99]
    Bruening, D.L.: Systematic testing of multithreaded Java programs. Master’s thesis, Massachusetts Institute of Technology (1999)Google Scholar
  3. [CDH+00]
    Corbett, J.C., Dwyer, M., Hatcliff, J., Pasareanu, C., Robby, Laubach, S., Zheng, H.: Bandera: Extracting finitestate models from Java source code. In: Proc. 22nd International Conference on Software Engineering (ICSE) (June 2000)Google Scholar
  4. [Cor00]
    Corbett, J.C.: Using shape analysis to reduce finite-state models of concurrent Java programs. ACM Transactions on Software Engingeering and Methodology 9(1), 51–93 (2000)CrossRefMathSciNetGoogle Scholar
  5. [Dah99]
    Dahm, M.: Byte code engineering with the JavaClass API. Technical Report B-17-98, Institut für Informatik, Freie Universität Berlin (1999)Google Scholar
  6. [DIS99]
    Demartini, C., Iosif, R., Sisto, R.: A deadlock detection tool for concurrent Java programs. Software: Practice and Experience 29(7), 577–603 (1999)CrossRefGoogle Scholar
  7. [DLNS98]
    Detlefs, D.L., Leino, K.R.M., Nelson, G., Saxe, J.B.: Extended static checking. Research Report 159, Compaq SRC (1998)Google Scholar
  8. [FA99]
    Flanagan, C., Abadi, M.: Types for safe locking. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol. 1576, pp. 91–108. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  9. [GHJ98]
    Godefroid, P., Hanmer, R.S., Jagadeesan, L.: Model checking without a model: An analysis of the heart-beat monitor of a telephone switch using VeriSoft. In: Proc. ACM International Symposium on Software Testing and Analysis (ISSTA 1998), pp. 124–133 (1998)Google Scholar
  10. [God96]
    Godefroid, P.: Partial-Order Methods for the Verification of Concurrent Systems. LNCS, vol. 1032. Springer, Heidelberg (1996)Google Scholar
  11. [God97]
    Godefroid, P.: Model checking for programming languages using VeriSoft. In: Proc. 24th ACM Symposium on Principles of Programming Languages (POPL), pp. 174–186. ACM Press, New York (1997)CrossRefGoogle Scholar
  12. [HS99]
    Havelund, K., Skakkebæk, J.U.: Applying model checking in Java verification. In: Dams, D.R., Gerth, R., Leue, S., Massink, M. (eds.) SPIN 1999. LNCS, vol. 1680, pp. 216–231. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  13. [SBN+97]
    Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.E.: Eraser: A dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems 15(4), 391–411 (1997)CrossRefGoogle Scholar
  14. [STMD96]
    Shatz, S.M., Tu, S., Murata, T., Duri, S.: An application of Petri net reduction for Ada tasking deadlock analysis. IEEE Transactions on Parallel and Distributed Systems 7(12), 1307–1322 (1996)CrossRefGoogle Scholar
  15. [Sto00]
    Stoller, S.D.: Model-checking multi-threaded distributed Java programs. Technical Report 536, Computer Science Dept., Indiana University (2000)Google Scholar
  16. [WR99]
    Whaley, J., Rinard, M.: Compositional pointer and escape analysis for Java programs. In: Proc. ACM Conference on Object-Oriented Systems, Languages and Applications (OOPSLA), October 1999, pp. 187–206 (1999)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Scott D. Stoller
    • 1
  1. 1.Computer Science Dept.Indiana UniversityBloomingtonUSA

Personalised recommendations