skip to main content
research-article
Open Access

Concurrent incorrectness separation logic

Published:12 January 2022Publication History
Skip Abstract Section

Abstract

Incorrectness separation logic (ISL) was recently introduced as a theory of under-approximate reasoning, with the goal of proving that compositional bug catchers find actual bugs. However, ISL only considers sequential programs. Here, we develop concurrent incorrectness separation logic (CISL), which extends ISL to account for bug catching in concurrent programs. Inspired by the work on Views, we design CISL as a parametric framework, which can be instantiated for a number of bug catching scenarios, including race detection, deadlock detection, and memory safety error detection. For each instance, the CISL meta-theory ensures the soundness of incorrectness reasoning for free, thereby guaranteeing that the bugs detected are true positives.

Skip Supplemental Material Section

Supplemental Material

Auxiliary Presentation Video

The 5-minute video presentation

References

  1. Josh Berdine, Tal Lev-Ami, Roman Manevich, G. Ramalingam, and Shmuel Sagiv. 2008. Thread Quantification for Concurrent Shape Analysis. In Computer Aided Verification, 20th International Conference, CAV 2008, Princeton, NJ, USA, July 7-14, 2008, Proceedings (Lecture Notes in Computer Science, Vol. 5123 ), Aarti Gupta and Sharad Malik (Eds.). Springer, 399-413. https://doi.org/10.1007/978-3-540-70545-1_37 Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Sam Blackshear, Nikos Gorogiannis, Peter W. O'Hearn, and Ilya Sergey. 2018. RacerD: Compositional Static Race Detection. Proc. ACM Program. Lang. 2, OOPSLA, Article 144 (Oct. 2018 ), 28 pages. https://doi.org/10.1145/3276514 Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Stephen Brookes and Peter W. O'Hearn. 2016. Concurrent separation logic. SIGLOG News 3, 3 ( 2016 ), 47-65. https: //dl.acm.org/citation.cfm?id= 2984457Google ScholarGoogle Scholar
  4. James Brotherston, Paul Brunet, Nikos Gorogiannis, and Max Kanovich. 2021. A Compositional Deadlock Detector for Android Java. In Proceedings of ASE-36. ACM. http://www0.cs.ucl.ac.uk/staf/J.Brotherston/ASE21/deadlocks.pdfGoogle ScholarGoogle ScholarDigital LibraryDigital Library
  5. Sebastian Burckhardt, Pravesh Kothari, Madanlal Musuvathi, and Santosh Nagarakatte. 2010. A randomized scheduler with probabilistic guarantees of finding bugs. In Proceedings of the 15th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2010, Pittsburgh, Pennsylvania, USA, March 13-17, 2010, James C. Hoe and Vikram S. Adve (Eds.). ACM, 167-178. https://doi.org/10.1145/1736020.1736040 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Thomas Dinsdale-Young, Lars Birkedal, Philippa Gardner, Matthew Parkinson, and Hongseok Yang. 2013. Views: Compositional Reasoning for Concurrent Programs. In Proceedings of the 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Rome, Italy) (POPL '13). ACM, New York, NY, USA, 287-300. https: //doi.org/10.1145/2429069.2429104 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Thomas Dinsdale-Young, Mike Dodds, Philippa Gardner, Matthew J. Parkinson, and Viktor Vafeiadis. 2010. Concurrent Abstract Predicates. In ECOOP 2010-Object-Oriented Programming, Theo D'Hondt (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 504-528.Google ScholarGoogle Scholar
  8. Dino Distefano, Manuel Fähndrich, Francesco Logozzo, and Peter W. O'Hearn. 2019. Scaling static analyses at Facebook. Commun. ACM 62, 8 ( 2019 ), 62-70. https://doi.org/10.1145/3338112 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Nikos Gorogiannis, Peter W. O'Hearn, and Ilya Sergey. 2019. A True Positives Theorem for a Static Race Detector. Proc. ACM Program. Lang. 3, POPL, Article 57 ( Jan. 2019 ), 29 pages. https://doi.org/10.1145/3290370 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Alexey Gotsman, Josh Berdine, Byron Cook, and Mooly Sagiv. 2007. Thread-Modular Shape Analysis. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation (San Diego, California, USA) ( PLDI '07). Association for Computing Machinery, New York, NY, USA, 266-277. https://doi.org/10.1145/1250734.1250765 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. B. Jones. 1983. Tentative Steps Toward a Development Method for Interfering Programs. ACM Trans. Program. Lang. Syst. 5, 4 (Oct. 1983 ), 596-619. https://doi.org/10.1145/69575.69577 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Ralf Jung, David Swasey, Filip Sieczkowski, Kasper Svendsen, Aaron Turon, Lars Birkedal, and Derek Dreyer. 2015. Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Mumbai, India) (POPL '15). Association for Computing Machinery, New York, NY, USA, 637-650. https://doi.org/10.1145/2676726.2676980 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Yanze Li, Bozhen Liu, and Jef Huang. 2019. SWORD: a scalable whole program race detector for Java. In Proceedings of the 41st International Conference on Software Engineering: Companion Proceedings, ICSE 2019, Montreal, QC, Canada, May 25-31, 2019, Joanne M. Atlee, Tevfik Bultan, and Jon Whittle (Eds.). IEEE / ACM, 75-78. https://doi.org/10.1109/ICSECompanion. 2019.00042Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Aleksandar Nanevski, Ruy Ley-Wild, Ilya Sergey, and Germán Andrés Delbianco. 2014. Communicating State Transition Systems for Fine-Grained Concurrent Resources. In Programming Languages and Systems, Zhong Shao (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 290-310.Google ScholarGoogle Scholar
  15. Peter W. O'Hearn. 2004. Resources, Concurrency and Local Reasoning. In CONCUR 2004-Concurrency Theory, Philippa Gardner and Nobuko Yoshida (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 49-67.Google ScholarGoogle Scholar
  16. Peter W. O'Hearn. 2018. Experience Developing and Deploying Concurrency Analysis at Facebook. In Static Analysis, Andreas Podelski (Ed.). Springer International Publishing, Cham, 56-70.Google ScholarGoogle Scholar
  17. Peter W. O'Hearn. 2019. Incorrectness Logic. Proc. ACM Program. Lang. 4, POPL, Article 10 ( Dec. 2019 ), 32 pages. http://doi.acm.org/10.1145/3371078 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Peter W. O'Hearn, John C. Reynolds, and Hongseok Yang. 2001. Local Reasoning about Programs that Alter Data Structures. In Computer Science Logic, 15th International Workshop, CSL 2001. 10th Annual Conference of the EACSL, Paris, France, September 10-13, 2001, Proceedings. 1-19. https://doi.org/10.1007/3-540-44802-0_1 Google ScholarGoogle ScholarCross RefCross Ref
  19. Susan Owicki and David Gries. 1976. An axiomatic proof technique for parallel programs I. Acta Informatica 6, 4 ( 01 Dec 1976 ), 319-340. https://doi.org/10.1007/BF00268134 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Matthew Parkinson. 2010. The Next 700 Separation Logics. In Verified Software: Theories, Tools, Experiments, Gary T. Leavens, Peter O'Hearn, and Sriram K. Rajamani (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 169-182.Google ScholarGoogle Scholar
  21. Shaz Qadeer and Jakob Rehof. 2005. Context-Bounded Model Checking of Concurrent Software. In Tools and Algorithms for the Construction and Analysis of Systems, 11th International Conference, TACAS 2005, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2005, Edinburgh, UK, April 4-8, 2005, Proceedings (Lecture Notes in Computer Science, Vol. 3440 ), Nicolas Halbwachs and Lenore D. Zuck (Eds.). Springer, 93-107. https://doi.org/10.1007/978-3-540-31980-1_7 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Azalea Raad, Josh Berdine, Hoang-Hai Dang, Derek Dreyer, Peter O'Hearn, and Jules Villard. 2020. Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic. In Computer Aided Verification, Shuvendu K. Lahiri and Chao Wang (Eds.). Springer International Publishing, Cham, 225-252.Google ScholarGoogle Scholar
  23. Azalea Raad, Josh Berdine, Derek Dreyer, and Peter O'Hearn. 2022. Technical Appendix. https://www.soundandcomplete. org/papers/POPL2022/CISL/appendix.pdfGoogle ScholarGoogle Scholar
  24. Azalea Raad, Jules Villard, and Philippa Gardner. 2015. CoLoSL: Concurrent Local Subjective Logic. In Programming Languages and Systems, Jan Vitek (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 710-735.Google ScholarGoogle Scholar
  25. Caitlin Sadowski, Edward Aftandilian, Alex Eagle, Liam Miller-Cushon, and Ciera Jaspan. 2018. Lessons from Building Static Analysis Tools at Google. Commun. ACM 61, 4 (March 2018 ), 58-66. https://doi.org/10.1145/3188720 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Konstantin Serebryany and Timur Iskhodzhanov. 2009. ThreadSanitizer: data race detection in practice. In Proceedings of the Workshop on Binary Instrumentation and Applications. 62-71.Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Viktor Vafeiadis and Matthew Parkinson. 2007. A Marriage of Rely/Guarantee and Separation Logic. In CONCUR 2007-Concurrency Theory, Luís Caires and Vasco T. Vasconcelos (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 256-271.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Concurrent incorrectness separation logic

        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 Proceedings of the ACM on Programming Languages
          Proceedings of the ACM on Programming Languages  Volume 6, Issue POPL
          January 2022
          1886 pages
          EISSN:2475-1421
          DOI:10.1145/3511309
          Issue’s Table of Contents

          Copyright © 2022 Owner/Author

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 12 January 2022
          Published in pacmpl Volume 6, Issue POPL

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

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