Line-Up: A Complete and Automatic Linearizability Checker

被引:20
|
作者
Burckhardt, Sebastian
Dern, Chris
Musuvathi, Madanlal
Tan, Roy
机构
关键词
Algorithms; Reliability; Verification; Linearizability; Atomicity; Thread Safety;
D O I
10.1145/1809028.1806634
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:330 / 340
页数:11
相关论文
共 39 条
  • [1] Line-Up: A Complete and Automatic Linearizability Checker
    Burckhardt, Sebastian
    Dern, Chris
    Musuvathi, Madanlal
    Tan, Roy
    PLDI '10: PROCEEDINGS OF THE 2010 ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2010, : 330 - 340
  • [2] nekton: A Linearizability Proof Checker
    Meyer, Roland
    Opaterny, Anton
    Wies, Thomas
    Wolff, Sebastian
    COMPUTER AIDED VERIFICATION, CAV 2023, PT I, 2023, 13964 : 170 - 183
  • [3] A Sound and Complete Proof Technique for Linearizability of Concurrent Data Structures
    Schellhorn, Gerhard
    Derrick, John
    Wehrheim, Heike
    ACM TRANSACTIONS ON COMPUTATIONAL LOGIC, 2014, 15 (04)
  • [4] Scalable Automatic Linearizability Checking
    Zhang, Shao Jie
    2011 33RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2011, : 1185 - 1187
  • [5] Velodrome: A sound and complete dynamic atomicity checker for multithreaded programs
    Flanagan, Cormac
    Freund, Stephen N.
    Yi, Jaeheon
    ACM SIGPLAN NOTICES, 2008, 43 (06) : 293 - 303
  • [6] Sound, Complete, and Tractable Linearizability Monitoring for Concurrent Collections
    Emmi, Michael
    Enea, Constantin
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2018, 2
  • [7] A Universal, Sound, and Complete Forward Reasoning Technique for Machine-Verified Proofs of Linearizability
    Jayanti, Prasad
    Jayanti, Siddhartha
    Yavuz, Ugur Y.
    Hernandez, Lizzie
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (POPL): : 2456 - 2484
  • [8] Round-Up: Runtime Verification of Quasi Linearizability for Concurrent Data Structures
    Zhang, Lu
    Chattopadhyay, Arijit
    Wang, Chao
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2015, 41 (12) : 1202 - 1216
  • [9] Specifying Concurrent Problems: Beyond Linearizability and up to Tasks
    Castaneda, Armando
    Rajsbaum, Sergio
    Raynal, Michel
    DISTRIBUTED COMPUTING (DISC 2015), 2015, 9363 : 420 - 435
  • [10] Velodrome: A Sound and Complete Dynamic Atomicity Checker for Multithreaded Programs
    Flanagan, Cormac
    Freund, Stephen N.
    Yi, Jaeheon
    PLDI'08: PROCEEDINGS OF THE 2008 SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN & IMPLEMENTATION, 2008, : 293 - +