Finding Race Conditions in Erlang with QuickCheck and PULSE

Koen Claessen, Michal Palka, Nicholas Smallbone, John Hughes, Hans Svensson, Thomas Arts and Ulf Wiger

The 14th ACM SIGPLAN International Conference on Functional Programming (ICFP 2009)
Edinburgh, Scotland, 31st August - 2nd September 2009


We address the problem of testing and debugging concurrent, distributed Erlang applications. In concurrent programs, race conditions are typical errors and very hard to find in practice. Traditional unit testing is normally unable to help finding all race conditions, because their occurrence depends so much on timing. Therefore, race conditions are often found during system testing, where due to the fast amount of code under test, it is often hard to diagnose the error resulting from race conditions. We present three tools (QuickCheck, PULSE, and a visualizer) that in combination can be used to test and debug concurrent programs in unit testing with a much larger possibility to detect race conditions. We evaluate our method on an industrial concurrent case study and illustrate how we find and analyze the race conditions.

START Conference Manager (V2.56.8 - Rev. 748M)