Murphy: An Environment for Advance Identification of Run-time Failures

File(s)
Date
2012-04-27Author
Miller, Zach
Tannenbaum, Todd
Liblit, Ben
Metadata
Show full item recordAbstract
Applications do not typically view the kernel as a source of bad input. However, the kernel can behave in unusual (yet permissible) ways for which applications are badly unprepared. We present Murphy, a language-agnostic tool that helps developers discover and isolate
run-time failures in their programs by simulating difficult-to-reproduce but completely-legitimate interactions between the application and the
kernel. Murphy makes it easy to enable or disable sets of kernel interactions, called gremlins, so developers can focus on the failure
scenarios that are important to them. Gremlins are implemented using the ptrace interface, intercepting and potentially modifying an application's system call invocation while requiring no invasive changes to the host machine.
We show how to use Murphy in a variety of modes to find different
classes of errors, present examples of the kernel interactions that are
tested, and explain how to apply delta debugging techniques to isolate the code causing the failure. While our primary goal was the development of a tool to assist in new software development, we
successfully demonstrate that Murphy also has the capability to find bugs in hardened, widely-deployed software.
Subject
software engineering
Murphy's Law
automated testing
software development tools
system interposition agent
kernel
automated debugging
delta debugging
MaliciOS
Permanent Link
http://digital.library.wisc.edu/1793/61363Type
Technical Report
Citation
TR1770