Analyzing Concurrency Bugs Using Dual Slicing

Analyzing Concurrency Bugs Using Dual Slicing
ISSTA 2010, 23%=24/105

Recently, there has been much interest in developing analyzes to detect concurrency bugs that arise because of data races, atomicity violations, execution omission, etc. However, determining whether reported bugs are in fact real, and understanding how these bugs lead to incorrect behavior, remains a labor-intensive process. This paper proposes a novel dynamic analysis that automatically produces the causal path of a concurrent failure leading from the root cause to the failure. Given two schedules, one inducing the failure and the other not, our technique collects traces of the two executions, and compares them to identify salient differences. The causal relation between the differences is disclosed by leveraging a novel slicing algorithm called dual slicing that slices both executions alternatively and iteratively, producing a slice containing trace differences from both runs. Our experiments show that dual slices tend to be very small, often an order of magnitude or more smaller than the corresponding dynamic slices; more importantly, they enable precise analysis of real concurrency bugs for large programs, with reasonable overhead.

[doi] [pdf]
 author    = {Dasarath Weeratunge and
              Xiangyu Zhang and
              William N. Sumner and
              Suresh Jagannathan},
 title     = {Analyzing concurrency bugs using dual slicing},
 booktitle = {ISSTA},
 year      = {2010},
 pages     = {253-264},
 ee        = {},
 crossref  = {DBLP:conf/issta/2010},
 bibsource = {DBLP,}