skip to main content
10.1145/2384616.2384636acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Automating object transformations for dynamic software updating

Published:19 October 2012Publication History

ABSTRACT

Dynamic software updating (DSU) systems eliminate costly downtime by dynamically fixing bugs and adding features to executing programs. Given a static code patch, most DSU systems construct runtime code changes automatically. However, a dynamic update must also specify how to change the running program's execution state, e.g., the stack and heap, to make it compatible with the new code. Constructing such state transformations correctly and automatically remains an open problem. This paper presents a solution called Targeted Object Synthesis (TOS). TOS first executes the same tests on the old and new program versions separately, observing the program heap state at a few corresponding points. Given two corresponding heap states, TOS matches objects in the two versions using key fields that uniquely identify objects and correlate old and new-version objects. Given example object pairs, TOS then synthesizes the simplest-possible function that transforms an old-version object to its new-version counterpart. We show that TOS is effective on updates to four open-source server programs for which it generates non-trivial transformation functions that use conditionals, operate on collections, and fix memory leaks. These transformations help programmers understand their changes and apply dynamic software updates.

References

  1. J. Arnold and F. Kaashoek. Ksplice: Automatic rebootless kernel updates. In EuroSys, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. D. Bond and K. S. McKinley. Bell: Bit-Encoding Online Memory Leak Detection. In ASPLOS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. M. D. Bond and K. S. McKinley. Leak pruning. In ASPLOS, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. H. Chen, J. Yu, R. Chen, B. Zang, and P.-C. Yew. POLUS: A POwerful Live Updating System. In ICSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. Gulwani. Automating string processing in spreadsheets using input-output examples. In POPL, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. W. R. Harris and S. Gulwani. Spreadsheet table transformations from examples. In PLDI, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. C. M. Hayden, E. K. Smith, E. A. Hardisty, M. Hicks, and J. S. Foster. Evaluating dynamic software update safety using efficient systematic testing. IEEE Transactions on Software Engineering, 99 (PrePrints), Sept. 2011.Google ScholarGoogle Scholar
  8. M. Hicks and S. M. Nettles. Dynamic Software Updating. Transactions on Programming Languages and Systems, 27 (6): 1049--1096, November 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Jump and K. S. McKinley. Cork: Dynamic Memory Leak Detection for Java. In POPL, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. K. Makris and R. Bazzi. Immediate Multi-Threaded Dynamic Software Updates Using Stack Reconstruction. In USENIX ATC, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. N. Mitchell and G. Sevitsky. The causes of bloat, the limits of health. In OOPSLA, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. N. Mitchell and G. Sevitzky. LeakBot: An Automated and Lightweight Tool for Diagnosing Memory Leaks in Large Java Applications. In ECOOP, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  13. I. Neamtiu, M. Hicks, G. Stoyle, and M. Oriol. Practical Dynamic Software Updating for C. In PLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. S. Subramanian, M. Hicks, and K. S. McKinley. Dynamic Software Updates: A VM-centric Approach. In PLDI, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. G. Xu and A. Rountev. Detecting inefficiently-used containers to avoid bloat. In PLDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. ZeroTurnaround. LiveRebel. http://www.zeroturnaround.com/liverebel.Google ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Conferences
    OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
    October 2012
    1052 pages
    ISBN:9781450315616
    DOI:10.1145/2384616
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 47, Issue 10
      OOPSLA '12
      October 2012
      1011 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2398857
      Issue’s Table of Contents

    Copyright © 2012 ACM

    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]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 19 October 2012

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article

    Acceptance Rates

    Overall Acceptance Rate268of1,244submissions,22%

    Upcoming Conference

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader