Tutorial: Finding Concurrency Bugs with Concuerror

Stavros Aronis
Hunter of Discrepancies in Erlang Code

This is a tutorial on using Concuerror, an open source systematic testing tool for finding concurrency errors in Erlang programs or verify their absence. Concuerror supports the test-driven development of concurrent Erlang programs in order to detect and eliminate the vast majority of
concurrency-related errors (e.g. data races, unexpected crashes, deadlocks, etc.) that may occur in their execution.

A salient feature of Concuerror is that it is completely automatic, works out of the box with existing test suites, and incorporates various optimizations that significantly reduce the time it takes to explore all process interleaving. The tool clearly shows execution traces that lead to errors and can
deterministically replay them.

We will also be revealing and explaining some of the tricks that Concuerror uses to instrument and communicate information about Erlang code.

Tutorial objectives:
Show instances of concurrency errors in Erlang programs and a systematic testing tool to detect and reproduce them.

Target audience:
* Erlang developers.
* Anybody who is serious about eliminating concurrency errors from their programs.
* Anybody who has an interest in tools for Erlang


Stavros finished his master's degree at NTUA, Greece with a thesis on the implementation of an extension for Dialyzer’s type system. He is currently studying towards a PhD degree in Uppsala University, doing research on Erlang tools. He has developed the parallel version of Dialyzer and is the main developer and maintainer of Concuerror.


GitHub: aronisstav

Twitter: @Vahnatai

Back to conference page