Verifying Safety Properties of Concurrent Heap-Manipulating Programs

被引:2
|
作者
Yahav, Eran [1 ]
Sagiv, Mooly [2 ]
机构
[1] IBM TJ Watson Res Ctr, Hawthorne, NY USA
[2] Tel Aviv Univ, Sch Comp Sci, IL-69978 Tel Aviv, Israel
关键词
Algorithms; Languages; Theory; Verification; Abstract interpretation; verification; concurrency; shape-analysis; safety properties; !text type='Java']Java[!/text; PARAMETRIC SHAPE-ANALYSIS; MODEL-CHECKING; ENVIRONMENT ABSTRACTION; SYSTEMS; TVLA; TOOL;
D O I
10.1145/1745312.1745315
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We provide a parametric framework for verifying safety properties of concurrent heap-manipulating programs. The framework combines thread-scheduling information with information about the shape of the heap. This leads to verification algorithms that are more precise than existing techniques. The framework also provides a precise shape-analysis algorithm for concurrent programs. In contrast to most existing verification techniques, we do not put a bound on the number of allocated objects. The framework produces interesting results even when analyzing programs with an unbounded number of threads. The framework is applied to successfully verify the following properties of a concurrent program: -Concurrent manipulation of linked-list based ADT preserves the ADT datatype invariant. -The program does not perform inconsistent updates due to interference. -The program does not reach a deadlock. -The program does not produce runtime errors due to illegal thread interactions. We also found bugs in erroneous programs violating such properties. A prototype of our framework has been implemented and applied to small, but interesting, example programs.
引用
收藏
页数:50
相关论文
共 50 条
  • [1] Verifying heap-manipulating programs in an SMT framework
    Rakamaric, Zvonimir
    Bruttomesso, Roberto
    Hu, Alan J.
    Cimatti, Alessandro
    AUTOMATED TECHNOLOGY FOR VERIFICATION AND ANALYSIS, PROCEEDINGS, 2007, 4762 : 237 - +
  • [2] Verifying Heap-Manipulating Programs with Unknown Procedure Calls
    Qin, Shengchao
    Luo, Chenguang
    He, Guanhua
    Craciun, Florin
    Chin, Wei-Ngan
    FORMAL METHODS AND SOFTWARE ENGINEERING, 2010, 6447 : 171 - +
  • [3] Structuring the Verification of Heap-Manipulating Programs
    Nanevski, Aleksandar
    Vafeiadis, Viktor
    Berdine, Josh
    ACM SIGPLAN NOTICES, 2010, 45 (01) : 261 - 273
  • [4] Structuring the Synthesis of Heap-Manipulating Programs
    Polikarpova, Nadia
    Sergey, Ilya
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2019, 3 (POPL):
  • [5] Propositional Reasoning about Safety and Termination of Heap-Manipulating Programs
    David, Cristina
    Kroening, Daniel
    Lewis, Matt
    PROGRAMMING LANGUAGES AND SYSTEMS, 2015, 9032 : 661 - 684
  • [6] Certifying the Synthesis of Heap-Manipulating Programs
    Watanabe, Yasunari
    Gopinathan, Kiran
    Pirlea, George
    Polikarpova, Nadia
    Sergey, Ilya
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2021, 5
  • [7] Structuring the Verification of Heap-Manipulating Programs
    Nanevski, Aleksandar
    Vafeiadis, Viktor
    Berdine, Josh
    POPL'10: PROCEEDINGS OF THE 37TH ANNUAL ACM SIGPLAN-SIGACT SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES, 2010, : 261 - 273
  • [8] Automatic Numeric Abstractions for Heap-Manipulating Programs
    Magill, Stephen
    Tsai, Ming-Hsien
    Lee, Peter
    Tsay, Yih-Kuen
    POPL'10: PROCEEDINGS OF THE 37TH ANNUAL ACM SIGPLAN-SIGACT SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES, 2010, : 211 - 222
  • [9] Deciding Memory Safety for Single-Pass Heap-Manipulating Programs
    Mathur, Umang
    Murali, Adithya
    Krogmeier, Paul
    Madhusudan, P.
    Viswanathan, Mahesh
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2020, 4 (POPL):
  • [10] Model and Proof Generation for Heap-Manipulating Programs
    Brain, Martin
    David, Cristina
    Kroening, Daniel
    Schrammel, Peter
    PROGRAMMING LANGUAGES AND SYSTEMS, 2014, 8410 : 432 - 452