Bounded Verification of Multi-threaded Programs via Lazy Sequentialization

被引:0
|
作者
Inverso, Omar [1 ,6 ]
Tomasco, Ermenegildo [2 ]
Fischer, Bernd [3 ]
La Torre, Salvatore [4 ]
Parlato, Gennaro [5 ]
机构
[1] Gran Sasso Sci Inst, Laquila, Italy
[2] Agenzia Entrate, Via Angelo Rubino, I-84078 Vallo Della Lucania, SA, Italy
[3] Stellenbosch Univ, Div Comp Sci, Private Bag X1, ZA-7602 Matieland, South Africa
[4] Univ Salerno, Dipartimento Informat, Via Giovanni Paolo II 132, I-84084 Fisciano, SA, Italy
[5] Univ Molise, Dipartimento Biosci & Terr, I-86090 Pesche, IS, Italy
[6] Gran Sasso Sci Inst GSSI, Viale F Crispi 7, I-67100 Laquila, AQ, Italy
基金
英国工程与自然科学研究理事会;
关键词
Concurrent program analysis; sequentialization; MODEL-CHECKING; CONCURRENT PROGRAMS; CSEQ;
D O I
10.1145/3478536
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Bounded verification techniques such as bounded model checking (BMC) have successfully been used for many practical program analysis problems, but concurrency still poses a challenge. Here, we describe a new approach to BMC of sequentially consistent imperative programs that use POSIX threads. We first translate the multi-threaded program into a nondeterministic sequential program that preserves reachability for all round-robin schedules with a given bound on the number of rounds. We then reuse existing high-performance BMC tools as backends for the sequential verification problem. Our translation is carefully designed to introduce very small memory overheads and very few sources of nondeterminism, so it produces tight SAT/SMT formulae, and is thus very effective in practice: Our Lazy-CSeq tool implementing this translation for the C programming language won several gold and silver medals in the concurrency category of the Software Verification Competitions (SV-COMP) 2014-2021 and was able to find errors in programs where all other techniques (including testing) failed. In this article, we give a detailed description of our translation and prove its correctness, sketch its implementation using the CSeq framework, and report on a detailed evaluation and comparison of our approach.
引用
收藏
页数:50
相关论文
共 50 条
  • [1] Bounded Model Checking of Multi-threaded C Programs via Lazy Sequentialization
    Inverso, Omar
    Tomasco, Ermenegildo
    Fischer, Bernd
    La Torre, Salvatore
    Parlato, Gennaro
    [J]. COMPUTER AIDED VERIFICATION, CAV 2014, 2014, 8559 : 585 - 602
  • [2] Lazy-CSeq-SP: Boosting Sequentialization-Based Verification of Multi-threaded C Programs via Symbolic Pruning of Redundant Schedules
    Herdt, Vladimir
    Le, Hoang M.
    Grosse, Daniel
    Drechsler, Rolf
    [J]. AUTOMATED TECHNOLOGY FOR VERIFICATION AND ANALYSIS, ATVA 2015, 2015, 9364 : 228 - 233
  • [3] Regression Verification for Multi-threaded Programs
    Chaki, Sagar
    Gurfinkel, Arie
    Strichman, Ofer
    [J]. VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, 2012, 7148 : 119 - 135
  • [4] Combining sequentialization-based verification of multi-threaded C programs with symbolic Partial Order Reduction
    Vladimir Herdt
    Hoang M. Le
    Daniel Große
    Rolf Drechsler
    [J]. International Journal on Software Tools for Technology Transfer, 2019, 21 : 545 - 565
  • [5] Combining sequentialization-based verification of multi-threaded C programs with symbolic Partial Order Reduction
    Herdt, Vladimir
    Le, Hoang M.
    Grosse, Daniel
    Drechsler, Rolf
    [J]. INTERNATIONAL JOURNAL ON SOFTWARE TOOLS FOR TECHNOLOGY TRANSFER, 2019, 21 (05) : 545 - 565
  • [6] Reduction for Compositional Verification of Multi-Threaded Programs
    Popeea, Corneliu
    Rybalchenko, Andrey
    Wilhelm, Andreas
    [J]. 2014 FORMAL METHODS IN COMPUTER-AIDED DESIGN (FMCAD), 2014, : 187 - 194
  • [7] Effective verification of confidentiality for multi-threaded programs
    Ngo, Tri Minh
    Stoelinga, Marielle
    Huisman, Marieke
    [J]. JOURNAL OF COMPUTER SECURITY, 2014, 22 (02) : 269 - 300
  • [8] A Dynamic Logic for deductive verification of multi-threaded programs
    Beckert, Bernhard
    Klebanov, Vladimir
    [J]. FORMAL ASPECTS OF COMPUTING, 2013, 25 (03) : 405 - 437
  • [9] Distributed Verification of Multi-threaded C++ Programs
    Edelkamp, Stefan
    Jabbar, Shahid
    Sulewski, Damian
    [J]. ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2008, 198 (01) : 33 - 46
  • [10] Lazy-CSeq: A Context-Bounded Model Checking Tool for Multi-Threaded C-Programs
    Inverso, Omar
    Nguyen, Truc L.
    Fischer, Bernd
    La Torre, Salvatore
    Parlato, Gennaro
    [J]. 2015 30TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE), 2015, : 807 - 812