A fast paced stroll from theory to practice in systems research
Abstract: The talk will be a summary of my research activities from the practical ones, in the fields of cyber-security and compilers testing, to the one of a more theoretical nature in distributed computing.
The first part of the talk will focus on a really recent work on the correctness of debug information in optimized binaries. When debugging issues there is the need to interpret core dumps and reproduce the problems on the same binary deployed in production. This requires the entire toolchain (compiler, linker, debugger) to correctly generate and use debug information. Little attention has been devoted to checking that such information is correctly preserved by modern toolchains’ optimization stages. This is particularly important as managing debug information in optimized production binaries is non-trivial, often leading to toolchain bugs that may hinder post-deployment debugging effort. In this part, we present Debug2, a framework to find debug information bugs in modern toolchains. We have used Debug2 to find 23 bugs in the LLVM toolchain (clang/lldb), 8 bugs in the GNU toolchain (GCC/gdb), and 3 in the Rust toolchain (rustc/lldb).