2009
DOI: 10.1145/1631687.1596574
|View full text |Cite
|
Sign up to set email alerts
|

Finding race conditions in Erlang with QuickCheck and PULSE

Abstract: 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 condition… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
21
0

Year Published

2010
2010
2018
2018

Publication Types

Select...
5
3

Relationship

0
8

Authors

Journals

citations
Cited by 17 publications
(21 citation statements)
references
References 25 publications
0
21
0
Order By: Relevance
“…• a library called Déjà Fu 3 for systematically testing concurrent Haskell programs for possible deadlocks, race-conditions, or uncaught exceptions, with the testing functionality based on monadic concurrency [14] and schedule bounding [13].…”
Section: Contributionsmentioning
confidence: 99%
See 1 more Smart Citation
“…• a library called Déjà Fu 3 for systematically testing concurrent Haskell programs for possible deadlocks, race-conditions, or uncaught exceptions, with the testing functionality based on monadic concurrency [14] and schedule bounding [13].…”
Section: Contributionsmentioning
confidence: 99%
“…PULSE [3] is a concurrency testing tool for Erlang, where processes are synchronised by communicating with a scheduler process, and QuickCheck is used for schedule generation. PULSE supports automatic code instrumentation to enable this style of testing.…”
Section: Related Workmentioning
confidence: 99%
“…However, even if the calls were further apart, which would increase the likelihood that the first process is scheduled out somewhere in between, the error cannot easily be provoked with unit testing because the scheduler of Erlang/OTP is deterministic. To expose it, one would have to abandon unit for system testing or employ a randomized scheduler like PULSE [4]. In any case, both styles of testing would have to rely on luck to provoke and reproduce the error.…”
Section: Preliminariesmentioning
confidence: 99%
“…Quviq's QuickCheck [1] is a property-based fuzz testing tool that has been extended with the PULSE scheduler [4] for randomly interleaving processes to detect concurrency errors. Besides the random nature of its testing procedure, that provides no correctness guarantees, the user is required to write properties the program should satisfy using a special notation.…”
Section: Test-driven Development In Erlangmentioning
confidence: 99%