kirancodes.me
To Proof Maintenance & Beyond!

Testing concurrent programs using value schedules

Jun Chen, Steve MacDonald

Abstract

Concurrent programs are difficult to debug and verify because of the nondeterministic nature of concurrent executions. A particular concurrency-related bug may only show up under certain rarely-executed thread interleavings. Therefore, commonly used debugging methodologies, such as inserting print statements, are no longer sufficient for uncovering concurrency-related bugs. However, many existing bug detection methods, such as dynamic analysis and model checking, have a very high computational cost. In this paper, we introduce a new technique for uncovering concurrency-related bugs from multithreaded Java programs. Our technique uncovers concurrency-related bugs by generating and testing read-write assignment sequences, referred to as value schedules, of a multithreaded Java program. Our value-schedule-based technique distinguishes itself in its ability to avoid exploring superfluous program state space caused by speculative permutation on transitions. Therefore, our technique can achieve a higher degree of POR (Partial Order Reduction) than existing methods. We demonstrate our technique using some programs, with an implementation built using an explicit state model checker called JPF

BibTeX
@inproceedings{Chen-MacDonald:ASE07,
  author    = {Jun Chen and
               Steve MacDonald},
  title     = {Testing concurrent programs using value schedules},
  booktitle = {ASE},
  pages     = {313--322},
  publisher = {{ACM}},
  year      = {2007},
}

Related papers