skip to main content
10.1145/1806596.1806634acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Line-up: a complete and automatic linearizability checker

Published:05 June 2010Publication History

ABSTRACT

Modular development of concurrent applications requires thread-safe components that behave correctly when called concurrently by multiple client threads. This paper focuses on linearizability, a specific formalization of thread safety, where all operations of a concurrent component appear to take effect instantaneously at some point between their call and return. The key insight of this paper is that if a component is intended to be deterministic, then it is possible to build an automatic linearizability checker by systematically enumerating the sequential behaviors of the component and then checking if each its concurrent behavior is equivalent to some sequential behavior.

We develop this insight into a tool called Line-Up, the first complete and automatic checker for deterministic linearizability. It is complete, because any reported violation proves that the implementation is not linearizable with respect to any sequential deterministic specification. It is automatic, requiring no manual abstraction, no manual specification of semantics or commit points, no manually written test suites, no access to source code.

We evaluate Line-Up by analyzing 13 classes with a total of 90 methods in two versions of the .NET Framework 4.0. The violations of deterministic linearizability reported by Line-Up exposed seven errors in the implementation that were fixed by the development team.

References

  1. M. Abadi and L. Lamport. The existence of refinement mappings. Theor. Comput. Sci., 82(2), 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Burckhardt, R. Alur, and M. Martin. CheckFence: Checking consistency of concurrent data types on relaxed memory models. In Programming Language Design and Impl. (PLDI), pages 12--21, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. S. Burckhardt and M. Musuvathi. Effective program verification for relaxed memory models. In Computer-Aided Verification (CAV), pages 107--120, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. R. Colvin, L. Groves, V. Luchangco, and M. Moir. Formal verification of a lazy concurrent list-based set algorithm. In Computer-Aided Verification (CAV), LNCS 4144, pages 475--488. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. K. Coons, M. Musuvathi, and S. Burckhardt. Gambit: Effective unit testing of concurrency libraries. In Principles and Practice of Parallel Programming (PPoPP), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. Doherty, D. Detlefs, L. Grove, C. Flood, V. Luchangco, P. Martin, M. Moir, N. Shavit, and G. Steele. DCAS is not a silver bullet for nonblocking algorithm design. In Symposium on Parallel Algorithms and Architectures (SPAA), pages 216--224, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. T. Elmas, S. Qadeer, and S. Tasiran. A calculus of atomic actions. In Principles of Programming Languages (POPL), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. T. Elmas and S. Tasiran. VyrdMC: Driving runtime refinement checking with model checkers. Electr. Notes Theor. Comput. Sci., 144:41--56, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. T. Elmas, S. Tasiran, and S. Qadeer. VYRD: verifying concurrent programs by runtime refinement-violation detection. In Programming Language Design and Impl. (PLDI), pages 27--37, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. A. Farzan and P. Madhusudan. Monitoring atomicity in concurrent programs. In Computer-Aided Verification (CAV), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. Flanagan and S. Freund. Efficient and precise dynamic race detection. In Programming Language Design and Impl. (PLDI), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. C. Flanagan, S. Freund, and J.Yi. Velodrome: A sound and complete dynamic atomicity checker for multithreaded programs. In Programming Language Design and Impl. (PLDI), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. K. Fraser. Practical Lock-Freedom. PhD thesis, University of Cambridge, 2004.Google ScholarGoogle Scholar
  14. K. Fraser and T. Harris. Concurrent programming without locks. ACM Trans. Comput. Syst., 25(2), 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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
  16. L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Comp., C-28(9):690--691, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. D. Marino, M. Musuvathi, and S. Narayanasamy. LiteRace: Effective sampling for lightweight data-race detection. In Programming Language Design and Impl. (PLDI), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. M. Michael and M. Scott. Correction of a memory management method for lock-free data structures. Technical Report TR599, University of Rochester, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. MSDN, http://blogs.msdn.com/somasegar/archive/2007/11/29/parallel-extensions-to-the-net-fx-ctp.aspx. Parallel Extensions to the .NET FX CTP, November 2007.Google ScholarGoogle Scholar
  20. MSDN, http://msdn.microsoft.com/en-us/library/dd460718(VS.100).aspx. .NET Framework 4 Data Structures for Parallel Programming, November 2009.Google ScholarGoogle Scholar
  21. M. Musuvathi and S. Qadeer. Fair stateless model checking. In Programming Language Design and Impl. (PLDI), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. M. Musuvathi, S. Qadeer, T. Ball, G. Basler, P. Nainar, and I. Neamtiu. Finding and reproducing heisenbugs in concurrent programs. In Operating Systems Design and Impl. (OSDI), pages 267--280, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. C. H. Papadimitriou. The serializability of concurrent database updates. J. ACM, 4(26), October 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multithreaded programs. ACM Trans. Comp. Sys., 15(4):391--411, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. V. Vafeiadis. Shape-value abstraction for verifying linearizability. In Verification, Model Checking and Abstract Interpretation (VMCAI). Springer-Verlag, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. V. Vafeiadis, M. Herlihy, T. Hoare, and M. Shapiro. Proving correctness of highly-concurrent linearisable objects. In Principles and Practice of Parallel Programming (PPoPP), pages 129--136, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Vechev, E. Yahav, and G. Yorsh. Experience with model checking linearizability. In SPIN, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Line-up: a complete and automatic linearizability checker

        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
          PLDI '10: Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation
          June 2010
          514 pages
          ISBN:9781450300193
          DOI:10.1145/1806596
          • cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 45, Issue 6
            PLDI '10
            June 2010
            496 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/1809028
            Issue’s Table of Contents

          Copyright © 2010 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: 5 June 2010

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate406of2,067submissions,20%

          Upcoming Conference

          PLDI '24

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader