skip to main content
research-article
Open Access

Kitsune: Efficient, General-Purpose Dynamic Software Updating for C

Published:28 October 2014Publication History
Skip Abstract Section

Abstract

Dynamic software updating (DSU) systems facilitate software updates to running programs, thereby permitting developers to add features and fix bugs without downtime. This article introduces Kitsune, a DSU system for C. Kitsune’s design has three notable features. First, Kitsune updates the whole program, rather than individual functions, using a mechanism that places no restrictions on data representations or allowed compiler optimizations. Second, Kitsune makes the important aspects of updating explicit in the program text, making the program’s semantics easy to understand while minimizing programmer effort. Finally, the programmer can write simple specifications to direct Kitsune to generate code that traverses and transforms old-version state for use by new code; such state transformation is often necessary and is significantly more difficult in prior DSU systems. We have used Kitsune to update six popular, open-source, single- and multithreaded programs and find that few program changes are required to use Kitsune, that it incurs essentially no performance overhead, and that update times are fast.

References

  1. Gautam Altekar, Ilya Bagrak, Paul Burstein, and Andrew Schultz. 2005. OPUS: Online Patches and Updates for Security. In Proceedings of USENIX Security. USENIX Association, Berkeley, CA, 287--302. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Jeff Arnold and M. Frans Kaashoek. 2009. Ksplice: Automatic rebootless kernel updates. In Proc. EuroSys. ACM, New York, NY, 187--198. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Andrew Baumann, Gernot Heiser, Dilma Da Silva, Orran Krieger, Robert W. Wisniewski, and Jeremy Kerr. 2005. Providing dynamic update in an operating system. In Proceedings of USENIX ATC. USENIX Association, 279--291. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Emery D. Berger, Benjamin G. Zorn, and Kathryn S. McKinley. 2002. Reconsidering custom memory allocation. In Proceedings of the 17th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’02). ACM, New York, NY, 1--12. DOI: http://dx.doi.org/10.1145/582419.582421 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Haibo Chen, Rong Chen, Fengzhe Zhang, Binyu Zang, and Pen-Chung Yew. 2006. Live updating operating systems using virtualization. In Proc. VEE. ACM, New York, NY, 35--44. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Haibo Chen, Jie Yu, Chengqun Hang, Binyu Zang, and Pen-Chung Yew. 2011. Dynamic software updating using a relaxed consistency model. IEEE Transactions on Software Engineering 37, 5 (2011), 679--694. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Jeremy Condit, Matthew Harren, Zachary Anderson, David Gay, and George C. Necula. 2007. Dependent types for low-level programming. In Proceedings ESOP. Springer-Verlag, Berlin, 520--535. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Stephen Gilmore, Dilsun Kírlí, and Christopher Walton. 1997. Dynamic ML without Dynamic Types. Technical Report ECS-LFCS-97-378. LFCS, University of Edinburgh. Retrieved from http://www.lfcs.inf.ed.ac.uk/reports/97/ECS-LFCS-97-378/ECS-LFCS-97-378.pdf.Google ScholarGoogle Scholar
  9. Cristiano Giuffrida, Anton Kuijsten, and Andrew S. Tanenbaum. 2013. Safe and automatic live update for operating systems. In Proceedings of the 18th International Conference on Architectural Support for Programming Languages and Operating Systems. 279--292. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Christopher M. Hayden, Stephen Magill, Michael Hicks, Nate Foster, and Jeffrey S. Foster. 2012a. Specifying and verifying the correctness of dynamic software updates. In Proceedings of the International Conference on Verified Software: Theories, Tools, and Experiments (VSTTE’12). Springer-Verlag, Berlin, 278--293. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Christopher M. Hayden, Karla Saur, Michael Hicks, and Jeffrey S. Foster. 2012b. A study of dynamic software update quiescence for multithreaded programs. In Proceedings of the Workshop on Hot Topics in Software Upgrades (HotSWUp’12). IEEE, 6--10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Christopher M. Hayden, Edward K. Smith, Michail Denchev, Michael Hicks, and Jeffrey S. Foster. 2012c. Kitsune: Efficient, general-purpose dynamic software updating for C. In Proceedings of the ACM Conference on Object-Oriented Programming Languages, Systems, and Appilcations (OOPSLA’12). ACM, New York, NY, 249--264. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Christopher M. Hayden, Edward K. Smith, Eric A. Hardisty, Michael Hicks, and Jeffrey S. Foster. 2012d. Evaluating dynamic software update safety using efficient systematic testing. IEEE Transactions on Software Engineering 38, 6 (Dec. 2012), 1340--1354. DOI: http://dx.doi.org/10.1109/TSE.2011.101 Accepted September 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Christopher M. Hayden, Edward K. Smith, Michael Hicks, and Jeffrey S. Foster. 2011. State transfer for clear and efficient runtime upgrades. In Proceedings of the Workshop on Hot Topics in Software Upgrades (HotSWUp’11). IEEE, 179--184. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Michael Hicks and Scott Nettles. 2005. Dynamic software updating. ACM TOPLAS 27, 6 (2005), 1049--1096. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Orran Krieger, Marc A. Auslander, Bryan S. Rosenburg, Robert W. Wisniewski, Jimi Xenidis, Dilma Da Silva, Michal Ostrowski, Jonathan Appavoo, Maria A. Butrico, Mark F. Mergen, Amos Waterland, and Volkmar Uhlig. 2006. K42: Building a complete operating system. In EuroSys, Yolande Berbers and Willy Zwaenepoel (Eds.). ACM, 133--145. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. LiveRebel 2013. LiveRebel. Retrieved from http://zeroturnaround.com/software/liverebel/. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Kristis Makris. 2009. Whole-Program Dynamic Software Updating. Ph.D. Dissertation. Arizona State University. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Kristis Makris and Rida Bazzi. 2009. Immediate multi-threaded dynamic software updates using stack reconstruction. In USENIX ATC. USENIX Association, Berkeley, CA, 31--31. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Kristis Makris and Kyung Dong Ryu. 2007. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In Proceedings of EuroSys. ACM, New York, NY, 327--340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Todd Mytkowicz, Amer Diwan, Matthias Hauswirth, and Peter F. Sweeney. 2009. Producing wrong data without doing anything obviously wrong! In Proceedings of ASPLOS. ACM, New York, NY, 265--276. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Iulian Neamtiu and Michael Hicks. 2009. Safe and timely dynamic updates for multi-threaded programs. In Proceedings of PLDI. ACM, New York, NY, 13--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Iulian Neamtiu, Michael Hicks, Jeffrey S. Foster, and Polyvios Pratikakis. 2008. Contextual effects for version-consistent dynamic software updating and safe concurrent programming. In Proceedings of POPL. ACM, New York, NY, 37--50. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. 2006. Practical dynamic software updating for C. In Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI’06). ACM, New York, NY, 72--83. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. George C. Necula, Scott Mcpeak, Shree P. Rahul, and Westley Weimer. 2002. CIL: Intermediate language and tools for analysis and transformation of C programs. In Proceedings of the International Conference on Compiler Construction. 213--228. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Rajesh Nishtala, Hans Fugal, Steven Grimm, Marc Kwiatkowski, Herman Lee, Harry C. Li, Ryan McElroy, Mike Paleczny, Daniel Peek, Paul Saab, David Stafford, Tony Tung, and Venkateshwaran Venkataramani. 2013. Scaling memcache at Facebook. In Proceedings of the 10th USENIX Conference on Networked Systems Design and Implementation (NSDI’13). USENIX Association, Berkeley, CA, 385--398. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Mathias Payer, Boris Bluntschli, and Thomas R. Gross. 2013. DynSec: On-the-fly code rewriting and repair. In Proceedings of the Workshop on Hot Topics in Software Upgrades (HotSWUp’13).Google ScholarGoogle Scholar
  28. Mathias Payer and Thomas R. Gross. 2013. Hot-patching a web server: A case study of ASAP code repair. In PST. 143--150.Google ScholarGoogle Scholar
  29. Luís Pina and Michael Hicks. 2013. Rubah: Efficient, general-purpose dynamic software updating for Java. In Proceedings of the Workshop on Hot Topics in Software Upgrades (HotSWUp’13).Google ScholarGoogle Scholar
  30. Eric Roman. 2002. A Survey of Checkpoint/Restart Implementations. Technical Report. Lawrence Berkeley National Laboratory.Google ScholarGoogle Scholar
  31. Richard W. Stevens and Stephen A. Rago. 2005. (2nd. ed.). Addison-Wesley Professional. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Suriya Subramanian, Michael Hicks, and Kathryn S. McKinley. 2009. Dynamic software updates: A VM-centric approach. In Proceedings of PLDI. ACM, New York, NY 1--12. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Kitsune: Efficient, General-Purpose Dynamic Software Updating for C

        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

        Full Access

        • Published in

          cover image ACM Transactions on Programming Languages and Systems
          ACM Transactions on Programming Languages and Systems  Volume 36, Issue 4
          October 2014
          184 pages
          ISSN:0164-0925
          EISSN:1558-4593
          DOI:10.1145/2684821
          Issue’s Table of Contents

          Copyright © 2014 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: 28 October 2014
          • Accepted: 1 May 2014
          • Revised: 1 February 2014
          • Received: 1 June 2013
          Published in toplas Volume 36, Issue 4

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article
          • Research
          • Refereed

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader