Automating Object Transformations for Dynamic Software Updating via Online Execution Synthesis

Authors Tianxiao Gu, Xiaoxing Ma, Chang Xu, Yanyan Jiang, Chun Cao, Jian Lu



PDF
Thumbnail PDF

File

LIPIcs.ECOOP.2018.19.pdf
  • Filesize: 0.78 MB
  • 28 pages

Document Identifiers

Author Details

Tianxiao Gu
  • State Key Laboratory of Novel Software Technology, Nanjing University, Nanjing, China
Xiaoxing Ma
  • State Key Laboratory of Novel Software Technology, Nanjing University, Nanjing, China
Chang Xu
  • State Key Laboratory of Novel Software Technology, Nanjing University, Nanjing, China
Yanyan Jiang
  • State Key Laboratory of Novel Software Technology, Nanjing University, Nanjing, China
Chun Cao
  • State Key Laboratory of Novel Software Technology, Nanjing University, Nanjing, China
Jian Lu
  • State Key Laboratory of Novel Software Technology, Nanjing University, Nanjing, China

Cite AsGet BibTex

Tianxiao Gu, Xiaoxing Ma, Chang Xu, Yanyan Jiang, Chun Cao, and Jian Lu. Automating Object Transformations for Dynamic Software Updating via Online Execution Synthesis. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018). Leibniz International Proceedings in Informatics (LIPIcs), Volume 109, pp. 19:1-19:28, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2018)
https://doi.org/10.4230/LIPIcs.ECOOP.2018.19

Abstract

Dynamic software updating (DSU) is a technique to upgrade a running software system on the fly without stopping the system. During updating, the runtime state of the modified components of the system needs to be properly transformed into a new state, so that the modified components can still correctly interact with the rest of the system. However, the transformation is non-trivial to realize due to the gap between the low-level implementations of two versions of a program. This paper presents AOTES, a novel approach to automating object transformations for dynamic updating of Java programs. AOTES bridges the gap by abstracting the old state of an object to a history of method invocations, and re-invoking the new version of all methods in the history to get the desired new state. AOTES requires no instrumentation to record any data and thus has no overhead during normal execution. We propose and implement a novel technique that can synthesize an equivalent history of method invocations based on the current object state only. We evaluated AOTES on software updates taken from Apache Commons Collections, Tomcat, FTP Server and SSHD Server. Experimental results show that AOTES successfully handled 51 of 61 object transformations of 21 updated classes, while two state-of-the-art approaches only handled 11 and 6 of 61, respectively.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Software evolution
Keywords
  • Dynamic Software Update
  • Program Synthesis
  • Execution Synthesis

Metrics

  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    0
    PDF Downloads

References

  1. Tankut Akgul and Vincent J. Mooney III. Assembly instruction level reverse execution for debugging. ACM Transaction Software Engineering Methodology, 13(2):149-198, 2004. Google Scholar
  2. Jeff Arnold and M. Frans Kaashoek. Ksplice: Automatic rebootless kernel updates. In Proceedings of the 4th ACM European Conference on Computer Systems, pages 187-198, 2009. Google Scholar
  3. Bitan Biswas and R. Mall. Reverse execution of programs. SIGPLAN Notices, 34(4):61-69, 1999. Google Scholar
  4. Haibo Chen, Jie Yu, Rong Chen, Binyu Zang, and Pen-Chung Yew. POLUS: A powerful live updating system. In Proceedings of the 29th International Conference on Software Engineering, pages 271-281, 2007. Google Scholar
  5. N. Chen and S. Kim. STAR: Stack Trace Based Automatic Crash Reproduction via Symbolic Execution. IEEE Transactions on Software Engineering, 41(2):198-220, 2015. Google Scholar
  6. Christopher Clark, Keir Fraser, Steven Hand, Jacob Gorm Hansen, Eric Jul, Christian Limpach, Ian Pratt, and Andrew Warfield. Live migration of virtual machines. In Proceedings of the 2nd Conference on Symposium on Networked Systems Design &Implementation - Volume 2, pages 273-286, 2005. Google Scholar
  7. Jonathan J. Cook. Reverse execution of Java bytecode. The Computer Journal, 45(6):608-619, 2002. Google Scholar
  8. Robert C. Daley and Jack B. Dennis. Virtual memory, processes, and sharing in MULTICS. Communications of the ACM, 11(5):306-312, 1968. Google Scholar
  9. Leonardo De Moura and Nikolaj Bjørner. Z3: An efficient smt solver. In Proceedings of the Theory and Practice of Software, 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, pages 337-340, 2008. Google Scholar
  10. Edsger W. Dijkstra. Program inversion. In Program Construction, volume 69, pages 54-57. Springer-Verlag, 1979. Google Scholar
  11. Mikhail Dmitriev. Towards flexible and safe technology for runtime evolution of Java language applications. In Proceedings of the Workshop on Engineering Complex Object-Oriented Systems for Evolution, 2001. Google Scholar
  12. Cristiano Giuffrida, Calin Iorgulescu, Anton Kuijsten, and Andrew S. Tanenbaum. Back to the future: Fault-tolerant live update with time-traveling state transfer. In Proceedings of the 27th Large Installation System Administration Conference, pages 89-104, 2013. Google Scholar
  13. Cristiano Giuffrida, Anton Kuijsten, and Andrew S. Tanenbaum. Safe and automatic live update for operating systems. In Proceedings of the 18th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 279-292, 2013. Google Scholar
  14. Tianxiao Gu, Chun Cao, Chang Xu, Xiaoxing Ma, Linghao Zhang, and Jian Lu. Javelus: A low disruptive approach to dynamic software updates. In Proceedings of 19th the Asia-Pacific Software Engineering Conference, pages 527-536, 2012. Google Scholar
  15. Tianxiao Gu, Chun Cao, Chang Xu, Xiaoxing Ma, Linghao Zhang, and Jian Lü. Low-disruptive dynamic updating of Java applications. Information and Software Technology, 56(9):1086-1098, 2014. Google Scholar
  16. Sumit Gulwani. Automating string processing in spreadsheets using input-output examples. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 317-330, 2011. Google Scholar
  17. Deepak Gupta, Pankaj Jalote, and Gautam Barua. A formal framework for on-line software version change. IEEE Transactions on Software Engineering, 22(2):120-131, 1996. Google Scholar
  18. William R. Harris and Sumit Gulwani. Spreadsheet table transformations from examples. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 317-328, 2011. Google Scholar
  19. Christopher M. Hayden, Eric A. Hardisty, Michael Hicks, and Jeffrey S. Foster. Efficient systematic testing for dynamically updatable software. In Proceedings of the 2nd International Workshop on Hot Topics in Software Upgrades, pages 9:1-9:5, 2009. Google Scholar
  20. Christopher M. Hayden, Stephen Magill, Michael Hicks, Nate Foster, and Jeffrey S. Foster. Specifying and verifying the correctness of dynamic software updates. In Proceedings of the 4th International Conference on Verified Software: Theories, Tools, Experiments, pages 278-293, 2012. Google Scholar
  21. Christopher M. Hayden, Edward K. Smith, Michael Hicks, and Jeffrey S. Foster. State transfer for clear and efficient runtime updates. In Proceedings of the 2011 IEEE 27th International Conference on Data Engineering Workshops, pages 179-184, 2011. Google Scholar
  22. C.M. Hayden, E.K. Smith, E.A. Hardisty, M. Hicks, and J.S. Foster. Evaluating dynamic software update safety using systematic testing. IEEE Transactions on Software Engineering, 38(6):1340-1354, 2012. Google Scholar
  23. Michael Hicks and Scott Nettles. Dynamic software updating. ACM Transactions on Programming Languages and Systems, 27(6):1049-1096, 2005. Google Scholar
  24. Jevgeni Kabanov and Varmo Vene. A thousand years of productivity: the JRebel story. Software: Practice and Experience, 2012. Google Scholar
  25. James C. King. Symbolic execution and program testing. Communications of the ACM, 19(7):385-394, 1976. Google Scholar
  26. V.P. La Manna, J. Greenyer, C. Ghezzi, and C. Brenner. Formalizing correctness criteria of dynamic updates derived from specification changes. In Proceedings of the 2013 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems, pages 63-72, 2013. Google Scholar
  27. Vu Le and Sumit Gulwani. FlashExtract: A framework for data extraction by examples. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 542-553, 2014. Google Scholar
  28. Sheng Liang and Gilad Bracha. Dynamic class loading in the Java virtual machine. In Proceedings of the ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, pages 36-44, 1998. Google Scholar
  29. Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley. The Java Virtual Machine Specification, Java SE 8 Edition. Addison-Wesley Professional, 1st edition, 2014. Google Scholar
  30. Xiaoxing Ma, Luciano Baresi, Carlo Ghezzi, Valerio Panzica La Manna, and Jian Lu. Version-consistent dynamic reconfiguration of component-based distributed systems. In Proceedings of the ACM SIGSOFT Symposium and the European Conference on Foundations of Software Engineering, pages 245-255, 2011. Google Scholar
  31. Stephen Magill, Michael Hicks, Suriya Subramanian, and Kathryn S. McKinley. Automating object transformations for dynamic software updating. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, pages 265-280, 2012. Google Scholar
  32. Kristis Makris and Rida A. Bazzi. Immediate multi-threaded dynamic software updates using stack reconstruction. In Proceedings of the Conference on USENIX Annual Technical Conference, 2009. Google Scholar
  33. Iulian Neamtiu and Michael Hicks. Safe and timely updates to multi-threaded programs. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 13-24, 2009. Google Scholar
  34. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for c. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 72-83, 2006. Google Scholar
  35. Hanne Riis Nielson and Flemming Nielson. Semantics with Applications: A Formal Introduction. Wiley, 1 edition, 1992. Google Scholar
  36. Carlos Pacheco, Shuvendu K. Lahiri, Michael D. Ernst, and Thomas Ball. Feedback-directed random test generation. In Proceedings of the 29th International Conference on Software Engineering, pages 75-84, 2007. Google Scholar
  37. Michael Paleczny, Christopher Vick, and Cliff Click. The Java HotSpottrademark server compiler. In Proceedings of the 2001 Symposium on Javatrademark Virtual Machine Research and Technology Symposium - Volume 1, pages 1-12, 2001. Google Scholar
  38. Luís Pina, Luís Veiga, and Michael Hicks. Rubah: DSU for Java on a stock JVM. In Proceedings of the 2014 International Conference on Object Oriented Programming Systems Languages Applications, pages 103-119, 2014. Google Scholar
  39. Rishabh Singh and Sumit Gulwani. Synthesizing number transformations from input-output examples. In Proceedings of the 24th International Conference on Computer Aided Verification, pages 634-651, 2012. Google Scholar
  40. Saurabh Srivastava, Sumit Gulwani, Swarat Chaudhuri, and Jeffrey S. Foster. Path-based inductive synthesis for program inversion. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 492-503, 2011. Google Scholar
  41. Suriya Subramanian, Michael Hicks, and Kathryn S. McKinley. Dynamic software updates: A VM-centric approach. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 1-12, 2009. Google Scholar
  42. Thomas Würthinger, Christian Wimmer, and Lukas Stadler. Dynamic code evolution for Java. In Proceedings of the International Conference on the Principles and Practice of Programming in Java, pages 10-19, 2010. Google Scholar
  43. Xusheng Xiao, Sihan Li, Tao Xie, and Nikolai Tillmann. Characteristic studies of loop problems for structural test generation via symbolic execution. In Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering, pages 246-256, 2013. Google Scholar
  44. Cristian Zamfir and George Candea. Execution synthesis: A technique for automated software debugging. In Proceedings of the 5th European Conference on Computer Systems, pages 321-334, 2010. Google Scholar
  45. Min Zhang, Kazuhiro Ogata, and Kokichi Futatsugi. Formalization and verification of behavioral correctness of dynamic software updates. Electronic Notes in Theoretical Computer Science, 294(0):12-23, 2013. Google Scholar
Questions / Remarks / Feedback
X

Feedback for Dagstuhl Publishing


Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail