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.
Description
Finding and reproducing Heisenbugs in concurrent programs
%0 Conference Paper
%1 Musuvathi:2008:FRH
%A Musuvathi, Madanlal
%A Qadeer, Shaz
%A Ball, Thomas
%A Basler, Gerard
%A Nainar, Piramanayagam Arumuga
%A Neamtiu, Iulian
%B Proceedings of the 8th USENIX conference on Operating systems design and implementation
%C Berkeley, CA, USA
%D 2008
%I USENIX Association
%K CHESS Microsoft concurrency parallelism testing tests unit
%P 267--280
%T Finding and Reproducing Heisenbugs in Concurrent Programs
%U http://www.cs.ucr.edu/~neamtiu/pubs/osdi08musuvathi.pdf
%X 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.
@inproceedings{Musuvathi:2008:FRH,
abstract = {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.},
acmid = {1855760},
added-at = {2011-04-08T19:33:59.000+0200},
address = {Berkeley, CA, USA},
author = {Musuvathi, Madanlal and Qadeer, Shaz and Ball, Thomas and Basler, Gerard and Nainar, Piramanayagam Arumuga and Neamtiu, Iulian},
biburl = {https://www.bibsonomy.org/bibtex/20928f4be2d2a189e3397e03816e19687/gron},
booktitle = {Proceedings of the 8th USENIX conference on Operating systems design and implementation},
description = {Finding and reproducing Heisenbugs in concurrent programs},
interhash = {0377fefeb000f652d13f4989ea212e6f},
intrahash = {0928f4be2d2a189e3397e03816e19687},
keywords = {CHESS Microsoft concurrency parallelism testing tests unit},
location = {San Diego, California},
numpages = {14},
pages = {267--280},
publisher = {USENIX Association},
series = {OSDI'08},
timestamp = {2015-02-19T16:00:40.000+0100},
title = {Finding and Reproducing Heisenbugs in Concurrent Programs},
url = {http://www.cs.ucr.edu/~neamtiu/pubs/osdi08musuvathi.pdf},
year = 2008
}