Abstract

Developing a bug-free compiler is difficult; modern optimizing compilers are among the most complex software systems humans build. Fuzzing is one way to identify subtle compiler bugs that are hard to find with human-constructed tests. Grammar-based fuzzing, however, requires a grammar for a compiler's input language, and can miss bugs induced by code that does not actually satisfy the grammar the compiler should accept. Grammar-based fuzzing also seldom uses advanced modern fuzzing techniques based on coverage feedback. However, modern mutation-based fuzzers are often ineffective for testing compilers because most inputs they generate do not even come close to getting past the parsing stage of compilation. This paper introduces a technique for taking a modern mutation-based fuzzer (AFL in our case, but the method is general) and augmenting it with operators taken from mutation testing, and program splicing. We conduct a controlled study to show that our hybrid approaches significantly improve fuzzing effectiveness qualitatively (consistently finding unique bugs that baseline approaches do not) and quantitatively (typically finding more unique bugs in the same time span, despite fewer program executions). Our easy-to-apply approach has allowed us to report more than 100 confirmed and fixed bugs in production compilers, and found a bug in the Solidity compiler that earned a security bounty.

Keywords:
Fuzz testing Computer science Compiler Parsing Programming language Grammar Interprocedural optimization Optimizing compiler Loop optimization Software Linguistics

Metrics

12
Cited By
4.83
FWCI (Field Weighted Citation Impact)
17
Refs
0.92
Citation Normalized Percentile
Is in top 1%
Is in top 10%

Citation History

Topics

Software Testing and Debugging Techniques
Physical Sciences →  Computer Science →  Software
Software Engineering Research
Physical Sciences →  Computer Science →  Information Systems
Advanced Malware Detection Techniques
Physical Sciences →  Computer Science →  Signal Processing

Related Documents

JOURNAL ARTICLE

Compiler Fuzzing

Nagisa Ishiura

Journal:   IEICE ESS FUNDAMENTALS REVIEW Year: 2015 Vol: 9 (3)Pages: 188-196
JOURNAL ARTICLE

Backend Bug Finder — a platform for effective compiler fuzzing

Daniil StepanovVladimir Itsykson

Journal:   Information and Control Systems Year: 2022 Pages: 31-40
BOOK-CHAPTER

FuzzBoost: Reinforcement Compiler Fuzzing

Xiaoting LiXiao LiuLingwei ChenRupesh PrajapatiDinghao Wu

Lecture notes in computer science Year: 2022 Pages: 359-375
JOURNAL ARTICLE

Many-core compiler fuzzing

Christopher LidburyAndrei LascuNathan ChongAlastair F. Donaldson

Journal:   ACM SIGPLAN Notices Year: 2015 Vol: 50 (6)Pages: 65-76
© 2026 ScienceGate Book Chapters — All rights reserved.