Exploiting virtual machine infrastructure to implement low-overhead error checking tools

Samuel Z. Guyer, Edward E. Aftandilian · 2012

Program-specific bugs are a growing problem with modern software. General bugs—language-level bugs that would be errors in any program, such as memory leaks and buffer overflows—have mostly been solved by modern programming languages and tools. However, program-specific bugs, such as violating data structure invariants, remain. In addition, modern trends such as construction of large programs, use of large standard libraries and third-party frameworks, and increasingly higher-level languages conspire to make program-specific bugs even more common in the future. Static analysis tools struggle with the size of these programs and language features such as dynamic classloading. Current dynamic analysis tools are too slow, often incurring a slowdown of 1-2 orders of magnitude, and thus can only be used in a debugging environment. In this thesis, we introduce a set of dynamic analysis tools that help programmers find program-specific bugs in their software. These dynamic analysis tools differ from previous work in that they leverage virtual machine infrastructure—subsystems such as the garbage collector, just-in-time compiler, and memory manager—to check programmer-specified properties at much lower cost. We show that the performance overheads of our tools are very low, typically under 5%, and that they are useful for finding bugs in real programs. These tools hit a sweet spot of performance overhead vs. code coverage, and we believe that they will help address the growing problem of program-specific bugs in production software.

Read the paper · More papers on PaperTik