返回
Finding Compiler Bugs through Cross-Language Code Generator and Differential Testing
DOI:10.1145/3763152.png)
摘要
En 中文
编译器在将高级代码翻译为可执行程序的过程中扮演着核心角色,其正确性对于确保代码的安全性和可靠性至关重要。尽管大量研究已关注单语言编译器正确性的验证,但涉及两种语言及其各自编译器交互的跨语言编译正确性仍 largely unexplored。为填补这一研究空白,我们提出 CROSSLANGFUZZER,一个引入通用中间表示(IR)的框架,用于 JVM 基于的语言,并自动生成包含多样化类型参数和复杂继承结构的跨语言测试程序。在生成初始 IR 后,CROSSLANGFUZZER 应用三种变异技术——LangShuffler、FunctionRemoval 和 TypeChanger——以增强程序多样性。通过在多个编译器版本上评估原始及变异程序,CROSSLANGFUZZER 成功发现了 10 个 Kotlin 编译器的确认错误、4 个 Groovy 编译器的确认错误、7 个 Scala 3 编译器的确认错误、2 个 Scala 2 编译器的确认错误以及 1 个 Java 编译器的确认错误。在所有变异器中,TypeChanger 效果最为显著,检测出 24 个编译器错误中的 11 个。此外,我们分析了跨编译错误的症状和根本原因,并考察了在跨语言编译过程中出现错误行为时语言编译器的各自责任。据我们所知,这是首个专门聚焦于识别和诊断跨语言编译场景中编译器错误的 work。我们的研究有助于理解这些挑战,并为改进多语言环境下的编译器正确性做出贡献。
Keyword:
Cross-Language
Code Generator
JVM
Differential Testing
期刊
P
IF:
2.8
论文数:
308
被引数:
4.7K

