一句话:首次大规模实证研究真实开源项目中的非终止缺陷,构建基准并评估终止分析工具。
本文针对非终止缺陷在真实开源项目中难以检测的问题,首次开展大规模实证研究。作者从3,142个GitHub提交中人工收集并分析445个非终止缺陷,按根因进行系统分类,并构建了包含56个真实可复现非终止缺陷和58个修复后终止程序的基准集。基于该基准,作者评估了5个先进终止分析工具,发现其给出正确判定的能力较已有基准明显下降。最后,通过分析工具未处理缺陷的根因,总结了真实项目中检测非终止缺陷的挑战与未来方向。
Termination is a crucial program property. Non-termination bugs can be subtle to detect and may remain hidden for long before they take effect. Many real-world programs still suffer from vast consequences (e.g., no response) caused by non-termination bugs. As a classic problem, termination proving has been studied for many years. Many termination checking tools and techniques have been developed and demonstrated effectiveness on existing well-established benchmarks. However, the capability of these tools in finding practical non-termination bugs has yet to be tested on real-world projects. To fill in this gap, in this paper, we conducted the first large-scale empirical study of non-termination bugs in real-world OSS projects. Specifically, we first devoted substantial manual efforts in collecting and analyzing 445 non-termination bugs from 3,142 GitHub commits and provided a systematic classifi-cation of the bugs based on their root causes. We constructed a new benchmark set characterizing the real-world bugs with simplified programs, including a non-termination dataset with 56 real and reproducible non-termination bugs and a termination dataset with 58 fixed programs. With the constructed benchmark, we evaluated five state-of-the-art termination analysis tools. The results show that the capabilities of the tested tools to make correct verdicts have obviously dropped compared with the existing benchmarks. Meanwhile, we identified the challenges and limitations that these tools face by analyzing the root causes of their unhandled bugs. Fi-nally, we summarized the challenges and future research directions for detecting non-termination bugs in real-world projects.
@inproceedings{paperbot7091,
title = {Large-scale analysis of non-termination bugs in real-world OSS projects},
author = {Xiuhan Shi and Xiaofei Xie and Yi Li and Yao Zhang and Sen Chen and Xiaohong Li},
booktitle = {FSE},
year = {2022},
doi = {10.1145/3540250.3549129}
}