kirancodes.me
To Proof Maintenance & Beyond!

Reproducing concurrency failures from crash stacks

Francesco A. Bianchi, Mauro Pezzè, Valerio Terragni

Abstract

Reproducing field failures is the first essential step for understanding, localizing and removing faults. Reproducing concurrency field failures is hard due to the need of synthesizing a test code jointly with a thread interleaving that induce the failure in the presence of limited information from the field. Current techniques for reproducing concurrency failures focus on identifying failure-inducing interleavings, leaving largely open the problem of synthesizing the test code that manifests such interleavings. In this paper, we present ConCrash, a technique to automatically generate test codes that reproduce concurrency failures that violate thread-safety from crash stacks, which commonly summarize the conditions of field failures. ConCrash efficiently explores the huge space of possible test codes to identify a failure-inducing one by using a suitable set of search pruning strategies. Combined with existing techniques for exploring interleavings, ConCrash automatically reproduces a given concurrency failure that violates the thread-safety of a class by identifying both a failure-inducing test code and corresponding interleaving. In the paper, we define the ConCrash approach, present a prototype implementation of ConCrash, and discuss the experimental results that we obtained on a known set of ten field failures that witness the effectiveness of the approach.

BibTeX
@inproceedings{Bianchi-al:FSE17,
  author    = {Francesco A. Bianchi and
               Mauro Pezz{\`{e}} and
               Valerio Terragni},
  title     = {Reproducing concurrency failures from crash stacks},
  booktitle = {{ESEC/SIGSOFT} {FSE}},
  pages     = {705--716},
  publisher = {{ACM}},
  year      = {2017},
}

Related papers