Wednesday, October 14, 2009

CHESS

CHESS is an automated concurrency testing tool for finding and reproducing Heisenbugs in your concurrent programs.

You might ask yourself, "What is a Heisenbug?" It is a bug in a computer program that goes away or radically changes its behavior when attempts are made to investigate it. If you have ever programmed with threads, you have likely come across a Heisenbug. Do you remember that time when a thread was deadlocking or returning the wrong value and the error no longer occurred after adding a debug statement around the suspected area of code? The case of the error no longer occurring is the Heisenbug.

It is unfortunate CHESS is so limited as to which languages and platforms are supported. As a product developed by Microsoft Research, CHESS is only available for the Windows platform requiring Windows 2003 or later, 32-bit, x86, and Visual Studio 2008. Looks like I won't be able to use CHESS for quite some time until there is a Linux or Mac version available. With all of the useful features and possible exposure, I would expect an open-source team to devise a CHESS version that is compatible with other platforms. Even developing a version for Java or C++ would be a step in the right direction.

I am impressed by the number of iterations, permutations, and interleavings the tool can go through in such a short amount of time. There would have been many hours saved troubleshooting various issues in the past. The fact CHESS can learn and reproduce a failed execution over and over again. Repetition of the error is key to troubleshooting a problem. CHESS definitely corners the market on being able to capture and explore all interleaving determinism for large or small systems.

No comments:

Post a Comment