Compiler Testing using Template Java Programs
Zhiqiang Zang, Nathan Wiatrek, Milos Gligoric, August Shi

TL;DR
JAttack is a template-based testing framework for Java compilers, especially JIT compilers, that uses developer-defined templates and random program generation to discover critical bugs, including unknown vulnerabilities.
Contribution
The paper introduces JAttack, a novel framework that combines domain knowledge with random testing for effective compiler bug detection, particularly in JIT Java compilers.
Findings
Discovered six critical bugs in JIT Java compilers.
Four previously unknown bugs, including two CVEs, were confirmed.
Demonstrated effectiveness of template-based random testing in compiler validation.
Abstract
We present JAttack, a framework that enables template-based testing for compilers. Using JAttack, a developer writes a template program that describes a set of programs to be generated and given as test inputs to a compiler. Such a framework enables developers to incorporate their domain knowledge on testing compilers, giving a basic program structure that allows for exploring complex programs that can trigger sophisticated compiler optimizations. A developer writes a template program in the host language (Java) that contains holes to be filled by JAttack. Each hole, written using a domain-specific language, constructs a node within an extended abstract syntax tree (eAST). An eAST node defines the search space for the hole, i.e., a set of expressions and values. JAttack generates programs by executing templates and filling each hole by randomly choosing expressions and values (available…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
