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.
- M. Abadi and L. Lamport. Conjoining specifications. ACM Trans. Program. Lang. Syst., 17(3):507–535, 1995. Google Scholar
Digital Library
- R. Back and Q. Xu. Refinement of fair action systems. Acta Inf., 35 (2):131–165, 1998.Google Scholar
Cross Ref
- P. Boström and P. Müller. Modular verification of finite blocking in non-terminating programs. In ECOOP, pages 639–663, 2015.Google Scholar
- C. Boyapati, R. Lee, and M. Rinard. Ownership types for safe programming: Preventing data races and deadlocks. In OOPSLA, pages 211–230, 2002. Google Scholar
Digital Library
- P. da Rocha Pinto, T. Dinsdale-Young, P. Gardner, and J. Sutherland. Modular termination verification for non-blocking concurrency, 2015.Google Scholar
- Manuscript.Google Scholar
- 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 Scholar
Digital Library
- X. Feng. Local rely-guarantee reasoning. In POPL, pages 315–327, 2009. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- A. Gotsman and H. Yang. Liveness-preserving atomicity abstraction. In ICALP, pages 453–465, 2011. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- T. A. Henzinger, O. Kupferman, and S. K. Rajamani. Fair simulation. Inf. Comput., 173(1):64–81, 2002. Google Scholar
Digital Library
- M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google Scholar
Digital Library
- M. Herlihy and N. Shavit. On the nature of progress. In OPODIS, pages 313–328, 2011. Google Scholar
Digital Library
- M. Herlihy and J. Wing. Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12(3):463–492, 1990. Google Scholar
Digital Library
- J. Hoffmann, M. Marmar, and Z. Shao. Quantitative reasoning for proving lock-freedom. In LICS, pages 124–133, 2013. Google Scholar
Digital Library
- B. Jacobs, D. Bosnacki, and R. Kuiper. Modular termination verification. In ECOOP, pages 664–688, 2015.Google Scholar
- C. B. Jones. Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst., 5(4):596– 619, 1983. Google Scholar
Digital Library
- K. R. M. Leino and P. Müller. A basis for verifying multi-threaded programs. In ESOP, pages 378–393, 2009. Google Scholar
Digital Library
- K. R. M. Leino, P. Müller, and J. Smans. Deadlock-free channels and locks. In ESOP, pages 407–426, 2010. Google Scholar
Digital Library
- H. Liang and X. Feng. Modular verification of linearizability with non-fixed linearization points. In PLDI, pages 459–470, 2013. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- M. M. Michael and M. L. Scott. Simple, fast, and practical nonblocking and blocking concurrent queue algorithms. In PODC, pages 267–275, 1996. Google Scholar
Digital Library
- M. Parkinson, R. Bornat, and C. Calcagno. Variables as resource in Hoare logics. In LICS, pages 137–146, 2006. Google Scholar
Digital Library
- E. W. Stark. A proof technique for rely/guarantee properties. In FSTTCS, pages 369–391, 1985. Google Scholar
Digital Library
- K. Stølen. Shared-state design modulo weak and strong process fairness. In FORTE, pages 479–498, 1992.Google Scholar
- 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 Scholar
Digital Library
- V. Vafeiadis. Modular fine-grained concurrency verification, 2008. PhD Thesis.Google Scholar
- A. Williams, W. Thies, and M. D. Ernst. Static deadlock detection for java libraries. In ECOOP, pages 602–629, 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
A program logic for concurrent objects under fair scheduling
Recommendations
Progress of concurrent objects with partial methods
Various progress properties have been proposed for concurrent objects, such as wait-freedom, lock-freedom, starvation-freedom and deadlock-freedom. However, none of them applies to concurrent objects with partial methods, i.e., methods that are supposed ...
A program logic for concurrent objects under fair scheduling
POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesExisting 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 ...
Rely-Guarantee-Based Simulation for Compositional Verification of Concurrent Program Transformations
Verifying program transformations usually requires proving that the resulting program (the target) refines or is equivalent to the original one (the source). However, the refinement relation between individual sequential threads cannot be preserved in ...






Comments