DevLabs >
DevLabs Forums
>
CHESS – Find and Reproduce Concurrency Heisenbugs
>
Share stories of CHESS wins/losses
Share stories of CHESS wins/losses
- Are you using CHESS? Do you have success or horror stories to share? We would love to hear about how CHESS works in the field. Use this thread to share your experiences about CHESS.
Thanks, the CHESS team.
All Replies
- It works!
We have a heavily multithreaded distributed system to work on. Its server part has a lower C based level (3-rd party code communicating with remote devices) wrapped with managed/unmanaged mix of C++ and topped with a pile of C#. No wonder, sometimes (once per month) we see a "memory violation exception" message, announcing a typical heisenbug, and it is not reproducable...
It took some time to have everything installed and a suspicious layer wrapped into a sutable test, and now it has just started reporting problems it found. So far so good. We didn't find the major flaw, yet, but it has detected a livelock problem, which is worth fixing.
An amazing part of it is how deeply we rely on the schedulers, in hope that they take care of the things, while they do not! CHESS is a "must-have" tool. Thank you guys for the outstanding job!
Slava Luchianov - Hi Slava,
It's great to hear that CHESS is starting to produce results for you! Let us know if we can help you further. Best,
-- Tom - I've only been using Chess for a couple of days, and already I have refactored several libraries with respect to locking and threading.
The system I am working on is massively multithreaded, and a HUGE pain to test, due to all of the concurrent programming (not two programmers programming at the same time, lol). Our system is designed to host upwards of 50,000 long lived socket connections, sending and processing data concurrently on all sockets. The system has been in design and development for the last 3 years, so it is pretty tight as far as performance and lack of bugs go.
However, the hardest bugs to find are the ones that crop up only once in a while, and then cannot be reproduced. Chess has made it possible to find, reproduce and fix more of these errors than I have previously. Even in the two days I have been using it I have made great strides in rooting out some of the more frustrating one-off bugs that I've seen in the past.
So, thanks guys! I hope this project gets enough resources from Microsoft, and that one day it's included as a standard test tool in Visual Studio. - In one word: AWESOME!
For people starting out with CHESS: I recommend reading this paper as well to improve your understanding of how CHESS works internally:
http://research.microsoft.com/en-us/projects/chess/osdi2008-chess.pdf. Next to that, the example in Chapter 2 emphasizes how useful CHESS really is: addressing non-determinism in multithreading.
Congrats & thanks!


