Enhanced Compiler Bug Isolation via Memoized Search

Enhanced Compiler Bug Isolation via Memoized Search
复制标题

DOI:
10.1145/3324884.3416570
复制
发表时间:
2020-09
期刊:
2020 35th IEEE/ACM International Conference on Automated Software Engineering (ASE)
影响因子:
--
通讯作者:
Junjie Chen;Haoyang Ma;Lingming Zhang
Junjie Chen;Haoyang Ma;Lingming Zhang
中科院分区:
其他
文献类型:
--
作者:
Junjie Chen;Haoyang Ma;Lingming Zhang

文献摘要

相似文献

编译器错误可能是灾难性的,因为它们可能影响构建在有错误的编译器上的所有软件系统。同时,诊断编译器错误是非常具有挑战性的,因为通常有限的调试信息是可用的,大量的编译器文件可能是可疑的。更具体地说,当编译一个给定的bug触发测试程序时,通常会涉及数百个编译器文件,并且都可以被视为可疑的bug文件。为了方便编译器调试,在本文中,我们提出了第一个加强编译器缺陷隔离方法,通过结构突变,称为RecBi。对于一个给定的bug触发测试程序,RecBi首先增加了传统的局部变异算子与结构的,它转换成一组通过测试程序。由于并非所有通过测试的程序都可以有效地帮助隔离编译器错误,RecBi进一步利用强化学习来智能地指导通过测试程序的生成过程。然后,RecBi根据编译器bug隔离的实践,通过分析生成的通过测试程序和给定的失败测试程序的编译器执行轨迹,对所有可疑文件进行排名。本文对两个最流行的C开源编译器的120个真实的bug进行了实验,GCC和LLVM的测试结果表明,RecBi能够隔离Top-1/Top-5/Top-10编译器文件中约23%/58%/78%的错误,并且通过在Top-1/Top-5/Top-10结果方面提高92.86%/55.56%/25.68%的隔离效率,显著优于最先进的编译器错误隔离方法。
Compiler bugs can be disastrous since they could affect all the software systems built on the buggy compilers. Meanwhile, diagnosing compiler bugs is extremely challenging since usually limited debugging information is available and a large number of compiler files can be suspicious. More specifically, when compiling a given bug-triggering test program, hundreds of compiler files are usually involved, and can all be treated as suspicious buggy files. To facilitate compiler debugging, in this paper we propose the first reinforcement compiler bug isolation approach via structural mutation, called RecBi. For a given bug-triggering test program, RecBi first augments traditional local mutation operators with structural ones to transform it into a set of passing test programs. Since not all the passing test programs can help isolate compiler bugs effectively, RecBi further leverages reinforcement learning to intelligently guide the process of passing test program generation. Then, RecBi ranks all the suspicious files by analyzing the compiler execution traces of the generated passing test programs and the given failing test program following the practice of compiler bug isolation. The experimental results on 120 real bugs from two most popular C open-source compilers, i.e., GCC and LLVM, show that RecBi is able to isolate about 23%/58%/78% bugs within Top-l/Top-5/Top-10 compiler files, and significantly outperforms the state-of-the-art compiler bug isolation approach by improving 92.86%/55.56%/25.68% isolation effectiveness in terms of Top-l/Top-5/Top-10 results.