Finding Race Conditions in Erlang with QuickCheck and PULSE

被引:5
作者
Claessen, Koen [1 ]
Palka, Michal [1 ]
Smallbone, Nicholas [1 ]
Hughes, John [1 ]
Svensson, Hans [1 ]
Arts, Thomas [1 ]
Wiger, Ulf
机构
[1] Chalmers Univ Technol, S-41296 Gothenburg, Sweden
关键词
Verification; QuickCheck; Race Conditions; Erlang;
D O I
10.1145/1631687.1596574
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We address the problem of testing and debugging concurrent, distributed Erlang applications. In concurrent programs, race conditions are a common class of bugs and are 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 vast 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 better possibility of detecting race conditions. We evaluate our method on an industrial concurrent case study and illustrate how we find and analyze the race conditions.
引用
收藏
页码:149 / 160
页数:12
相关论文
共 24 条
  • [1] [Anonymous], 2000, ICFP 00 MONTR CAN SE
  • [2] [Anonymous], 2008, OSDI 2008
  • [3] Armstrong J., 2007, Programming Erlang: Software for a Concurrent World, V1st
  • [4] Artho C, 2007, P INT COMP SOFTW APP, P541
  • [5] Trace analysis of Erlang programs
    Arts, T
    Fredlund, LÅ
    [J]. ACM SIGPLAN NOTICES, 2002, 37 (12) : 18 - 24
  • [6] ARTS T, 2006, ERLANG 06
  • [7] CRONQVIST M, 2004, ERLANG 04, P11
  • [8] McErlang:: A model checker for a distributed functional programming language
    Fredlund, Lars-Ake
    Svensson, Hans
    [J]. ACM SIGPLAN NOTICES, 2007, 42 (09) : 125 - 136
  • [9] Gansner ER, 2000, SOFTWARE PRACT EXPER, V30, P1203, DOI 10.1002/1097-024X(200009)30:11<1203::AID-SPE338>3.0.CO
  • [10] 2-N