Principal Investigator Michael Carbin
Infinite loops can make applications unresponsive. Potential problems include lost work or output, denied access to application functionality, and a lack of responses to urgent events. Bolt is a novel system for dynamically detecting and escaping infinite loops. At the user’s request, Bolt attaches to an application to monitor its progress. Specifically, Bolt records the program state at the start of each loop iteration. If two consecutive loop iterations produce the same state, Bolt reports to the user that the application is in an infinite loop. At the user’s option, Bolt can then transfer control to a statement following the loop, thereby allowing the application to escape the infinite loop and ideally continue its productive execution.
Bolt operates on stripped x86 and x64 binaries, dynamically attaches and detaches to and from the program as needed, and dynamically detects loops and creates program state checkpoints to enable exploration of different escape strategies. Bolt can detect and escape from loops in off-the- shelf software, without available source code, and with no overhead in standard production use.