Exploiting Virtual Machine Infrastructure To Implement Low-Overhead Error Checking Tools.
Program-specific bugs are a growing problem with modern software. General bugs
&mdash language-level bugs that would be errors in any program, such as memory leaks
and buffer overflows &mdash 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 ... read moreconstruction 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 &mdash subsystems
such as the garbage collector, just-in-time compiler, and memory manager &mdash 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.
Thesis (Ph.D.)--Tufts University, 2012.
Submitted to the Dept. of Computer Science.
Advisor: Samuel Guyer.
Committee: Norman Ramsey, Yannis Smaragdakis, Judith Stafford, and Gregory Crane.
Keyword: Computer science.read less