CHESS is a tool for finding and reproducing Heisenbugs in concurrent programs. CHESS repeatedly runs a concurrent test ensuring that every run takes a different interleaving. If an interleaving results in an error, CHESS can reproduce the interleaving for improved debugging. CHESS is available for both managed and native programs.
A number of people are experimenting with CHESS in course projects. The links below point to their project summaries. Thanks to these CHESS players for their work! Let us known if you have something to contribute!