3.9 Article Proceedings Paper

Finding Compiler Bugs via Live Code Mutation

期刊

ACM SIGPLAN NOTICES
卷 51, 期 10, 页码 849-863

出版社

ASSOC COMPUTING MACHINERY
DOI: 10.1145/3022671.2984038

关键词

Compiler testing; miscompilation; equivalent program variants; automated testing; Algorithms; Languages; Reliability; Verification

资金

  1. United States National Science Foundation (NSF) [1117603, 1319187, 1349528, 1528133]
  2. Google Faculty Research Award
  3. Direct For Computer & Info Scie & Enginr [1349528, 1117603, 1319187] Funding Source: National Science Foundation
  4. Direct For Computer & Info Scie & Enginr
  5. Division of Computing and Communication Foundations [1528133] Funding Source: National Science Foundation
  6. Division Of Computer and Network Systems [1319187] Funding Source: National Science Foundation
  7. Division of Computing and Communication Foundations [1349528, 1117603] Funding Source: National Science Foundation

向作者/读者索取更多资源

Validating optimizing compilers is challenging because it is hard to generate valid test programs (i.e., those that do not expose any undefined behavior). Equivalence Modulo Inputs (EMI) is an effective, promising methodology to tackle this problem. Given a test program with some inputs, EMI mutates the program to derive variants that are semantically equivalent w.r.t. these inputs. The state-of-the-art instantiations of EMI are Orion and Athena, both of which rely on deleting code from or inserting code into code regions that are not executed under the inputs. Although both have demonstrated their ability in finding many bugs in GCC and LLVM, they are still limited due to their mutation strategies that operate only on dead code regions. This paper presents a novel EMI technique that allows mutation in the entire program (i.e., both live and dead regions). By removing the restriction of mutating only the dead regions, our technique significantly increases the EMI variant space. It also helps to more thoroughly stress test compilers as compilers must optimize mutated live code, whereas mutated dead code might be eliminated. Finally, our technique also makes compiler bugs more noticeable as miscompilations on mutated dead code may not be observable. We have realized the proposed technique in Hermes. The evaluation demonstrates Hermes's effectiveness. In 13 months, Hermes found 168 confirmed, valid bugs in GCC and LLVM, of which 132 have already been fixed.

作者

我是这篇论文的作者
点击您的名字以认领此论文并将其添加到您的个人资料中。

评论

主要评分

3.9
评分不足

次要评分

新颖性
-
重要性
-
科学严谨性
-
评价这篇论文

推荐

暂无数据
暂无数据