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

Proving that non-blocking algorithms don't block

Published:21 January 2009Publication History

ABSTRACT

A concurrent data-structure implementation is considered non-blocking if it meets one of three following liveness criteria: wait-freedom, lock-freedom, or obstruction-freedom. Developers of non-blocking algorithms aim to meet these criteria. However, to date their proofs for non-trivial algorithms have been only manual pencil-and-paper semi-formal proofs. This paper proposes the first fully automatic tool that allows developers to ensure that their algorithms are indeed non-blocking. Our tool uses rely-guarantee reasoning while overcoming the technical challenge of sound reasoning in the presence of interdependent liveness properties.

References

  1. M. Abadi and L. Lamport. Conjoining specifications. ACM Trans. Program. Lang. Syst., 17(3):507--534, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. B. Alpern and F. B. Schneider. Defining liveness. Inf. Process. Lett., 21(4):181--185, 1985.Google ScholarGoogle ScholarCross RefCross Ref
  3. J. Berdine, B. Cook, D. Distefano, and P. W. O'Hearn. Automatic termination proofs for programs with shape-shifting heaps. In CAV'06: Conference on Computer Aided Verification, volume 4144 of LNCS, pages 386--400. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S. D. Brookes. Full abstraction for a shared-variable parallel language. Inf. Comput., 127(2):145--163, 1996.Google ScholarGoogle ScholarCross RefCross Ref
  5. C. Calcagno, P. O'Hearn, and H. Yang. Local action and abstract separation logic. In LICS'07: Symposium on Logic in Computer Science, pages 366--378. IEEE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Calcagno, M. J. Parkinson, and V. Vafeiadis. Modular safety checking for fine-grained concurrency. In SAS'07: Static Analysis Symposium, volume 4634 of LNCS, pages 233--248. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. R. Colvin and B. Dongol. Verifying lock-freedom using well-founded orders. In ICTAC'07: International Colloquium on Theoretical Aspects of Computing, volume 4711 of LNCS, pages 124--138. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B. Cook, A. Gotsman, A. Podelski, A. Rybalchenko, and M. Y. Vardi. Proving that programs eventually do something good. In POPL'07: Symposium on Principles of Programming Languages, pages 265--276. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Doherty, L. Groves, V. Luchangco, and M. Moir. Formal verification of a practical lock--free queue algorithm. In FORTE'04: Conference on Formal Techniques for Networked and Distributed Systems, volume 3235 of LNCS, pages 97--114. Springer, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  10. B. Dongol. Formalising progress properties of non-blocking programs. In ICFEM'06: Conference on Formal Engineering Methods, volume 4260 of LNCS, pages 284--303. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. X. Feng, R. Ferreira, and Z. Shao. On the relationship between concurrent separation logic and assume-guarantee reasoning. In ESOP'07: European Symposium on Programming, volume 4421 of LNCS, pages 173--188. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. Gotsman, J. Berdine, B. Cook, and M. Sagiv. Thread-modular shape analysis. In PLDI'07: Conference on Programming Language Design and Implementation, pages 266--277. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. L. Harris, K. Fraser, and I. A. Pratt. A practical multi-word compare-and-swap operation. In DISC'02: Symposium on Distributed Computing, volume 2508 of LNCS, pages 265--279. Springer, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. D. Hendler, N. Shavit, and L. Yerushalmi. A scalable lock-free stack algorithm. In SPAA'04: Symposium on Parallelism in Algorithms and Architectures, pages 206--215. ACM, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Herlihy. Wait-free synchronization. ACM Trans. Program. Lang. Syst., 13(1):124--149, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. M. Herlihy, V. Luchangco, and M. Moir. Obstruction-free synchronization: Double-ended queues as an example. In ICDCS'03: International Conference on Distributed Computing Systems, pages 522--529. IEEE, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C. B. Jones. Specification and design of (parallel) programs. In IFIP Congress, pages 321--332. North-Holland, 1983.Google ScholarGoogle Scholar
  19. N. Kobayashi and D. Sangiorgi. A hybrid type system for lock-freedom of mobile processes. In CAV'08: Conference on Computer Aided Verification, volume 5123 of LNCS, pages 80--93. Springer, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. O. Lichtenstein, A. Pnueli, and L. D. Zuck. The glory of the past. In Conference on Logics of Programs, volume 193 of LNCS, pages 196--218. Springer, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. S. Magill, J. Berdine, E. M. Clarke, and B. Cook. Arithmetic strengthening for shape analysis. In SAS'07: Static Analysis Symposium, volume 4634 of LNCS, pages 419--436. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Z. Manna and A. Pnueli. The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer-Verlag, Berlin, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. H. Massalin and C. Pu. A lock-free multiprocessor OS kernel (Abstract). Operating Systems Review, 26(2):108, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  24. K. L. McMillan. Circular compositional reasoning about liveness. In CHARME'99: Conference on Correct Hardware Design and Verification Methods, volume 1703 of LNCS, pages 342--345. Springer, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. M. Michael. High performance dynamic lock-free hash tables and list-based sets. In SPAA'02: Symposium on Parallelism in Algorithms and Architectures, pages 73--82. ACM, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. M. Michael and M. L. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In PODC'96: Symposium on Principles of Distributed Computing, pages 267--275. ACM, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. J. S. Moore. A mechanically checked proof of a multiprocessor result via a uniprocessor view. Formal Methods in System Design, 14(2):213--228, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. P. W. O'Hearn. Resources, concurrency and local reasoning. Theor. Comput. Sci., 375(1--3):271--307, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. A. Pnueli. In transition from global to modular temporal reasoning about programs. In Logics and Models of Concurrent Systems, pages 123--144. Springer, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. J. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS'02: Symposium on Logic in Computer Science, pages 55--74. IEEE, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. S. Sarkar, P. Sewell, F. Zappa Nardelli, S. Owens, T. Ridge, T. Braibant, M. Myreen, and J. Alglave. The semantics of x86 multiprocessor machine code. This volume.Google ScholarGoogle Scholar
  32. H. Simpson. Four-slot fully asynchronous communication mechanism. IEE Proceedings, 137(1):17--30, 1990.Google ScholarGoogle Scholar
  33. R. K. Treiber. Systems programming: Coping with parallelism. Technical Report RJ 5118, IBM Almaden Research Center, 1986.Google ScholarGoogle Scholar
  34. V. Vafeiadis. Modular fine-grained concurrency verification. PhD Thesis, University of Cambridge Computer Laboratory, 2008.Google ScholarGoogle Scholar
  35. V. Vafeiadis and M. J. Parkinson. A marriage of rely/guarantee and separation logic. In CONCUR'07: Conference on Concurrency Theory, volume 4703 of LNCS, pages 256--271. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. M. Vardi. Verification of concurrent programs-the automata-theoretic framework. Ann. Pure Appl. Logic, 51:79--98, 1991.Google ScholarGoogle ScholarCross RefCross Ref
  37. M. T. Vechev and E. Yahav. Deriving linearizable fine-grained concurrent objects. In PLDI'08: Conference on Programming Languages Design and Implementation, pages 125--135. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. I. William N. Scherer, D. Lea, and M. L. Scott. Scalable synchronous queues. In PPoPP'06: Symposium on Principles and Practice of Parallel Programming, pages 147--156. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Proving that non-blocking algorithms don't block

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in
              • Published in

                cover image ACM Conferences
                POPL '09: Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                January 2009
                464 pages
                ISBN:9781605583792
                DOI:10.1145/1480881
                • cover image ACM SIGPLAN Notices
                  ACM SIGPLAN Notices  Volume 44, Issue 1
                  POPL '09
                  January 2009
                  453 pages
                  ISSN:0362-1340
                  EISSN:1558-1160
                  DOI:10.1145/1594834
                  Issue’s Table of Contents

                Copyright © 2009 ACM

                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]

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 21 January 2009

                Permissions

                Request permissions about this article.

                Request Permissions

                Check for updates

                Qualifiers

                • research-article

                Acceptance Rates

                Overall Acceptance Rate824of4,130submissions,20%

                Upcoming Conference

                POPL '25

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader