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.
- 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 ScholarDigital Library
- Jeff Arnold and M. Frans Kaashoek. 2009. Ksplice: Automatic rebootless kernel updates. In Proc. EuroSys. ACM, New York, NY, 187--198. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- Michael Hicks and Scott Nettles. 2005. Dynamic software updating. ACM TOPLAS 27, 6 (2005), 1049--1096. Google ScholarDigital Library
- 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 ScholarDigital Library
- LiveRebel 2013. LiveRebel. Retrieved from http://zeroturnaround.com/software/liverebel/. Google ScholarDigital Library
- Kristis Makris. 2009. Whole-Program Dynamic Software Updating. Ph.D. Dissertation. Arizona State University. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- Mathias Payer and Thomas R. Gross. 2013. Hot-patching a web server: A case study of ASAP code repair. In PST. 143--150.Google Scholar
- 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 Scholar
- Eric Roman. 2002. A Survey of Checkpoint/Restart Implementations. Technical Report. Lawrence Berkeley National Laboratory.Google Scholar
- Richard W. Stevens and Stephen A. Rago. 2005. (2nd. ed.). Addison-Wesley Professional. Google ScholarDigital Library
- 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 ScholarDigital Library
Index Terms
- Kitsune: Efficient, General-Purpose Dynamic Software Updating for C
Recommendations
MVEDSUA: Higher Availability Dynamic Software Updates via Multi-Version Execution
ASPLOS '19: Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating SystemsDynamic Software Updating (DSU) is a technique for patching stateful software without shutting it down, which enables both timely updates and non-stop service. Unfortunately, bugs in the update itself---whether in the changed code or in the way the ...
Kitsune: efficient, general-purpose dynamic software updating for C
OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsDynamic software updating (DSU) systems allow programs to be updated while running, thereby permitting developers to add features and fix bugs without downtime. This paper introduces Kitsune, a new DSU system for C whose design has three notable ...
Kitsune: efficient, general-purpose dynamic software updating for C
OOPSLA '12Dynamic software updating (DSU) systems allow programs to be updated while running, thereby permitting developers to add features and fix bugs without downtime. This paper introduces Kitsune, a new DSU system for C whose design has three notable ...
Comments