Proceedings of the 2015 Conference on Certified Programs and Proofs 2015
DOI: 10.1145/2676724.2693179
|View full text |Cite
|
Sign up to set email alerts
|

Proving Lock-Freedom Easily and Automatically

Abstract: Lock-freedom is a liveness property satisfied by most non-blocking concurrent algorithms. It ensures that at any point at least one thread is making progress towards termination; so the system as a whole makes progress.As a global property, lock-freedom is typically shown by global proofs or complex iterated arguments. We show that this complexity is not needed in practice. By introducing simple loop depth counters into the programs, we can reduce proving lock-freedom to checking simple local properties on tho… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
4
0

Year Published

2016
2016
2023
2023

Publication Types

Select...
4
2

Relationship

0
6

Authors

Journals

citations
Cited by 6 publications
(4 citation statements)
references
References 17 publications
0
4
0
Order By: Relevance
“…Automated techniques have been introduced for proving both correctness (e.g., [2,8,13,40]) and progress (e.g., [22,27]) properties of non-blocking data structures. In this work, we focus on the progress property of lock-freedom, a liveness property that ensures absence of livelocks: Despite interleaved execution of multiple threads altering the data structure, some thread is guaranteed to complete its operation eventually.…”
Section: Non-blocking Data Structuresmentioning
confidence: 99%
See 1 more Smart Citation
“…Automated techniques have been introduced for proving both correctness (e.g., [2,8,13,40]) and progress (e.g., [22,27]) properties of non-blocking data structures. In this work, we focus on the progress property of lock-freedom, a liveness property that ensures absence of livelocks: Despite interleaved execution of multiple threads altering the data structure, some thread is guaranteed to complete its operation eventually.…”
Section: Non-blocking Data Structuresmentioning
confidence: 99%
“…They describe its verification for a fixed number of threads and a given progress bound using model checking, but leave finding the bound to the user. Existing approaches for automatically proving progress properties like the ones presented in [22,27] are limited to eventual (unbounded) progress. To our knowledge, bounded progress guarantees have not been inferred automatically before.…”
Section: Non-blocking Data Structuresmentioning
confidence: 99%
“…We do not consider the lack of the formal proofs of progress guarantees a major issue. Although it is possible to write such proofs (see [18] for a comprehensive analysis), we find it much easier to discuss this question separately.…”
Section: Progress Guaranteesmentioning
confidence: 99%
“…Then, it locates the required segment by following the chain of next pointers starting from the one already read before the increment, updating suspendSegm if required (line 10). The findAndMoveForwardSusp(..) implementation is straightforward -it finds the required segment first (lines [18][19][20][21][22][23][24], creating new segments if needed (lines [22][23], and then updates suspendSegm to the one that was found if it has not been updated to it or one of the later segments yet (lines 26-29).…”
Section: C1 Basics Algorithm Without Cancellationmentioning
confidence: 99%