Fuzzing for JVM testing: how and why

Day 2 /  / Track 4  /  RU

Users primarily expect that Java machines work correctly and stably. At our company we are creating our own VM and actively developing optimizing JIT compiler, based on LLVM. But every new optimization comes with a risk that new functional bugs may appear or ancient issues, buried in the old code and never evident till now, may resurface.

So how can we find those bugs in time when every week dozens and hundreds of thousands of code lines are integrated in our compiler? No one knows the definite answer to this question, but we have been successfully using Fuzzer — a generator of random tests, whose configuration makes them fairly effective in finding issues in the compiler. In such a case, we get a stable, determined way of reproducing those issues on a test with the sources available.

In this session we will tell how and why we use generator of random Java programs, how this generator is built and what can be done for generating Scala, Kotlin and other such programs which can be compiled into Java bytecode.

Download presentation
Maxim Kazantsev
Maxim Kazantsev
Azul Systems

Compiler engineer at Azul Systems. For the last 5 years is into optimizing JIT compilers for virtual machines. Since 2017 works on Zing VM, actively commits to LLVM. Before that used to work with ART and Dalvik virtual machines at Intel, along with contributing to Android Open Source Project.

Speaker's previous talks