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

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.

[1]  Haibo Chen,et al.  Live updating operating systems using virtualization , 2006, VEE '06.

[2]  Kathryn S. McKinley,et al.  Reconsidering custom memory allocation , 2002, OOPSLA '02.

[3]  Thomas R. Gross,et al.  DynSec: On-the-fly Code Rewriting and Repair , 2013, HotSWUp.

[4]  Iulian Neamtiu,et al.  Safe and timely updates to multi-threaded programs , 2009, PLDI '09.

[5]  Jeffrey S. Foster,et al.  Kitsune: efficient, general-purpose dynamic software updating for C , 2012, OOPSLA '12.

[6]  Michael Hicks,et al.  Rubah: Efficient, General-purpose Dynamic Software Updating for Java , 2013, HotSWUp.

[7]  Michael Hicks,et al.  A study of dynamic software update quiescence for multithreaded programs , 2012, 2012 4th International Workshop on Hot Topics in Software Upgrades (HotSWUp).

[8]  Cristiano Giuffrida,et al.  Safe and automatic live update for operating systems , 2013, ASPLOS '13.

[9]  Thomas R. Gross,et al.  Hot-patching a web server: A case study of ASAP code repair , 2013, 2013 Eleventh Annual Conference on Privacy, Security and Trust.

[10]  Rida A. Bazzi,et al.  Immediate Multi-Threaded Dynamic Software Updates Using Stack Reconstruction , 2009, USENIX Annual Technical Conference.

[11]  Michael Hicks,et al.  Dynamic software updating , 2005 .

[12]  Dilma Da Silva,et al.  K42: building a complete operating system , 2006, EuroSys.

[13]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[14]  Stephen Gilmore,et al.  Dynamic ML without dynamic types , 1997 .

[15]  George C. Necula,et al.  Dependent Types for Low-Level Programming , 2007, ESOP.

[16]  Haibo Chen,et al.  Dynamic Software Updating Using a Relaxed Consistency Model , 2011, IEEE Transactions on Software Engineering.

[17]  Jason Duell,et al.  Requirements for Linux Checkpoint/Restart , 2002 .

[18]  Michael Hicks,et al.  Contextual effects for version-consistent dynamic software updating and safe concurrent programming , 2008, POPL '08.

[19]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[20]  Andrew Schultz,et al.  OPUS: Online Patches and Updates for Security , 2005, USENIX Security Symposium.

[21]  Kyung Dong Ryu,et al.  Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels , 2007, EuroSys '07.

[22]  Michael Hicks,et al.  Evaluating Dynamic Software Update Safety Using Systematic Testing , 2012, IEEE Transactions on Software Engineering.

[23]  Kristis Makris Whole-program dynamic software updating , 2009 .

[24]  M. Frans Kaashoek,et al.  Ksplice: automatic rebootless kernel updates , 2009, EuroSys '09.

[25]  Dilma Da Silva,et al.  Providing Dynamic Update in an Operating System , 2005, USENIX Annual Technical Conference, General Track.

[26]  Kathryn S. McKinley,et al.  Dynamic software updates: a VM-centric approach , 2009, PLDI '09.

[27]  Michael Hicks,et al.  State transfer for clear and efficient runtime updates , 2011, 2011 IEEE 27th International Conference on Data Engineering Workshops.

[28]  Manuel Oriol,et al.  Practical dynamic software updating for C , 2006, PLDI '06.

[29]  Michael Hicks,et al.  Specifying and Verifying the Correctness of Dynamic Software Updates , 2012, VSTTE.

[30]  Matthias Hauswirth,et al.  Producing wrong data without doing anything obviously wrong! , 2009, ASPLOS.

[31]  George C. Necula,et al.  CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs , 2002, CC.