GAMBIT: Effective Unit Testing for Concurrency Libraries

As concurrent programming becomes prevalent, software providers

are investing in concurrency libraries to improve programmer productivity.

Concurrency libraries improve productivity by hiding

error-prone, low-level synchronization from programmers and providing

higher-level concurrent abstractions. Testing such libraries

is difficult, however, because concurrency failures often manifest

only under particular scheduling circumstances. Current best testing

practices are often inadequate: heuristic-guided fuzzing is not

systematic, systematic schedule enumeration does not find bugs

quickly, and stress testing is neither systematic nor fast.

To address these shortcomings, we propose a prioritized search

technique called GAMBIT that combines the speed benefits of

heuristic-guided fuzzing with the soundness, progress, and reproducibility

guarantees of stateless model checking. GAMBIT

combines known techniques such as partial-order reduction and

preemption-bounding with a generalized best-first search framework

that prioritizes schedules likely to expose bugs. We evaluate

GAMBIT’s effectiveness on newly released concurrency libraries

for Microsoft’s .NET framework. Our experiments show

that GAMBIT finds bugs more quickly than prior stateless model

checking techniques without compromising coverage guarantees

or reproducibility.

PDF file

In  Proceedings of the 15th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming

Publisher  Association for Computing Machinery, Inc.
Copyright © 2007 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or The definitive version of this paper can be found at ACM’s Digital Library --


> Publications > GAMBIT: Effective Unit Testing for Concurrency Libraries