Electrical Engineering
      and Computer Sciences

Electrical Engineering and Computer Sciences

COLLEGE OF ENGINEERING

UC Berkeley

Concurrent Breakpoints

Chang Seo Park and Koushik Sen

EECS Department
University of California, Berkeley
Technical Report No. UCB/EECS-2011-159
December 18, 2011

http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-159.pdf

In program debugging, reproducibility of bugs is a key requirement. Unfortunately, bugs in concurrent programs are notoriously difficult to reproduce compared to their sequential counterparts. This is because bugs due to concurrency happen under very specific thread schedules and the likelihood of taking such corner-case schedules during regular testing is very low. We propose concurrent breakpoints, a light-weight and programmatic way to make a concurrency bug reproducible. We describe a mechanism that helps to hit a concurrent breakpoint in a concurrent execution with high probability. We have implemented concurrent breakpoints as a light-weight library (containing a few hundreds of lines of code) for Java and C/C++ programs. We have used the implementation to deterministically reproduce several known non-deterministic bugs in real-world concurrent Java and C/C++ programs involving 1.6M lines of code. In our evaluation, concurrent breakpoints made these non-deterministic bugs almost 100% reproducible.


BibTeX citation:

@techreport{Park:EECS-2011-159,
    Author = {Park, Chang Seo and Sen, Koushik},
    Title = {Concurrent Breakpoints},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {2011},
    Month = {Dec},
    URL = {http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-159.html},
    Number = {UCB/EECS-2011-159},
    Abstract = {In program debugging, reproducibility of bugs is a key requirement.  Unfortunately, bugs in concurrent programs are notoriously difficult to reproduce compared to their sequential counterparts.  This is because bugs due to concurrency happen under very specific thread schedules and the likelihood of taking such corner-case schedules during regular testing is very low.  We propose concurrent breakpoints, a light-weight and programmatic way to make a concurrency bug reproducible.  We describe a mechanism that helps to hit a concurrent breakpoint in a concurrent execution with high probability.  We have implemented concurrent breakpoints as a light-weight library (containing a few hundreds of lines of code) for Java and C/C++ programs.  We have used the implementation to deterministically reproduce several known non-deterministic bugs in real-world concurrent Java and C/C++ programs involving 1.6M lines of code.  In our evaluation, concurrent breakpoints made these non-deterministic bugs almost 100% reproducible.}
}

EndNote citation:

%0 Report
%A Park, Chang Seo
%A Sen, Koushik
%T Concurrent Breakpoints
%I EECS Department, University of California, Berkeley
%D 2011
%8 December 18
%@ UCB/EECS-2011-159
%U http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-159.html
%F Park:EECS-2011-159