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 条
  • [21] A second-order formulation of non-termination
    Mesnard, Fred
    Payet, Etienne
    INFORMATION PROCESSING LETTERS, 2015, 115 (11) : 882 - 885
  • [22] Unrestricted Termination and Non-termination Arguments for Bit-Vector Programs
    David, Cristina
    Kroening, Daniel
    Lewis, Matt
    PROGRAMMING LANGUAGES AND SYSTEMS, 2015, 9032 : 183 - 204
  • [23] Non-termination Analysis of Logic Programs Using Types
    Voets, Dean
    De Schreye, Danny
    LOGIC-BASED PROGRAM SYNTHESIS AND TRANSFORMATION, 2011, 6564 : 133 - 148
  • [24] Non-Termination of Cycle Rewriting by Finite Automata
    Endrullis, Joerg
    ELECTRONIC PROCEEDINGS IN THEORETICAL COMPUTER SCIENCE, 2016, (225): : 2 - 4
  • [25] Large-Scale Analysis of Non-Termination Bugs in Real-World OSS Projects
    Shi, Xiuhan
    Xie, Xiaofei
    Li, Yi
    Zhang, Yao
    Chen, Sen
    Li, Xiaohong
    PROCEEDINGS OF THE 30TH ACM JOINT MEETING EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, ESEC/FSE 2022, 2022, : 256 - 268
  • [26] A practical analysis of non-termination in large logic programs
    Liang, Senlin
    Kifer, Michael
    THEORY AND PRACTICE OF LOGIC PROGRAMMING, 2013, 13 : 705 - 719
  • [27] Non-Termination Analysis of Linear Loop Programs with Conditionals
    Bi, Zhongqin
    Shan, Meijing
    Wu, Bin
    PROCEEDINGS OF THE 2008 ADVANCED SOFTWARE ENGINEERING & ITS APPLICATIONS, 2008, : 159 - 164
  • [28] HipTNT plus : A Termination and Non-termination Analyzer by Second-Order Abduction
    Le, Ton Chanh
    Ta, Quang-Trung
    Chin, Wei-Ngan
    TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, TACAS 2017, PT II, 2017, 10206 : 370 - 374
  • [29] Research Summary: Non-termination Analysis of Logic Programs
    Voets, Dean
    LOGIC PROGRAMMING, 2009, 5649 : 553 - 554
  • [30] Experiments with Non-Termination Analysis for Java']Java Bytecode
    Payet, Etienne
    Spoto, Fausto
    ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2009, 253 (05) : 83 - 96