Compiler bug isolation via effective witness test program generation

Compiler bug isolation via effective witness test program generation
复制标题

DOI:
10.1145/3338906.3338957
复制
发表时间:
2019-08
期刊:
Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
影响因子:
--
通讯作者:
Junjie Chen;Jiaqi Han;Peiyi Sun;Lingming Zhang;Dan Hao;Lu Zhang-
Junjie Chen;Jiaqi Han;Peiyi Sun;Lingming Zhang;Dan Hao;Lu Zhang-
中科院分区:
其他
文献类型:
--
作者:
Junjie Chen;Jiaqi Han;Peiyi Sun;Lingming Zhang;Dan Hao;Lu Zhang-

文献摘要

被引文献

相似文献

编译器错误是极其有害的,但众所周知的是很难调试,因为编译器错误通常产生很少的调试信息。给定编译器的错误触发测试程序,在编译期间通常涉及数百个编译器文件,因此是可疑的错误文件。虽然有很多自动化的bug隔离技术,但由于可伸缩性或有效性问题,它们不适用于编译器。为了解决这个问题,本文将编译器缺陷隔离问题转化为一个搜索问题,即,寻找一套有效的证人测试程序,能够消除无辜的编译器文件从嫌疑人。基于这种直觉,我们提出了一种自动化的编译器错误隔离技术,DiWi,它(1)提出了一种基于经验的搜索策略,通过将我们设计的见证突变规则应用于给定的失败测试程序来生成这样一组有效的见证测试程序,以及(2)比较它们的覆盖率,以隔离基于频谱的错误隔离实践中的错误。对来自流行GCC和LLVM编译器的90个真实的bug的实验结果表明,DiWi有效地隔离了Top-10/Top-20编译器文件中66.67%/78.89%的bug,显著优于现有的bug隔离技术。
Compiler bugs are extremely harmful, but are notoriously difficult to debug because compiler bugs usually produce few debugging information. Given a bug-triggering test program for a compiler, hundreds of compiler files are usually involved during compilation, and thus are suspect buggy files. Although there are lots of automated bug isolation techniques, they are not applicable to compilers due to the scalability or effectiveness problem. To solve this problem, in this paper, we transform the compiler bug isolation problem into a search problem, i.e., searching for a set of effective witness test programs that are able to eliminate innocent compiler files from suspects. Based on this intuition, we propose an automated compiler bug isolation technique, DiWi, which (1) proposes a heuristic-based search strategy to generate such a set of effective witness test programs via applying our designed witnessing mutation rules to the given failing test program, and (2) compares their coverage to isolate bugs following the practice of spectrum-based bug isolation. The experimental results on 90 real bugs from popular GCC and LLVM compilers show that DiWi effectively isolates 66.67%/78.89% bugs within Top-10/Top-20 compiler files, significantly outperforming state-of-the-art bug isolation techniques.