Finding Compiler Bugs through Cross-Language Code Generator and Differential Testing

📅 2025-07-09
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
This work addresses a novel class of correctness defects in cross-language compilation arising from ambiguous responsibility boundaries among compilers. We propose CrossLangFuzzer, the first cross-compiler vulnerability detection framework tailored for the JVM multi-language ecosystem. Grounded in a unified intermediate representation (IR), it integrates three mutation strategies—LangShuffler, FunctionRemoval, and TypeChanger—to automatically generate cross-language test programs featuring complex type systems and inheritance hierarchies. These tests expose behavioral inconsistencies across compilers via differential testing. Evaluated on Kotlin, Groovy, Scala 2/3, and Java compilers, CrossLangFuzzer identified 24 confirmed vulnerabilities; notably, TypeChanger alone accounted for 11. Our findings systematically uncover failure patterns stemming from compiler miscoordination in multi-language interaction scenarios. This work establishes a novel methodology and empirical foundation for reliability verification of cross-language compilers.

Technology Category

Application Category

📝 Abstract
Compilers play a central role in translating high-level code into executable programs, making their correctness essential for ensuring code safety and reliability. While extensive research has focused on verifying the correctness of compilers for single-language compilation, the correctness of cross-language compilation - which involves the interaction between two languages and their respective compilers - remains largely unexplored. To fill this research gap, we propose CrossLangFuzzer, a novel framework that introduces a universal intermediate representation (IR) for JVM-based languages and automatically generates cross-language test programs with diverse type parameters and complex inheritance structures. After generating the initial IR, CrossLangFuzzer applies three mutation techniques - LangShuffler, FunctionRemoval, and TypeChanger - to enhance program diversity. By evaluating both the original and mutated programs across multiple compiler versions, CrossLangFuzzer successfully uncovered 10 confirmed bugs in the Kotlin compiler, 4 confirmed bugs in the Groovy compiler, 7 confirmed bugs in the Scala 3 compiler, 2 confirmed bugs in the Scala 2 compiler, and 1 confirmed bug in the Java compiler. Among all mutators, TypeChanger is the most effective, detecting 11 of the 24 compiler bugs. Furthermore, we analyze the symptoms and root causes of cross-compilation bugs, examining the respective responsibilities of language compilers when incorrect behavior occurs during cross-language compilation. To the best of our knowledge, this is the firstwork specifically focused on identifying and diagnosing compiler bugs in cross-language compilation scenarios. Our research helps to understand these challenges and contributes to improving compiler correctness in multi-language environments.
Problem

Research questions and friction points this paper is trying to address.

Identifying compiler bugs in cross-language compilation scenarios
Proposing a framework to generate diverse cross-language test programs
Analyzing symptoms and root causes of cross-compilation bugs
Innovation

Methods, ideas, or system contributions that make the work stand out.

Universal IR for JVM-based cross-language testing
Mutation techniques enhance program diversity
Differential testing across compiler versions
🔎 Similar Papers
No similar papers found.
Qiong Feng
Qiong Feng
Nanjing University of Science and Technology
Software EngineeringSoftware Architecture
X
Xiaotian Ma
Nanjing University of Science and Technology, China
Z
Ziyuan Feng
Nanjing University of Science and Technology, China
Marat Akhin
Marat Akhin
JetBrains, The Netherlands
W
Wei Song
Nanjing University of Science and Technology, China
Peng Liang
Peng Liang
School of Computer Science, Wuhan University
Software EngineeringSoftware ArchitectureEmpirical Software Engineering