Abstract
We study abstraction for crash-resilient concurrent objects using non-volatile memory (NVM). We develop a library-correctness criterion that is sound for ensuring contextual refinement in this setting, thus allowing clients to reason about library behaviors in terms of their abstract specifications, and library developers to verify their implementations against the specifications abstracting away from particular client programs. As a semantic foundation we employ a recent NVM model, called Persistent Sequential Consistency, and extend its language and operational semantics with useful specification constructs. The proposed correctness criterion accounts for NVM-related interactions between client and library code due to explicit persist instructions, and for calling policies enforced by libraries. We illustrate our approach on two implementations and specifications of simple persistent objects with different prototypical durability guarantees. Our results provide the first approach to formal compositional reasoning under NVM.
This research was supported by the Israel Science Foundation (grants 1566/18 and 2005/17) and by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (grant agreement no. 851811). Additionally, the first author was supported by the Blavatnik Family Foundation, and the second by the Alon Young Faculty Fellowship.
Chapter PDF
Similar content being viewed by others
References
C++ reference (std::list::pop_front explanation), https://www.cplusplus.com/reference/list/list/pop_front/ [Accessed Jan-2022]
Abdulla, P.A., Haziza, F., HolÃk, L., Jonsson, B., Rezine, A.: An integrated specification and verification technique for highly concurrent data structures. In: TACAS. pp. 324–338. Springer (2013)
Aguilera, M.K., Frølund, S.: Strict linearizability and the power of aborting. Technical Report HPL-2003-241 (2003)
ARM: ARM architecture reference manual: ARMv8, for ARMv8-A architecture profile (2021), https://developer.arm.com/documentation/ddi0487/latest/ [Accessed July-2021]
Batty, M., Dodds, M., Gotsman, A.: Library abstraction for C/C++ concurrency. In: POPL. pp. 235–248. ACM, New York, NY, USA (2013)
Boehm, H.J.: Can Seqlocks get along with programming language memory models? In: MSPC. pp. 12–20. ACM, New York, NY, USA (2012), http://doi.acm.org/10.1145/2247684.2247688
Bouajjani, A., Emmi, M., Enea, C., Hamza, J.: Tractable refinement checking for concurrent objects. In: POPL. p. 651–662. ACM, New York, NY, USA (2015), https://doi.org/10.1145/2676726.2677002
Burckhardt, S., Gotsman, A., Musuvathi, M., Yang, H.: Concurrent library correctness on the TSO memory model. In: ESOP. pp. 87–107. Springer, Berlin, Heidelberg (2012)
Chajed, T., Tassarotti, J., Theng, M., Jung, R., Kaashoek, M.F., Zeldovich, N.: Gojournal: a verified, concurrent, crash-safe journaling system. In: OSDI. pp. 423–439. USENIX Association (Jul 2021), https://www.usenix.org/conference/osdi21/presentation/chajed
Cho, K., Lee, S.H., Raad, A., Kang, J.: Revamping hardware persistency models: View-based and axiomatic persistency models for Intel-x86 and Armv8. In: PLDI. p. 16–31. ACM, New York, NY, USA (2021), https://doi.org/10.1145/3453483.3454027
da Rocha Pinto, P., Dinsdale-Young, T., Gardner, P.: TaDA: A logic for time and data abstraction. In: ECOOP. pp. 207–231. Springer (Jul 2014), https://doi.org/10.1007/978-3-662-44202-9_9
Derrick, J., Doherty, S., Dongol, B., Schellhorn, G., Wehrheim, H.: Verifying correctness of persistent concurrent data structures: a sound and complete method. Formal Aspects of Computing pp. 1–27 (2021)
Filipović, I., O’Hearn, P., Rinetzky, N., Yang, H.: Abstraction for concurrent objects. Theoretical Computer Science 411(51), 4379–4398 (2010), https://www.sciencedirect.com/science/article/pii/S0304397510005001
Friedman, M., Herlihy, M., Marathe, V., Petrank, E.: A persistent lock-free queue for non-volatile memory. In: PPoPP. pp. 28–40. ACM, New York, NY, USA (2018), http://doi.acm.org/10.1145/3178487.3178490
Gorjiara, H., Xu, G.H., Demsky, B.: Jaaru: Efficiently model checking persistent memory programs. In: ASPLOS. p. 415–428. ACM, New York, NY, USA (2021), https://doi.org/10.1145/3445814.3446735
Gotsman, A., Yang, H.: Liveness-preserving atomicity abstraction. In: ICALP. pp. 453–465. Springer, Berlin, Heidelberg (2011)
Gotsman, A., Yang, H.: Linearizability with Ownership Transfer. Logical Methods in Computer Science Volume 9, Issue 3 (Sep 2013), https://lmcs.episciences.org/931
Gu, R., Koenig, J., Ramananandro, T., Shao, Z., Wu, X.N., Weng, S.C., Zhang, H., Guo, Y.: Deep specifications and certified abstraction layers. In: POPL. p. 595–608. ACM, New York, NY, USA (2015), https://doi.org/10.1145/2676726.2676975
Guerraoui, R., Levy, R.R.: Robust emulations of shared memory in a crash-recovery model. In: ICDCS. p. 400–407. IEEE Computer Society, USA (2004)
Hawblitzel, C., Petrank, E., Qadeer, S., Tasiran, S.: Automated and modular refinement reasoning for concurrent programs. In: CAV. pp. 449–465. Springer, Cham (2015)
Herlihy, M.P., Wing, J.M.: Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst. 12(3), 463–492 (Jul 1990), http://doi.acm.org/10.1145/78969.78972
Intel: Persistent Memory Programming (2015), http://pmem.io/
Intel: Intel 64 and ia-32 architectures software developer’s manual (combined volumes) (May 2019), https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf, order Number: 325462-069US
Izraelevitz, J., Mendes, H., Scott, M.L.: Linearizability of persistent memory objects under a full-system-crash failure model. In: DISC. pp. 313–327. Springer, Berlin, Heidelberg (2016)
Khyzha, A., Lahav, O.: Taming x86-TSO persistency. Proc. ACM Program. Lang. 5(POPL), 47:1–47:29 (Jan 2021), https://doi.org/10.1145/3434328
Liang, H., Feng, X., Fu, M.: Rely-guarantee-based simulation for compositional verification of concurrent program transformations. ACM Trans. Program. Lang. Syst. 36(1) (Mar 2014), https://doi.org/10.1145/2576235
Lorch, J.R., Chen, Y., Kapritsos, M., Parno, B., Qadeer, S., Sharma, U., Wilcox, J.R., Zhao, X.: Armada: Low-effort verification of high-performance concurrent programs. In: PLDI. p. 197–210. ACM, New York, NY, USA (2020), https://doi.org/10.1145/3385412.3385971
Raad, A., Doko, M., Rožić, L., Lahav, O., Vafeiadis, V.: On library correctness under weak memory consistency: Specifying and verifying concurrent libraries under declarative consistency models. Proc. ACM Program. Lang. 3(POPL), 68:1–68:31 (Jan 2019), http://doi.acm.org/10.1145/3290381
Raad, A., Lahav, O., Vafeiadis, V.: Persistent Owicki-Gries reasoning: A program logic for reasoning about persistent programs on Intel-x86. Proc. ACM Program. Lang. 4(OOPSLA) (Nov 2020), https://doi.org/10.1145/3428219
Raad, A., Wickerson, J., Neiger, G., Vafeiadis, V.: Persistency semantics of the Intel-x86 architecture. Proc. ACM Program. Lang. 4(POPL) (Jan 2020), https://doi.org/10.1145/3371079
Svendsen, K., Birkedal, L., Parkinson, M.: Modular reasoning about separation of concurrent data structures. In: ECOOP. pp. 169–188. Springer, Berlin, Heidelberg (2013)
Zuriel, Y., Friedman, M., Sheffi, G., Cohen, N., Petrank, E.: Efficient lock-free durable sets. Proc. ACM Program. Lang. 3(OOPSLA), 128:1–128:26 (Oct 2019), http://doi.acm.org/10.1145/3360554
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
Copyright information
© 2022 The Author(s)
About this paper
Cite this paper
Khyzha, A., Lahav, O. (2022). Abstraction for Crash-Resilient Objects. In: Sergey, I. (eds) Programming Languages and Systems. ESOP 2022. Lecture Notes in Computer Science, vol 13240. Springer, Cham. https://doi.org/10.1007/978-3-030-99336-8_10
Download citation
DOI: https://doi.org/10.1007/978-3-030-99336-8_10
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-99335-1
Online ISBN: 978-3-030-99336-8
eBook Packages: Computer ScienceComputer Science (R0)