Finding and Reproducing Heisenbugs in Concurrent Programs
Eighth Symposium on Operating Systems Design and Implementation
Piramanayagam Arumuga Nainar and
Concurrency is pervasive in large systems. Unexpected
interference among threads often results in "Heisenbugs"
that are extremely difficult to reproduce and eliminate.
We have implemented a tool called CHESS for finding
and reproducing such bugs. When attached to a program,
CHESS takes control of thread scheduling and uses efficient
search techniques to drive the program through
possible thread interleavings. This systematic exploration
of program behavior enables CHESS to quickly
uncover bugs that might otherwise have remained hidden
for a long time. For each bug, CHESS consistently
reproduces an erroneous execution manifesting the bug,
thereby making it significantly easier to debug the problem.
CHESS scales to large concurrent programs and
has found numerous bugs in existing systems that had
been tested extensively prior to being tested by CHESS.
CHESS has been integrated into the test frameworks of
many code bases inside Microsoft and is used by testers
on a daily basis.
Full text: pdf
Back to Piramanayagam's home page