skip to main content
10.1145/2970276.2970360acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Automatic runtime recovery via error handler synthesis

Published: 25 August 2016 Publication History

Abstract

Software systems are often subject to unexpected runtime errors. Automatic runtime recovery (ARR) techniques aim at recovering them from erroneous states and maintaining them functional in the field. This paper proposes Ares, a novel, practical approach to performing ARR. Our key insight is to leverage a system's already built-in error handling support to recover from unexpected errors. To this end, we synthesize error handlers via two methods: error transformation and early return. We also equip Ares with a lightweight in-vivo testing infrastructure to select the right synthesis methods and avoid potentially dangerous error handlers. Unlike existing ARR techniques based on heavyweight mechanisms (e.g., checkpoint-restart and runtime monitoring), our approach expands the intrinsic capability of runtime error resilience already existing in software systems to handle unexpected errors. Ares's lightweight mechanism makes it practical and easy to be integrated into production environments. We have implemented Ares on top of both the Java HotSpot VM and Android ART, and applied it to 52 real-world bugs. The results are promising — Ares successfully recovers from 39 of them and incurs low overhead.

References

[1]
CVE-2013-2071. http://cve.mitre.org/cgi-bin/cvename. cgi?name=CVE-2013-2071, accessed: 2015-07-22.
[2]
Mobile Apps: What Consumers Really Need and Want. https://info.dynatrace.com/APM_13_WP_Mobile_ App_Survey_Report_Registration.html, accessed: 2015-07-22.
[3]
T. Azim, I. Neamtiu, and L. M. Marvel. Towards self-healing smartphone software via automated patching. In Proceedings of the 2014 International Conference on Automated Software Engineering (ASE), pages 623–628, 2014.
[4]
G. Bronevetsky, R. Fernandes, D. Marques, K. Pingali, and P. Stodghill. Recent advances in checkpoint/recovery systems. In Proceedings of the 20th International Parallel and Distributed Processing Symposium (IPDPS), April 2006.
[5]
B. Cabral and P. Marques. Exception handling: A field study in Java and .NET. In Proceedings of the 21st European Conference on Object-Oriented Programming (ECOOP), pages 151–175, 2007.
[6]
B. Cabral and P. Marques. A transactional model for automatic exception handling. Computer Languages, Systems & Structures, 37(1):43–61, Apr. 2011.
[7]
M. Carbin, S. Misailovic, M. Kling, and M. C. Rinard. Detecting and escaping infinite loops with jolt. In Proceedings of the 25th European Conference on Object-oriented Programming (ECOOP), pages 609–633, 2011.
[8]
A. Carzaniga, A. Gorla, A. Mattavelli, N. Perino, and M. Pezzè. Automatic recovery from runtime failures. In Proceedings of the 2013 International Conference on Software Engineering (ICSE), pages 782–791, 2013.
[9]
H. Chang, L. Mariani, and M. Pezzè. Exception Handlers for Healing Component-based Systems. ACM Trans. Softw. Eng. Methodol., 22(4):30:1–30:40, 2013.
[10]
B. Cornu, T. Durieux, L. Seinturier, and M. Monperrus. Npefix: Automatic runtime repair of null pointer exceptions in java. CoRR, abs/1512.07423, 2015.
[11]
F. Cristian. Exception handling and software fault tolerance. IEEE Transactions on Computers, 31(6):531–540, June 1982.
[12]
B. Demsky and M. Rinard. Automatic detection and repair of errors in data structures. In Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications (OOPSLA), pages 78–95, 2003.
[13]
K. Dobolyi and W. Weimer. Changing Java’s semantics for handling null pointer exceptions. In 19th International Symposium on Software Reliability Engineering (ISSRE), pages 47–56, 2008.
[14]
E. N. M. Elnozahy, L. Alvisi, Y.-M. Wang, and D. B. Johnson. A survey of rollback-recovery protocols in message-passing systems. ACM Computing Survey, 34(3):375–408, Sept. 2002.
[15]
J. B. Goodenough. Exception handling: Issues and a proposed notation. Communications of the ACM, 18(12):683–696, 1975.
[16]
D. Kim, J. Nam, J. Song, and S. Kim. Automatic patch generation learned from human-written patches. In Proceedings of the International Conference on Software Engineering (ICSE), pages 802–811, 2013.
[17]
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 Proceedings of the International Conference on Software Engineering (ICSE), pages 3–13, 2012.
[18]
F. Long, S. Sidiroglou-Douskos, and M. Rinard. Automatic runtime error repair and containment via recovery shepherding. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 227–238, 2014.
[19]
S. Mechtaev, J. Yi, and A. Roychoudhury. Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis. In Proceedings of the 38th International Conference on Software Engineering (ICSE), pages 691–701, 2016.
[20]
V. Nagarajan, D. Jeffrey, and R. Gupta. Self-recovery in server programs. In Proceedings of the International Symposium on Memory Management (ISMM), pages 49–58, 2009.
[21]
F. Peng, Z. Deng, X. Zhang, D. Xu, Z. Lin, and Z. Su. X-force: Force-executing binary programs for security applications. In Proceedings of the USENIX Security Symposium, pages 829–844, 2014.
[22]
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 Proceedings of the ACM SIGOPS Symposium on Operating Systems Principles (SOSP), pages 87–102, 2009.
[23]
Z. Qi, F. Long, S. Achour, and M. Rinard. An Analysis of Patch Plausibility and Correctness for Generate-and-validate Patch Generation Systems. In Proceedings of the 2015 International Symposium on Software Testing and Analysis (ISSTA), pages 24–36, 2015.
[24]
F. Qin, J. Tucek, J. Sundaresan, and Y. Zhou. Rx: Treating bugs as allergies—a safe method to survive software failures. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP), pages 235–248, 2005.
[25]
M. Rinard, C. Cadar, D. Dumitran, D. M. Roy, T. Leu, and W. S. Beebee, Jr. Enhancing server availability and security through failure-oblivious computing. In Proceedings of the Symposium on Opearting Systems Design & Implementation (OSDI), pages 21–21, 2004.
[26]
P. Sacramento, B. Cabral, and P. Marques. Unchecked Exceptions: Can the Programmer be Trusted to Document Exceptions? In Proceedings of the International Conference on Innovative Views of .NET Technologies, 2006.
[27]
H. Samimi, M. Schäfer, S. Artzi, T. Millstein, F. Tip, and L. Hendren. Automated repair of html generation errors in php applications using string constraint solving. In Proceedings of the 34th International Conference on Software Engineering (ICSE), pages 277–287, 2012.
[28]
S. Sidiroglou, O. Laadan, C. Perez, N. Viennot, J. Nieh, and A. D. Keromytis. Assure: Automatic software self-healing using rescue points. In Proceedings of the 14th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), pages 37–48, 2009.
[29]
W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In Proceedings of the 31st International Conference on Software Engineering (ICSE), pages 364–374, 2009.
[30]
D. Yuan, Y. Luo, X. Zhuang, G. R. Rodrigues, X. Zhao, Y. Zhang, P. U. Jain, and M. Stumm. Simple testing can prevent most critical failures: An analysis of production failures in distributed data-intensive systems. In 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI), pages 249–265, 2014.

Cited By

View all
  • (2024)Cut to the Chase: An Error-Oriented Approach to Detect Error-Handling BugsProceedings of the ACM on Software Engineering10.1145/36607871:FSE(1796-1818)Online publication date: 12-Jul-2024
  • (2023)PETProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620472(4193-4210)Online publication date: 9-Aug-2023
  • (2023)Using Runtime Information of Controllers for Safe Adaptation at Runtime: A Process Mining ApproachComputer Safety, Reliability, and Security. SAFECOMP 2023 Workshops10.1007/978-3-031-40953-0_8(85-94)Online publication date: 14-Sep-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ASE '16: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering
August 2016
899 pages
ISBN:9781450338455
DOI:10.1145/2970276
  • General Chair:
  • David Lo,
  • Program Chairs:
  • Sven Apel,
  • Sarfraz Khurshid
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 25 August 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. JVM
  2. automatic runtime recovery
  3. exception handling

Qualifiers

  • Research-article

Conference

ASE'16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)19
  • Downloads (Last 6 weeks)0
Reflects downloads up to 27 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Cut to the Chase: An Error-Oriented Approach to Detect Error-Handling BugsProceedings of the ACM on Software Engineering10.1145/36607871:FSE(1796-1818)Online publication date: 12-Jul-2024
  • (2023)PETProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620472(4193-4210)Online publication date: 9-Aug-2023
  • (2023)Using Runtime Information of Controllers for Safe Adaptation at Runtime: A Process Mining ApproachComputer Safety, Reliability, and Security. SAFECOMP 2023 Workshops10.1007/978-3-031-40953-0_8(85-94)Online publication date: 14-Sep-2023
  • (2022)Providing Real-time Assistance for Repairing Runtime Exceptions using Stack Overflow Posts2022 IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST53961.2022.00030(196-207)Online publication date: Apr-2022
  • (2021)A Survey of Field-based Testing TechniquesACM Computing Surveys10.1145/344724054:5(1-39)Online publication date: 25-May-2021
  • (2020)HangFixProceedings of the 11th ACM Symposium on Cloud Computing10.1145/3419111.3421288(344-357)Online publication date: 12-Oct-2020
  • (2020)Recommending stack overflow posts for fixing runtime exceptions using failure scenario matchingProceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3368089.3409764(1052-1064)Online publication date: 8-Nov-2020
  • (2020)Fully Automated HTML and JavaScript Rewriting for Constructing a Self‐healing Web ProxySoftware Testing, Verification and Reliability10.1002/stvr.173130:2Online publication date: 14-Feb-2020
  • (2019)Speedup Automatic Program Repair Using Dynamic Software UpdatingProceedings of the 11th Asia-Pacific Symposium on Internetware10.1145/3361242.3361245(1-10)Online publication date: 28-Oct-2019
  • (2019)Automatically detecting missing cleanup for ungraceful exitsProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3338938(751-762)Online publication date: 12-Aug-2019
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media