kirancodes.me
To Proof Maintenance & Beyond!

Dynamic Generation of Likely Invariants for Multithreaded Programs

Markus Kusano, Arijit Chattopadhyay, Chao Wang

Abstract

We propose a new method for dynamically generating likely invariants from multithreaded programs.While existing invariant generation tools work well on sequential programs, they are ineffective at reasoning about multithreaded programs both in terms of the number of real invariants generated and in terms of their usefulness in helping programmers. We address this issue by developing a new dynamic invariant generator consisting of an LLVM based code instrumentation front end, a systematic thread interleaving explorer, and a customized invariant inference engine. We show that efficient interleaving exploration strategies can be used to generate a diversified set of executions with little runtime overhead. Furthermore, we show that focusing on a small subset of thread-local transition invariants is often sufficient for reasoning about the concurrency behavior of programs. We have evaluated our new method on a set of open-source multithreaded C/C++ benchmarks. Our experiments show that our method can generate invariants that are significantly higher in quality than the previous state-of-the-art.

BibTeX
@inproceedings{Kusano-al:ICSE15,
  author    = {Markus Kusano and
               Arijit Chattopadhyay and
               Chao Wang},
  title     = {Dynamic Generation of Likely Invariants for Multithreaded Programs},
  booktitle = {ICSE (Part I)},
  pages     = {835--846},
  publisher = {{IEEE} Computer Society},
  year      = {2015},
}

Related papers