Abstract
Efficient implementations of concurrent objects such as semaphores, locks, and atomic collections are essential to modern computing. Programming such objects is error prone: in minimizing the synchronization overhead between concurrent object invocations, one risks the conformance to reference implementations — or in formal terms, one risks violating observational refinement. Precisely testing this refinement even within a single execution is intractable, limiting existing approaches to executions with very few object invocations. We develop scalable and effective algorithms for detecting refinement violations. Our algorithms are founded on incremental, symbolic reasoning, and exploit foundational insights into the refinement-checking problem. Our approach is sound, in that we detect only actual violations, and scales far beyond existing violation-detection algorithms. Empirically, we find that our approach is practically complete, in that we detect the violations arising in actual executions.
- P. A. Abdulla, F. Haziza, L. Hol´ık, B. Jonsson, and A. Rezine. An integrated specification and verification technique for highly concurrent data structures. In Proc. 19th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS ’13), volume 7795 of LNCS, pages 324–338. Springer, 2013. Google Scholar
Digital Library
- R. Alur, K. L. McMillan, and D. Peled. Model-checking of correctness conditions for concurrent objects. Inf. Comput., 160(1-2):167–188, 2000. Google Scholar
Digital Library
- D. Amit, N. Rinetzky, T. W. Reps, M. Sagiv, and E. Yahav. Comparison under abstraction for verifying linearizability. In Proc. 19th International Conference on Computer Aided Verification (CAV ’07), volume 4590 of LNCS, pages 477–490. Springer, 2007. Google Scholar
Digital Library
- A. Bouajjani, M. Emmi, C. Enea, and J. Hamza. Verifying concurrent programs against sequential specifications. In Proc. 22nd European Symposium on Programming (ESOP ’13), volume 7792 of LNCS, pages 290–309. Springer, 2013. Google Scholar
Digital Library
- 7 Technically, the axioms of this theory without our totality axiom.Google Scholar
- A. Bouajjani, M. Emmi, C. Enea, and J. Hamza. Tractable refinement checking for concurrent objects. In Proc. 42nd Annual ACM SIGPLANSIGACT Symposium on Principles of Programming Languages (POPL ’15), pages 651–662. ACM, 2015. Google Scholar
Digital Library
- S. Burckhardt, C. Dern, M. Musuvathi, and R. Tan. Line-up: a complete and automatic linearizability checker. In Proc. 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’10), pages 330–340. ACM, 2010. Google Scholar
Digital Library
- J. Burnim, G. C. Necula, and K. Sen. Specifying and checking semantic atomicity for multithreaded programs. In Proc. 16th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’11), pages 79–90. ACM, 2011. Google Scholar
Digital Library
- C. Dragoi, A. Gupta, and T. A. Henzinger. Automatic linearizability proofs of concurrent objects with cooperating updates. In Proc. 25th International Conference on Computer Aided Verification (CAV ’13), volume 8044 of LNCS, pages 174–190. Springer, 2013. Google Scholar
Digital Library
- I. Filipovic, P. W. O’Hearn, N. Rinetzky, and H. Yang. Abstraction for concurrent objects. Theor. Comput. Sci., 411(51-52):4379–4398, 2010. Google Scholar
Digital Library
- P. B. Gibbons and E. Korach. Testing shared memories. SIAM J. Comput., 26(4):1208–1244, 1997. Google Scholar
Digital Library
- T. A. Henzinger, A. Sezgin, and V. Vafeiadis. Aspect-oriented linearizability proofs. In Proc. 24th International Conference on Concurrency Theory (CONCUR ’13), volume 8052 of LNCS, pages 242–256. Springer, 2013. Google Scholar
Digital Library
- M. Herlihy and J. M. Wing. Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12(3):463–492, 1990. Google Scholar
Digital Library
- C. M. Kirsch, M. Lippautz, and H. Payer. Fast and scalable, lock-free k-FIFO queues. In Proc. 12th International Conference on Parallel Computing Technologies (PaCT 13), volume 7979 of LNCS, pages 208–223. Springer, 2013.Google Scholar
- Y. Liu, W. Chen, Y. A. Liu, and J. Sun. Model checking linearizability via refinement. In Proc. Second World Congress on Formal Methods (FM ’09), volume 5850 of LNCS, pages 321–337. Springer, 2009. Google Scholar
Digital Library
- M. M. Michael. ABA prevention using single-word instructions. Technical Report RC 23089, IBM Thomas J. Watson Research Center, January 2004.Google Scholar
- M. M. Michael and M. L. Scott. Simple, fast, and practical nonblocking and blocking concurrent queue algorithms. In Proc. Fifteenth Annual ACM Symposium on Principles of Distributed Computing (PODC ’96), pages 267–275. ACM, 1996. Google Scholar
Digital Library
- P. W. O’Hearn, N. Rinetzky, M. T. Vechev, E. Yahav, and G. Yorsh. Verifying linearizability with hindsight. In Proc. 29th Annual ACM Symposium on Principles of Distributed Computing (PODC ’10), pages 85–94. ACM, 2010. Google Scholar
Digital Library
- O. Shacham, N. G. Bronson, A. Aiken, M. Sagiv, M. T. Vechev, and E. Yahav. Testing atomicity of composed concurrent operations. In Proc. 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA ’11), pages 51–64. ACM, 2011. Google Scholar
Digital Library
- R. Treiber. Systems programming: Coping with parallelism. Technical Report RJ5118, IBM Almaden Res. Ctr., 1986.Google Scholar
- V. Vafeiadis. Automatically proving linearizability. In Proc. 22nd International Conference on Computer Aided Verification (CAV ’10), volume 6174 of LNCS, pages 450–464. Springer, 2010. Google Scholar
Digital Library
- J. M. Wing and C. Gong. Testing and verifying concurrent objects. J. Parallel Distrib. Comput., 17(1-2):164–182, 1993. Google Scholar
Digital Library
- L. Zhang, A. Chattopadhyay, and C. Wang. Round-up: Runtime checking quasi linearizability of concurrent data structures. In 28th IEEE/ACM International Conference on Automated Software Engineering (ASE ’13), pages 4–14. IEEE, 2013.Google Scholar
- S. J. Zhang. Scalable automatic linearizability checking. In Proc. 33rd International Conference on Software Engineering (ICSE ’11), pages 1185–1187. ACM, 2011. Google Scholar
Digital Library
Index Terms
Monitoring refinement via symbolic reasoning
Recommendations
Monitoring refinement via symbolic reasoning
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationEfficient implementations of concurrent objects such as semaphores, locks, and atomic collections are essential to modern computing. Programming such objects is error prone: in minimizing the synchronization overhead between concurrent object ...
Tractable Refinement Checking for Concurrent Objects
POPL '15: Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesEfficient implementations of concurrent objects such as semaphores, locks, and atomic collections are essential to modern computing. Yet programming such objects is error prone: in minimizing the synchronization overhead between concurrent object ...
Verifying Linearizability via Optimized Refinement Checking
Linearizability is an important correctness criterion for implementations of concurrent objects. Automatic checking of linearizability is challenging because it requires checking that: 1) All executions of concurrent operations are serializable, and 2) ...






Comments