arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1908.10481cs.SEcs.LGcs.PL
收藏

K-CONFIG:在GCC制造商中使用失败的测试用例生成测试用例

K-CONFIG: Using Failing Test Cases to Generate Test Cases in GCC Compilers

University of Houston(休斯顿大学)

Md Rafiqul Islam Rabin, Mohammad Amin Alipour

摘要:

编译器的正确性对其他软件系统的安全性和可靠性至关重要,因为编译器中的错误可能会产生不反映程序员意图的程序。由于优化的复杂性,编译器是复杂的软件系统。GCC是一个优化的C编译器,已被用于构建操作系统和许多其他系统软件。在本文中,我们描述了K-CONFIG,一种使用GCC存储库中报告的错误来生成新的测试输入的方法。我们的主要观点是,bug报告中出现的功能很可能会在未来的bug中重新出现,因为bug修复可能不完整,或者这些功能可能天生就难以实现,因此更容易出错。我们的方法首先聚类失败的测试输入提取的错误报告到集群的相似的测试输入。然后,它使用这些集群为Csmith创建配置,Csmith是C编译器最流行的测试生成器。在我们对两个版本的GCC的实验中,我们的方法可以触发多达36个错误编译失败,179个崩溃,而默认配置的Csmith没有触发任何失败。这项工作表明了在生成新的测试输入时分析和使用报告的错误的好处。

英文摘要:

The correctness of compilers is instrumental in the safety and reliability of other software systems, as bugs in compilers can produce programs that do not reflect the intents of programmers. Compilers are complex software systems due to the complexity of optimization. GCC is an optimizing C compiler that has been used in building operating systems and many other system software. In this paper, we describe K-CONFIG, an approach that uses the bugs reported in the GCC repository to generate new test inputs. Our main insight is that the features appearing in the bug reports are likely to reappear in the future bugs, as the bugfixes can be incomplete or those features may be inherently challenging to implement hence more prone to errors. Our approach first clusters the failing test input extracted from the bug reports into clusters of similar test inputs. It then uses these clusters to create configurations for Csmith, the most popular test generator for C compilers. In our experiments on two versions of GCC, our approach could trigger up to 36 miscompilation failures, and 179 crashes, while Csmith with the default configuration did not trigger any failures. This work signifies the benefits of analyzing and using the reported bugs in the generation of new test inputs.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑