Cuzz is a very effective tool for finding concurrency bugs. Cuzz works on unmodified executables and is designed for maximizing concurrency coverage for your existing (unmodified) tests. It randomizes the thread schedules in a systematic and disciplined way, using an algorithm that provides probabilistic coverage guarantees.
Cuzz is very scalable and can run on large programs that create lots of threads. It is available as part of AppVerifier. You can find out more about Cuzz from this video or the paper below.
- John Erickson, Madanlal Musuvathi, sebastian burckhardt, and kirk olynyk, Effective Data-Race Detection for the Kernel, in Operating System Design and Implementation (OSDI'10), USENIX, October 2010
- Madanlal Musuvathi, Sebastian Burckhardt, Pravesh Kothari, and Santosh Nagarakatte, A Randomized Scheduler with Probabilistic Guarantees of Finding Bugs, in Proceedings of the Fifteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2010), Association for Computing Machinery, Inc., 16 March 2010