Finding typing compiler bugs

Conference Paper (2022)
Author(s)

Stefanos Chaliasos (Imperial College London)

Thodoris Sotiropoulos (Athens University of Economics and Business)

Diomidis Spinellis (TU Delft - Software Engineering, Athens University of Economics and Business)

Arthur Gervais (Imperial College London)

Benjamin Livshits (Imperial College London)

Dimitris Mitropoulos (National and Capodistrian University of Athens)

Research Group
Software Engineering
Copyright
© 2022 Stefanos Chaliasos, Thodoris Sotiropoulos, D. Spinellis, Arthur Gervais, Benjamin Livshits, Dimitris Mitropoulos
DOI related publication
https://doi.org/10.1145/3519939.3523427
More Info
expand_more
Publication Year
2022
Language
English
Copyright
© 2022 Stefanos Chaliasos, Thodoris Sotiropoulos, D. Spinellis, Arthur Gervais, Benjamin Livshits, Dimitris Mitropoulos
Research Group
Software Engineering
Pages (from-to)
183-198
ISBN (electronic)
9781450392655
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

We propose a testing framework for validating static typing procedures in compilers. Our core component is a program generator suitably crafted for producing programs that are likely to trigger typing compiler bugs. One of our main contributions is that our program generator gives rise to transformation-based compiler testing for finding typing bugs. We present two novel approaches (type erasure mutation and type overwriting mutation) that apply targeted transformations to an input program to reveal type inference and soundness compiler bugs respectively. Both approaches are guided by an intra-procedural type inference analysis used to capture type information flow. We implement our techniques as a tool, which we call Hephaestus. The extensibility of Hephaestus enables us to test the compilers of three popular JVM languages: Java, Kotlin, and Groovy. Within nine months of testing, we have found 156 bugs (137 confirmed and 85 fixed) with diverse manifestations and root causes in all the examined compilers. Most of the discovered bugs lie in the heart of many critical components related to static typing, such as type inference.

Files

3519939.3523427_1.pdf
(pdf | 0.447 Mb)
- Embargo expired in 02-01-2023
License info not available