Lool: Low Overhead Optimization Log Guided Compiler Fuzzing

Lool: Low Overhead Optimization Log Guided Compiler Fuzzing

15 September 2024

Compiler fuzzing with randomly generated input programs is a powerful technique for finding compiler crashes and miscompila- tion bugs. Existing fuzzers for compilers are often unguided and must be manually parameterized to cover different parts of the compiler under test. In this work we present Lool, an approach for fuzzing a com- piler with low overhead, guided by optimization log information produced by the compiler. The optimization log tracks program transformations performed by the compiler on the level of indi- vidual methods compiled. We argue that using the optimization log has less overhead than off-the-shelf code coverage tools. At the same time, the optimization log’s per-method data gives more information than code coverage collected over a number of distinct compilations. The level of detail of the optimization log is also easy to tune for the use case of guiding a fuzzer. We are integrating the Lool approach in an existing fuzzer for the GraalVM compiler. We feed the optimization log information into a genetic optimization algorithm for tuning code generation parameters with the goal of covering optimizations that were pre- viously rarely exercised. Initial experiments confirm that varying the generator’s parameters is effective at finding new bugs. The genetic algorithm will automate the exploration of the parameter space to improve testing of currently insufficiently fuzzed parts of the compiler.


Venue : Fuzzing workshop 2024, https://fuzzingworkshop.github.io/

File Name : isstaws24fuzzingmain-p8-p-30a9e696b6-80425-final.pdf