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 条
  • [1] Proving non-termination
    Gupta, Ashutosh K.
    Henzinger, Thomas A.
    Majumdar, Rupak
    Rybalchenko, Andrey
    Xu, Ru-Gang
    ACM SIGPLAN NOTICES, 2008, 43 (01) : 147 - 158
  • [2] Proving Non-Termination
    Gupta, Ashutosh K.
    Henzinger, Thomas A.
    Majumdar, Rupak
    Rybalchenko, Andrey
    Xu, Ru-Gang
    POPL'08: PROCEEDINGS OF THE 35TH ANNUAL ACM SIGPLAN-SIGACT SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES, 2008, : 147 - 158
  • [3] Proving Non-termination by Program Reversal
    Chatterjee, Krishnendu
    Goharshady, Ehsan Kafshdar
    Novotny, Petr
    Zikelic, Dorde
    PROCEEDINGS OF THE 42ND ACM SIGPLAN INTERNATIONAL CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION (PLDI '21), 2021, : 1033 - 1048
  • [4] Proving Non-Termination via Loop Acceleration
    Frohn, Florian
    Gies, Juergen
    2019 FORMAL METHODS IN COMPUTER AIDED DESIGN (FMCAD), 2019, : 221 - 230
  • [5] Proving Non-termination Using Max-SMT
    Larraz, Daniel
    Nimkar, Kaustubh
    Oliveras, Albert
    Rodriguez-Carbonell, Enric
    Rubio, Albert
    COMPUTER AIDED VERIFICATION, CAV 2014, 2014, 8559 : 779 - 796
  • [6] Proving Non-Termination and Lower Runtime Bounds with LoAT (System Description)
    Frohn, Florian
    Giesl, Juergen
    AUTOMATED REASONING, IJCAR 2022, 2022, 13385 : 712 - 722
  • [7] Proving Non-Termination by Acceleration Driven Clause Learning (Short Paper)
    Frohn, Florian
    Giesl, Juergen
    AUTOMATED DEDUCTION, CADE 29, 2023, 14132 : 220 - 233
  • [8] Termination and Non-termination Specification Inference
    Le, Ton Chanh
    Qin, Shengchao
    Chin, Wei-Ngan
    ACM SIGPLAN NOTICES, 2015, 50 (06) : 489 - 498
  • [9] Non-termination in idempotent semirings
    Hoefner, Peter
    Struth, Georg
    RELATIONS AND KLEENE ALGEBRA IN COMPUTER SCIENCE, 2008, 4988 : 206 - 220
  • [10] DynamiTe: Dynamic Termination and Non-termination Proofs
    Le, Ton Chanh
    Antonopoulos, Timos
    Fathololumi, Parisa
    Koskinen, Eric
    Nguyen, ThanhVu
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2020, 4