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.
- J. Arnold and F. Kaashoek. Ksplice: Automatic rebootless kernel updates. In EuroSys, 2009. Google ScholarDigital Library
- M. D. Bond and K. S. McKinley. Bell: Bit-Encoding Online Memory Leak Detection. In ASPLOS, 2006. Google ScholarDigital Library
- M. D. Bond and K. S. McKinley. Leak pruning. In ASPLOS, 2009. Google ScholarDigital Library
- H. Chen, J. Yu, R. Chen, B. Zang, and P.-C. Yew. POLUS: A POwerful Live Updating System. In ICSE, 2007. Google ScholarDigital Library
- S. Gulwani. Automating string processing in spreadsheets using input-output examples. In POPL, 2011. Google ScholarDigital Library
- W. R. Harris and S. Gulwani. Spreadsheet table transformations from examples. In PLDI, 2011. Google ScholarDigital Library
- 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 Scholar
- M. Hicks and S. M. Nettles. Dynamic Software Updating. Transactions on Programming Languages and Systems, 27 (6): 1049--1096, November 2005. Google ScholarDigital Library
- M. Jump and K. S. McKinley. Cork: Dynamic Memory Leak Detection for Java. In POPL, 2007. Google ScholarDigital Library
- K. Makris and R. Bazzi. Immediate Multi-Threaded Dynamic Software Updates Using Stack Reconstruction. In USENIX ATC, 2009. Google ScholarDigital Library
- N. Mitchell and G. Sevitsky. The causes of bloat, the limits of health. In OOPSLA, 2007. Google ScholarDigital Library
- N. Mitchell and G. Sevitzky. LeakBot: An Automated and Lightweight Tool for Diagnosing Memory Leaks in Large Java Applications. In ECOOP, 2003.Google ScholarCross Ref
- I. Neamtiu, M. Hicks, G. Stoyle, and M. Oriol. Practical Dynamic Software Updating for C. In PLDI, 2006. Google ScholarDigital Library
- S. Subramanian, M. Hicks, and K. S. McKinley. Dynamic Software Updates: A VM-centric Approach. In PLDI, 2009. Google ScholarDigital Library
- G. Xu and A. Rountev. Detecting inefficiently-used containers to avoid bloat. In PLDI, 2010. Google ScholarDigital Library
- ZeroTurnaround. LiveRebel. http://www.zeroturnaround.com/liverebel.Google Scholar
Recommendations
Testing for Dynamic Software Update: An Object-State-Oriented Approach
Internetware '20: Proceedings of the 12th Asia-Pacific Symposium on InternetwareDynamic software update (DSU) can patch programs without stopping them. The updating process includes replacing changed code, transforming stale objects with object transformers, and resuming the execution of the updated program. However, flawed object ...
Synthesizing Object State Transformers for Dynamic Software Updates
ICSE '21: Proceedings of the 43rd International Conference on Software EngineeringThere is an increasing demand for evolving software systems to deliver continuous services of no restart. Dynamic software update (DSU) aims to achieve this goal by patching the system state on the fly but is currently hindered from practice due to non-...
Automating object transformations for dynamic software updating
OOPSLA '12Dynamic 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 ...
Comments