Recent computers are multi-core and can do multiple things at the same time. When we write concurrent programs to exploit them there is a whole new set of defects that we can introduce. Since these defects are often "Heisenbugs", i.e. only show up rarely and unpredictably, they can be very hard and costly to find. Stress testing is often used in these scenarios, but it takes time and is not guaranteed to find any problems.

A new tool have been released that can automatically find defects in multithreaded/concurrent programs. It currently supports normal windows (Win32) binaries, but a DotNet version will be released shortly. The tool systematically explores the behaviors of executable concurrent programs. The user needs to specify interesting scenarios that should be explored. This is done by writing executable unit tests.

The tool has found several unknown concurrency bugs in heavily stress tested systems.


SWELL is a National Innovation Driver for Software V&V funded by Vinnova and a number of Swedish universities and companies.