Finding Unstable Code via Compiler-Driven Differential Testing
Shaohua Li, Zhendong Su
Abstract
Unstable code refers to code that has inconsistent or unstable run-time semantics due to undefined behavior (UB) in the program. Compilers exploit UB by assuming that UB never occurs, which allows them to generate efficient but potentially semantically inconsistent binaries. Practitioners have put great research and engineering effort into designing dynamic tools such as sanitizers for frequently occurring UBs. However, it remains a big challenge how to detect UBs that are beyond the reach of current techniques.
Topics & Concepts
CompilerComputer scienceExploitProgramming languageCode (set theory)Semantics (computer science)Code generationParallel computingOperating systemComputer securitySet (abstract data type)Key (lock)Software Testing and Debugging TechniquesFormal Methods in VerificationSoftware Reliability and Analysis Research