Non-termination Proving at Scale

被引:0
|
作者
Raad, Azalea [1 ,2 ]
Vanegue, Julien [1 ,2 ]
O'Hearn, Peter [3 ]
机构
[1] Imperial Coll London, London, ON, Canada
[2] Bloomberg, New York, NY 10022 USA
[3] UCL, London, England
来源
基金
英国工程与自然科学研究理事会;
关键词
Divergence; non-termination; under-approximation; incorrectness logic;
D O I
10.1145/3689720
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Program termination is a classic non-safety property whose falsification cannot in general be witnessed by a finite trace. This makes testing for non-termination challenging, and also a natural target for symbolic proof. Several works in the literature apply non-termination proving to small, self-contained benchmarks, but it has not been developed for large, real-world projects; as such, despite its allure, non-termination proving has had limited practical impact. We develop a compositional theory for non-termination proving, paving the way for its scalable application to large codebases. Discovering non-termination is an under-approximate problem, and we present UNTER, a sound and complete under-approximate logic for proving non-termination. We then extend UNTER with separation logic and develop UNTERSL for heap-manipulating programs, yielding a compositional proof method amenable to automation via under-approximation and bi-abduction. We extend the Pulse analyser from Meta and develop Pulse(infinity), an automated, compositional prover for non-termination based on UNTERSL. We have run Pulse(infinity) on large codebases and libraries, each comprising hundreds of thousands of lines of code, including OpenSSL, libxml2, libxpm and CryptoPP; we discovered several previously-unknown non-termination bugs and have reported them to developers of these libraries.
引用
收藏
页数:29
相关论文
共 50 条
  • [41] 2LS: Memory Safety and Non-termination (Competition Contribution)
    Malik, Viktor
    Marticek, Stefan
    Schrammel, Peter
    Srivas, Mandayam
    Vojnar, Tomas
    Wahlang, Johanan
    TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, TACAS 2018, PT II, 2018, 10806 : 417 - 421
  • [42] Detecting non-termination of term rewriting systems using an unfolding operator
    Payet, Etienne
    LOGIC-BASED PROGRAM SYNTHESIS AND TRANSFORMATION, 2007, 4407 : 194 - 209
  • [43] Data-driven Recurrent Set Learning For Non-termination Analysis
    Han, Zhilei
    He, Fei
    2023 IEEE/ACM 45TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, ICSE, 2023, : 1303 - 1315
  • [44] On proving termination by innermost termination
    Gramlich, B
    REWRITING TECHNIQUES AND APPLICATIONS, 1996, 1103 : 93 - 107
  • [45] Predicting acute termination and non-termination during ablation of human atrial fibrillation using quantitative indices
    Kappel, Cole
    Reiss, Michael
    Rodrigo, Miguel
    Ganesan, Prasanth
    Narayan, Sanjiv. M. M.
    Rappel, Wouter-Jan
    FRONTIERS IN PHYSIOLOGY, 2022, 13
  • [46] 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
  • [47] EndWatch: A Practical Method for Detecting Non-Termination in Real-World Software
    Zhang, Yao
    Xie, Xiaofei
    Li, Yi
    Chen, Sen
    Zhang, Cen
    Li, Xiaohong
    2023 38TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING, ASE, 2023, : 686 - 697
  • [48] Non-termination Analysis of Polynomial Programs by Solving Semi-Algebraic Systems
    Zhao, Xiaoyan
    ADVANCES IN MULTIMEDIA, SOFTWARE ENGINEERING AND COMPUTING, VOL 1, 2011, 128 : 205 - 211
  • [49] Non-termination of yrast bands at maximum configuration spin in 73Kr
    Steinhardt, T.
    Eberth, J.
    Thelen, O.
    Schnare, H.
    Schwengner, R.
    Plettner, C.
    Kaeubler, L.
    Doenau, F.
    Algora, A.
    de Angelis, G.
    Gadea, A.
    Napoli, D. R.
    Hausmann, M.
    Jungclaus, A.
    Lieb, K. P.
    Mueller, G. A.
    Jenkins, D. G.
    Wadsworth, R.
    Wilson, A. N.
    PHYSICAL REVIEW C, 2010, 81 (05):
  • [50] Proving Thread Termination
    Cook, Byron
    Podelski, Andreas
    Rybalchenko, Andrey
    PLDI'07: PROCEEDINGS OF THE 2007 ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2007, : 320 - 330