skip to main content
10.1145/2837614.2837635acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

A program logic for concurrent objects under fair scheduling

Published: 11 January 2016 Publication History

Abstract

Existing work on verifying concurrent objects is mostly concerned with safety only, e.g., partial correctness or linearizability. Although there has been recent work verifying lock-freedom of non-blocking objects, much less efforts are focused on deadlock-freedom and starvation-freedom, progress properties of blocking objects. These properties are more challenging to verify than lock-freedom because they allow the progress of one thread to depend on the progress of another, assuming fair scheduling. We propose LiLi, a new rely-guarantee style program logic for verifying linearizability and progress together for concurrent objects under fair scheduling. The rely-guarantee style logic unifies thread-modular reasoning about both starvation-freedom and deadlock-freedom in one framework. It also establishes progress-aware abstraction for concurrent objects, which can be applied when verifying safety and liveness of client code. We have successfully applied the logic to verify starvation-freedom or deadlock-freedom of representative algorithms such as ticket locks, queue locks, lock-coupling lists, optimistic lists and lazy lists.

References

[1]
M. Abadi and L. Lamport. Conjoining specifications. ACM Trans. Program. Lang. Syst., 17(3):507–535, 1995.
[2]
R. Back and Q. Xu. Refinement of fair action systems. Acta Inf., 35 (2):131–165, 1998.
[3]
P. Boström and P. Müller. Modular verification of finite blocking in non-terminating programs. In ECOOP, pages 639–663, 2015.
[4]
C. Boyapati, R. Lee, and M. Rinard. Ownership types for safe programming: Preventing data races and deadlocks. In OOPSLA, pages 211–230, 2002.
[5]
P. da Rocha Pinto, T. Dinsdale-Young, P. Gardner, and J. Sutherland. Modular termination verification for non-blocking concurrency, 2015.
[6]
Manuscript.
[7]
J. Derrick, G. Schellhorn, and H. Wehrheim. Mechanically verified proof obligations for linearizability. ACM Trans. Program. Lang. Syst., 33(1):4:1–4:43, 2011.
[8]
X. Feng. Local rely-guarantee reasoning. In POPL, pages 315–327, 2009.
[9]
I. Filipovi´c, P. O’Hearn, N. Rinetzky, and H. Yang. Abstraction for concurrent objects. Theor. Comput. Sci., 411(51-52):4379–4398, 2010.
[10]
A. Gotsman and H. Yang. Liveness-preserving atomicity abstraction. In ICALP, pages 453–465, 2011.
[11]
A. Gotsman, B. Cook, M. J. Parkinson, and V. Vafeiadis. Proving that non-blocking algorithms don’t block. In POPL, pages 16–28, 2009.
[12]
S. Heller, M. Herlihy, V. Luchangco, M. Moir, W. N. Scherer III, and N. Shavit. A lazy concurrent list-based set algorithm. In OPODIS, pages 3–16, 2005.
[13]
T. A. Henzinger, O. Kupferman, and S. K. Rajamani. Fair simulation. Inf. Comput., 173(1):64–81, 2002.
[14]
M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008.
[15]
M. Herlihy and N. Shavit. On the nature of progress. In OPODIS, pages 313–328, 2011.
[16]
M. Herlihy and J. Wing. Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12(3):463–492, 1990.
[17]
J. Hoffmann, M. Marmar, and Z. Shao. Quantitative reasoning for proving lock-freedom. In LICS, pages 124–133, 2013.
[18]
B. Jacobs, D. Bosnacki, and R. Kuiper. Modular termination verification. In ECOOP, pages 664–688, 2015.
[19]
C. B. Jones. Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst., 5(4):596– 619, 1983.
[20]
K. R. M. Leino and P. Müller. A basis for verifying multi-threaded programs. In ESOP, pages 378–393, 2009.
[21]
K. R. M. Leino, P. Müller, and J. Smans. Deadlock-free channels and locks. In ESOP, pages 407–426, 2010.
[22]
H. Liang and X. Feng. Modular verification of linearizability with non-fixed linearization points. In PLDI, pages 459–470, 2013.
[23]
H. Liang and X. Feng. A program logic for concurrent objects under fair scheduling (technical report), 2015. http://kyhcs.ustcsz.edu. cn/relconcur/lili.
[24]
H. Liang, J. Hoffmann, X. Feng, and Z. Shao. Characterizing progress properties of concurrent objects via contextual refinements. In CONCUR, pages 227–241, 2013.
[25]
H. Liang, X. Feng, and Z. Shao. Compositional verification of termination-preserving refinement of concurrent programs. In CSLLICS, pages 65:1–65:10, 2014.
[26]
J. M. Mellor-Crummey and M. L. Scott. Algorithms for scalable synchronization on shared-memory multiprocessors. ACM Trans. Comput. Syst., 9(1):21–65, 1991.
[27]
M. M. Michael and M. L. Scott. Simple, fast, and practical nonblocking and blocking concurrent queue algorithms. In PODC, pages 267–275, 1996.
[28]
M. Parkinson, R. Bornat, and C. Calcagno. Variables as resource in Hoare logics. In LICS, pages 137–146, 2006.
[29]
E. W. Stark. A proof technique for rely/guarantee properties. In FSTTCS, pages 369–391, 1985.
[30]
K. Stølen. Shared-state design modulo weak and strong process fairness. In FORTE, pages 479–498, 1992.
[31]
A. Turon, D. Dreyer, and L. Birkedal. Unifying refinement and Hoarestyle reasoning in a logic for higher-order concurrency. In ICFP, pages 377–390, 2013.
[32]
V. Vafeiadis. Modular fine-grained concurrency verification, 2008. PhD Thesis.
[33]
A. Williams, W. Thies, and M. D. Ernst. Static deadlock detection for java libraries. In ECOOP, pages 602–629, 2005.
[34]
Q. Xu, W. P. de Roever, and J. He. The rely-guarantee method for verifying shared variable concurrent programs. Formal Asp. Comput., 9(2):149–174, 1997.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
January 2016
815 pages
ISBN:9781450335492
DOI:10.1145/2837614
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 51, Issue 1
    POPL '16
    January 2016
    815 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2914770
    • Editor:
    • Andy Gill
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 January 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Concurrency
  2. Program Logic
  3. Progress
  4. Refinement
  5. Rely-Guarantee Reasoning

Qualifiers

  • Research-article

Funding Sources

Conference

POPL '16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)33
  • Downloads (Last 6 weeks)1
Reflects downloads up to 25 Dec 2024

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media