ABSTRACT
We present Bolt, a novel system for escaping from infinite and long-running loops. Directed by a user, Bolt can attach to a running process and determine if the program is executing an infinite loop. If so, Bolt can deploy multiple strategies to escape the loop, restore the responsiveness of the program, and enable the program to deliver useful output.
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.
- Apache HTTP server project. http://httpd.apache.org.Google Scholar
- Berkeley lab checkpoint/restart. https://ftg.lbl.gov/projects/CheckpointRestart/.Google Scholar
- BLCR frequently asked questions. https://upc-bugs.lbl.gov/blcr/doc/html/FAQ.html\# porting.Google Scholar
- Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org/.Google Scholar
- GNU awk. http://www.gnu.org/s/gawk/.Google Scholar
- The libunwind project. http://www.nongnu.org/libunwind/.Google Scholar
- Linux PAM Modules. https://fedorahosted.org/linux-pam/.Google Scholar
- PHP. http://www.php.net/.Google Scholar
- Poppler. http://poppler.freedesktop.org/.Google Scholar
- Wireshark. http://www.wireshark.org/.Google Scholar
- Gawk: Infinite loop in sub/gsub. http://lists.gnu.org/archive/html/bug-gnu-utils/2002--10/msg00051.html, 2002.Google Scholar
- Java VM: Fix bug 4421494 infinite loop while parsing double literal. http://bugs.openjdk.java.net/show_bug.cgi?id=100119, 2009.Google Scholar
- Poppler: Problem decoding JBIG2Stream stream. https://bugs.freedesktop.org/show_bug.cgi?id=23025, 2009.Google Scholar
- Wireshark: Bug 5303 - Infinite Loop in ZCL Discover Attributes dissection. http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5303, 2010.Google Scholar
- Apache: apr_fnmatch infinite loop on pattern "/*/WEB-INF". http://issues.apache.org/bugzilla/show_bug.cgi?id=51219, 2011.Google Scholar
- PAM: 100% CPU utilization in pam_env parsing. http://bugs.launchpad.net/ubuntu/source/pam/bug/874565, 2011.Google Scholar
- PHP: Bug 53632 PHP hangs on numeric value 2.2250738585072011e-308. http://bugs.php.net/bug.php?id=53632, 2011.Google Scholar
- Working Draft, Standard for Programming Language C+. riptsize www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf, 2011.Google Scholar
- E. Albert, P. Arenas, M. Codish, S. Genaim, G. Puebla, and D. Zanardini. Termination analysis of Java bytecode. In FMOODS, 2008. Google ScholarDigital Library
- A. Bradley, Z. Manna, and H. Sipma. Termination of polynomial programs. In VMCAI, 2005. Google ScholarDigital Library
- D. L. Bruening. Efficient, transparent, and comprehensive runtime code manipulation. PhD thesis, 2004. Google ScholarDigital Library
- J. Burnim, N. Jalbert, C. Stergiou, and K. Sen. Looper: Lightweight detection of infinite loops at runtime. In ASE, 2009. Google ScholarDigital Library
- M. Carbin, D. Kim, S. Misailovic, and M. Rinard. Proving acceptability properties of relaxed nondeterministic approximate programs. In PLDI, 2012. Google ScholarDigital Library
- M. Carbin, S. Misailovic, M. Kling, and M. Rinard. Detecting and escaping infinite loops with Jolt. In ECOOP, 2011. Google ScholarDigital Library
- M. Colón and H. Sipma. Practical methods for proving program termination. In CAV, 2002. Google ScholarDigital Library
- B. Cook, A. Podelski, and A. Rybalchenko. Terminator: beyond safety. In CAV, 2006. Google ScholarDigital Library
- V. Dallmeier, A. Zeller, and B. Meyer. Generating fixes from object behavior anomalies. In ASE, 2009. Google ScholarDigital Library
- A. Gupta, T. Henzinger, R. Majumdar, A. Rybalchenko, and R. Xu. Proving non-termination. In POPL, 2008. Google ScholarDigital Library
- J. Hollingsworth, B. Miller, and J. Cargille. Dynamic program instrumentation for scalable performance tools. In SHPCC, 1994.Google ScholarCross Ref
- H. Jula, P. Tozun, and G. Candea. Communix: A framework for collaborative deadlock immunity. In DSN, 2011. Google ScholarDigital Library
- H. Jula, D. Tralamazza, C. Zamfir, and G. Candea. Deadlock immunity: enabling systems to defend against deadlocks. In OSDI, 2008. Google ScholarDigital Library
- M. Kling. Escaping infinite loops using Bolt. MEng. Thesis, MIT CSAIL, January 2012.Google Scholar
- C. Le Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. A systematic study of automated program repair: Fixing 55 out of 105 bugs for$8 each. In ICSE, 2012. Google ScholarDigital Library
- C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. Reddi, and K. Hazelwood. Pin: Building customized program analysis tools with dynamic instrumentation. In PLDI, 2005. Google ScholarDigital Library
- S. Misailovic, D. Kim, and M. Rinard. Parallelizing sequential programs with statistical accuracy tests. Transactions on Embedded Computing Systems (to appear), 2012.Google Scholar
- S. Misailovic, D. M. Roy, and M. C. Rinard. Probabilistically accurate program transformations. In SAS, 2011. Google ScholarDigital Library
- S. Misailovic, S. Sidiroglou, H. Hoffmann, and M. C. Rinard. Quality of service profiling. In ICSE, 2010. Google ScholarDigital Library
- H. Nguyen and M. Rinard. Detecting and eliminating memory leaks using cyclic memory allocation. In ISMM, 2007. Google ScholarDigital Library
- J. H. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan, W.-F. Wong, Y. Zibin, M. D. Ernst, and M. Rinard. Automatically patching errors in deployed software. In SOSP, 2009. Google ScholarDigital Library
- F. Qin, J. Tucek, J. Sundaresan, and Y. Zhou. Rx: treating bugs as allergies--a safe method to survive software failures. In SOSP, 2005. Google ScholarDigital Library
- M. Rinard. A lossy, synchronization-free, race-full, but still acceptably accurate parallel space-subdivision tree construction algorithm. Technical Report MIT-CSAIL-TR-2012-005, MIT, Feb. 20012.Google Scholar
- M. Rinard. Acceptability-oriented computing. In OOPSLA Onwards, 2003. Google ScholarDigital Library
- M. Rinard, C. Cadar, D. Dumitran, D. Roy, T. Leu, and W. Beebee Jr. Enhancing server availability and security through failure-oblivious computing. In OSDI, 2004. Google ScholarDigital Library
- M. C. Rinard. Probabilistic accuracy bounds for fault-tolerant computations that discard tasks. In ICS, 2006. Google ScholarDigital Library
- M. C. Rinard. Using early phase termination to eliminate load imbalances at barrier synchronization points. In OOPSLA, 2007. Google ScholarDigital Library
- S. Sidiroglou, O. Laadan, C. Perez, N. Viennot, J. Nieh, and A. Keromytis. Assure: automatic software self-healing using rescue points. In ASPLOS, 2009. Google ScholarDigital Library
- S. Sidiroglou, M. E. Locasto, S. W. Boyd, and A. D. Keromytis. Building a reactive immune system for software services. In USENIX Technical, 2005. Google ScholarDigital Library
- S. Sidiroglou, S. Misailovic, H. Hoffmann, and M. C. Rinard. Managing performance vs. accuracy trade-offs with loop perforation. In FSE, 2011.Google ScholarDigital Library
- F. Spoto, F. Mesnard, and E. Payet. A termination analyzer for Java bytecode based on path-length. Transactions on Programming Languages and Systems, 32:1--70, March 2010. Google ScholarDigital Library
- W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In ICSE, 2009. Google ScholarDigital Library
- J. Wu, H. Cui, and J. Yang. Bypassing races in live applications with execution filters. In OSDI, 2010. Google ScholarDigital Library
- V. C. Zandy, B. P. Miller, and M. Livny. Process Hijacking. In HPDC, 1999. Google ScholarDigital Library
- Z. A. Zhu, S. Misailovic, J. A. Kelner, and M. C. Rinard. Randomized accuracy-aware program transformations for efficient approximate computations. In POPL, 2012. Google ScholarDigital Library
Index Terms
- Bolt: on-demand infinite loop escape in unmodified binaries
Recommendations
Bolt: on-demand infinite loop escape in unmodified binaries
OOPSLA '12We present Bolt, a novel system for escaping from infinite and long-running loops. Directed by a user, Bolt can attach to a running process and determine if the program is executing an infinite loop. If so, Bolt can deploy multiple strategies to escape ...
Numerical Simulation of Blind Hole Bolt Connection with 3-D Finite Element Approach
ICIC '09: Proceedings of the 2009 Second International Conference on Information and Computing Science - Volume 04The simple, reliable and feasible finite element model with three-dimensional solid elements about blind hole bolt connection based on ANSYS is proposed to obtain bolt pre-tensional effect. It uses node coupling to simulate the connection effect of the ...
Equivalent axial stiffness of various components in bolted joints subjected to axial loading
Managing the axial stiffness of various components in a bolted joint is a major industrial concern for modelling different tightening processes and for accurate fatigue dimensioning. This paper presents a new approach for calculating the axial stiffness ...
Comments