skip to main content
article

A program logic for concurrent objects under fair scheduling

Authors Info & Claims
Published:11 January 2016Publication History
Skip Abstract Section

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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. R. Back and Q. Xu. Refinement of fair action systems. Acta Inf., 35 (2):131–165, 1998.Google ScholarGoogle ScholarCross RefCross Ref
  3. P. Boström and P. Müller. Modular verification of finite blocking in non-terminating programs. In ECOOP, pages 639–663, 2015.Google ScholarGoogle Scholar
  4. C. Boyapati, R. Lee, and M. Rinard. Ownership types for safe programming: Preventing data races and deadlocks. In OOPSLA, pages 211–230, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. P. da Rocha Pinto, T. Dinsdale-Young, P. Gardner, and J. Sutherland. Modular termination verification for non-blocking concurrency, 2015.Google ScholarGoogle Scholar
  6. Manuscript.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. X. Feng. Local rely-guarantee reasoning. In POPL, pages 315–327, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. A. Gotsman and H. Yang. Liveness-preserving atomicity abstraction. In ICALP, pages 453–465, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. A. Henzinger, O. Kupferman, and S. K. Rajamani. Fair simulation. Inf. Comput., 173(1):64–81, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Herlihy and N. Shavit. On the nature of progress. In OPODIS, pages 313–328, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. M. Herlihy and J. Wing. Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12(3):463–492, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. J. Hoffmann, M. Marmar, and Z. Shao. Quantitative reasoning for proving lock-freedom. In LICS, pages 124–133, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. B. Jacobs, D. Bosnacki, and R. Kuiper. Modular termination verification. In ECOOP, pages 664–688, 2015.Google ScholarGoogle Scholar
  19. C. B. Jones. Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst., 5(4):596– 619, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. K. R. M. Leino and P. Müller. A basis for verifying multi-threaded programs. In ESOP, pages 378–393, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. K. R. M. Leino, P. Müller, and J. Smans. Deadlock-free channels and locks. In ESOP, pages 407–426, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. H. Liang and X. Feng. Modular verification of linearizability with non-fixed linearization points. In PLDI, pages 459–470, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. M. Michael and M. L. Scott. Simple, fast, and practical nonblocking and blocking concurrent queue algorithms. In PODC, pages 267–275, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. M. Parkinson, R. Bornat, and C. Calcagno. Variables as resource in Hoare logics. In LICS, pages 137–146, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. E. W. Stark. A proof technique for rely/guarantee properties. In FSTTCS, pages 369–391, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. K. Stølen. Shared-state design modulo weak and strong process fairness. In FORTE, pages 479–498, 1992.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. V. Vafeiadis. Modular fine-grained concurrency verification, 2008. PhD Thesis.Google ScholarGoogle Scholar
  33. A. Williams, W. Thies, and M. D. Ernst. Static deadlock detection for java libraries. In ECOOP, pages 602–629, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A program logic for concurrent objects under fair scheduling

              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

              Full Access

              • Published in

                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
                • 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

                Copyright © 2016 ACM

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 11 January 2016

                Check for updates

                Qualifiers

                • article

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!