Anomaly Detection and Fault Localization Using Runtime State Models
Software systems are impacting every aspect of our daily lives, making software failures expensive, even life endangering. Despite rigorous testing, software bugs inevitably exist, especially in complex systems. Existing tools to aid debugging, such as tracing, profiling, and logging facilities, reveal the behavior of a program’s execution; however, they require the developers to manually correlate the data to diagnose faults. This work is the first to introduce the Runtime State Model, a summarization of a program’s behavior, for software anomaly detection and fault localization. A Runtime State Model is constructed from variables’ value change events of an execution. It consists of a set of states, and state transitions, where a state is a set of variables with their current values, and a state transition is induced by a variable’s value change. Comparisons between states from difference executions can be conducted to detect software anomalies. Deviations from the healthy states also help explain and locate faults in the source code. To automate this process, we implement Xtract, a facility that automatically extracts runtime traces from the Java Virtual Machines and constructs Runtime State Models for multiple simultaneous Java applications. Our evaluation provides evidence that Runtime State Models might be effective in detecting and locating injected faults to a RUBiS server with Xtract.