Type-Centric Kotlin Compiler Fuzzing: Preserving Test Program Correctness by Preserving Types
Daniil Stepanov, Marat Akhin, Mikhail Belyaev

TL;DR
This paper introduces a type-centric fuzzing approach for the Kotlin compiler that generates semantically valid programs by focusing on program types, leading to more effective crash detection and discovering over 50 new crashes.
Contribution
The paper presents a novel type-centric enumeration method for Kotlin compiler fuzzing, improving the validity and crash-inducing quality of generated programs.
Findings
Outperforms other fuzzing techniques in generating valid Kotlin programs
Discovered over 50 previously unknown compiler crashes
18 crashes deemed important by the compiler team
Abstract
Kotlin is a relatively new programming language from JetBrains: its development started in 2010 with release 1.0 done in early 2016. The Kotlin compiler, while slowly and steadily becoming more and more mature, still crashes from time to time on the more tricky input programs, not least because of the complexity of its features and their interactions. This makes it a great target for fuzzing, even the basic forms of which can find a significant number of Kotlin compiler crashes. There is a problem with fuzzing, however, closely related to the cause of the crashes: generating a random, non-trivial and semantically valid Kotlin program is hard. In this paper, we talk about type-centric compiler fuzzing in the form of type-centric enumeration, an approach inspired by skeletal program enumeration and based on a combination of generative and mutation-based fuzzing, which solves this…
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.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
