Detecting and Escaping Infinite Loops with Bolt

We present Bolt, a novel system for escaping infinite loops. If the user suspects that an executing program is stuck in an infinite loop, the user can invoke Bolt, which attaches to the running process and diagnoses if the program is executing in the infinite loop. If that is the case, the user can direct Bolt to explore multiple strategies to escape the infinite loop, restore the responsiveness of the program and recover useful output.

Bolt operates on stripped x86 and x64 binaries, analyzes both single-thread and multi-threaded programs, dynamically attaches to the program as-needed, dynamically detects the loops in a program and creates program state checkpoints to enable exploration of different escape strategies. This makes it possible for Bolt to detect and escape infinite loops in off-the-shelf software, without available source code, or overhead in standard production use.

Distribution Tarball

Contains all of the source code needed to compile and use the Bolt system. Currently the entire system is compatiable only on Linux x86/x64 systems. Documentation is included in the tarball.
bolt-0.1.tar.gz (coming soon)

Publications

Escaping Infinite Loops with Bolt
Michael Kling
MIT Master's in Engineering Thesis 2012
(Thesis)

Detecting and Escaping Infinite Loops with Jolt
Michael Carbin, Sasa Misailovic, Michael Kling, and Martin Rinard
To Appear In Proceedings of European Conference on Object-Oriented Programming (ECOOP) 2011
(Paper) (Appendix)

Press Coverage

MIT News Article
Slashdot Article
Ars Technica Article

People

Michael Kling
Michael Carbin
Sasa Misailovic
Martin Rinard