Proving Thread Termination

被引:24
|
作者
Cook, Byron
Podelski, Andreas
Rybalchenko, Andrey
机构
关键词
Concurrency; Formal verification; Model checking; Program verification; Termination; Threads;
D O I
10.1145/1250734.1250771
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Concurrent programs are often designed such that certain functions executing within critical threads must terminate. Examples of such cases can be found in operating systems, web servers, e-mail clients, etc. Unfortunately, no known automatic program termination prover supports a practical method of proving the termination of threads. In this paper we describe such it procedure. The procedure's scalability is achieved through the use of environment models that abstract away the surrounding threads. The procedure's accuracy is due to a novel method of incrementally constructing environment abstractions. Our method finds the conditions that a thread requires of its environment in order to establish termination by looking at the conditions necessary to prove that certain paths through the thread represent well-founded relations if executed M isolation of the other threads. The paper gives a description of experimental results using an implementation of our procedure on Windows device drivers, and a description of it previously unknown bug found with the tool.
引用
收藏
页码:320 / 330
页数:11
相关论文
共 50 条
  • [1] Proving thread termination
    Cook, Byron
    Podelski, Andreas
    Rybalchenko, Andrey
    ACM SIGPLAN NOTICES, 2007, 42 (06) : 320 - 330
  • [2] On proving termination by innermost termination
    Gramlich, B
    REWRITING TECHNIQUES AND APPLICATIONS, 1996, 1103 : 93 - 107
  • [3] Proving Termination Through Conditional Termination
    Borralleras, Cristina
    Brockschmidt, Marc
    Larraz, Daniel
    Oliveras, Albert
    Rodriguez-Carbonell, Enric
    Rubio, Albert
    TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, TACAS 2017, PT I, 2017, 10205 : 99 - 117
  • [4] Proving Program Termination
    Cook, Byron
    Podelski, Andreas
    Rybalchenko, Andrey
    COMMUNICATIONS OF THE ACM, 2011, 54 (05) : 88 - 98
  • [5] Proving termination with adornments
    Serebrenik, A
    De Schreye, D
    LOGIC BASED PROGRAM SYNTHESIS AND TRNSFORMATION, 2003, 3018 : 108 - 109
  • [6] Proving mutual termination
    Elenbogen, Dima
    Katz, Shmuel
    Strichman, Ofer
    FORMAL METHODS IN SYSTEM DESIGN, 2015, 47 (02) : 204 - 229
  • [7] Proving conditional termination
    Cook, Byron
    Gulwani, Sumit
    Lev-Ami, Tal
    Rybalchenko, Andrey
    Sagiv, Mooly
    COMPUTER AIDED VERIFICATION, 2008, 5123 : 328 - 340
  • [8] Proving termination by divergence
    Babic, Domagoj
    Hu, Alan J.
    Rakamaric, Zvonimir
    Cook, Byron
    SEFM 2007: FIFTH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING AND FORMAL METHODS, PROCEEDINGS, 2007, : 93 - +
  • [9] Proving mutual termination
    Dima Elenbogen
    Shmuel Katz
    Ofer Strichman
    Formal Methods in System Design, 2015, 47 : 204 - 229
  • [10] Proving Termination by Dependency Pairs and Inductive Theorem Proving
    Carsten Fuhs
    Jürgen Giesl
    Michael Parting
    Peter Schneider-Kamp
    Stephan Swiderski
    Journal of Automated Reasoning, 2011, 47 : 133 - 160