kirancodes.me
To Proof Maintenance & Beyond!

Assertion guided symbolic execution of multithreaded programs

Shengjian Guo, Markus Kusano, Chao Wang, Zijiang Yang, Aarti Gupta

Abstract

Symbolic execution is a powerful technique for systematic testing of sequential and multithreaded programs. However, its application is limited by the high cost of covering all feasible intra-thread paths and inter-thread interleavings. We propose a new assertion guided pruning framework that identifies executions guaranteed not to lead to an error and removes them during symbolic execution. By summarizing the reasons why previously explored executions cannot reach an error and using the information to prune redundant executions in the future, we can soundly reduce the search space. We also use static concurrent program slicing and heuristic minimization of symbolic constraints to further reduce the computational overhead. We have implemented our method in the Cloud9 symbolic execution tool and evaluated it on a large set of multithreaded C/C++ programs. Our experiments show that the new method can reduce the overall computational cost significantly.

BibTeX
@inproceedings{Guo-al:FSE15,
  author    = {Shengjian Guo and
               Markus Kusano and
               Chao Wang and
               Zijiang Yang and
               Aarti Gupta},
  title     = {Assertion guided symbolic execution of multithreaded programs},
  booktitle = {{ESEC/SIGSOFT} {FSE}},
  pages     = {854--865},
  publisher = {{ACM}},
  year      = {2015},
}

Related papers