Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation 2019
DOI: 10.1145/3314221.3314609
|View full text |Cite
|
Sign up to set email alerts
|

Model checking for weakly consistent libraries

Abstract: We present GenMC, a model checking algorithm for concurrent programs that is parametric in the choice of memory model and can be used for verifying clients of concurrent libraries. Subject to a few basic conditions about the memory model, our algorithm is sound, complete and optimal, in that it explores each consistent execution of the program according to the model exactly once, and does not explore inconsistent executions or embark on futile exploration paths. We implement GenMC as a tool for verifying C pro… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
93
0

Year Published

2019
2019
2021
2021

Publication Types

Select...
5
1

Relationship

3
3

Authors

Journals

citations
Cited by 65 publications
(93 citation statements)
references
References 38 publications
0
93
0
Order By: Relevance
“…When this is the case, following Abdulla et al [2018] and Kokologiannakis et al [2019], we only keep the following events in this additional execution: (1) r itself (e.g., a := x), (2) the events that were added before r (e.g., lock(l) in the left thread), (3) w itself (e.g., x := 2), and (4) the events that led to w (e.g., lock(l) and b := x in the right thread). In other words, we remove all events that were added after r but did not lead to w (e.g., the x := 1 and unlock(l) in the left thread).…”
Section: Lapor: Excluding Inconsistent Executionsmentioning
confidence: 99%
See 4 more Smart Citations
“…When this is the case, following Abdulla et al [2018] and Kokologiannakis et al [2019], we only keep the following events in this additional execution: (1) r itself (e.g., a := x), (2) the events that were added before r (e.g., lock(l) in the left thread), (3) w itself (e.g., x := 2), and (4) the events that led to w (e.g., lock(l) and b := x in the right thread). In other words, we remove all events that were added after r but did not lead to w (e.g., the x := 1 and unlock(l) in the left thread).…”
Section: Lapor: Excluding Inconsistent Executionsmentioning
confidence: 99%
“…However, several more recent DPOR algorithms [Abdulla et al 2018;Aronis et al 2018;Chalupa et al 2017;Kokologiannakis et al 2017Kokologiannakis et al , 2019 do not consider all orderings on the writes of the same location unless this order is observable. As such, since the value of x is not read in w+w, the order of the writes cannot possibly be observable, and thus these techniques explore only one execution for w+w, ignoring the order in which the writes are executed.…”
Section: Lock(l);mentioning
confidence: 99%
See 3 more Smart Citations