Proving Thread Termination

被引:24
作者
Cook, Byron
Podelski, Andreas
Rybalchenko, Andrey
机构
来源
PLDI'07: PROCEEDINGS OF THE 2007 ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION | 2007年
关键词
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
相关论文
共 40 条
[1]   DEFINING LIVENESS [J].
ALPERN, B ;
SCHNEIDER, FB .
INFORMATION PROCESSING LETTERS, 1985, 21 (04) :181-185
[2]  
BALABAN I, 2006, VMCAT 06
[3]  
Ball T., 2006, EUROSYS 06
[4]  
BERDINE J, 2006, CAV 06
[5]  
BERDINE J, 2007, POPL 07
[6]  
BIERE A, 2002, FMICS 02
[7]  
BLANCHET B, 2003, PLDI 03
[8]  
BOUAJJANI A, 2006, CAV 06
[9]  
BRADLEY A, 2005, CONCUR 05
[10]  
BRADLEY A, 2005, CAV 05