Abstract
Many dynamic updating systems have been developed that enable a program to be patched while it runs, to fix bugs or add new features. This paper explores techniques for supporting dynamic updates to multi-threaded programs, focusing on the problem of applying an update in a timely fashion while still producing correct behavior. Past work has shown that this tension of safety versus timeliness can be balanced for single-threaded programs. For multi-threaded programs, the task is more difficult because myriad thread interactions complicate understanding the possible program states to which a patch could be applied. Our approach allows the programmer to specify a few program points (e.g., one per thread) at which a patch may be applied, which simplifies reasoning about safety. To improve timeliness, a combination of static analysis and run-time support automatically expands these few points to many more that produce behavior equivalent to the originals. Experiments with thirteen realistic updates to three multi-threaded servers show that we can safely perform a dynamic update within milliseconds when more straightforward alternatives would delay some updates indefinitely.
- Gautam Altekar, Ilya Bagrak, Paul Burstein, and Andrew Schultz. Opus: online patches and updates for security. In phUSENIX Security, 2005. Google Scholar
Digital Library
- Jeff Arnold and Frans Kaashoek. Ksplice: Automatic rebootless kernel updates. In phEuroSys, 2009. Google Scholar
Digital Library
- Andrew Baumann, Jonathan Appavoo, Robert W. Wisniewski, Dilma Da Silva, et al. Reboots are for hardware: challenges and solutions to updating an operating system on the fly. In phUSENIX ATC, 2007. Google Scholar
Digital Library
- Haibo Chen, Rong Chen, et al. Live updating operating systems using virtualization. In phVEE, 2006. Google Scholar
Digital Library
- Haibo Chen, Jie Yu, Rong Chen, Binyu Zang, and Pen-Chung Yew. POLUS: A powerful live updating system. In phICSE, 2007. Google Scholar
Digital Library
- Deepak Gupta, Pankaj Jalote, and Gautam Barua. A formal framework for on-line software version change. phIEEE TSE, 22 (2), 1996. Google Scholar
Digital Library
- Tim Harris, Simon Marlow, Simon L. Peyton Jones, and Maurice Herlihy. Composable memory transactions. In phPPOPP, 2005. Google Scholar
Digital Library
- Michael Hicks and Scott Nettles. Dynamic software updating. phACM Trans. Program. Lang. Syst., 27 (6), 2005. Google Scholar
Digital Library
- K42. The K42 Project. http://www.research.ibm.com/K42/.Google Scholar
- Insup Lee. phDYMOS: A Dynamic Modification System. PhD thesis, Dept. of Computer Science, University of Wisconsin, Madison, April 1983. Google Scholar
Digital Library
- Kristis Makris and Rida Bazzi. Multi-threaded dynamic software updates using stack reconstruction. In phUSENIX ATC, 2009.Google Scholar
- Kristis Makris and Kyung Dong Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In phEuroSys, 2007. Google Scholar
Digital Library
- Iulian Neamtiu. phPractical Dynamic Software Updating. PhD thesis, University of Maryland, College Park, August 2008. Google Scholar
Digital Library
- Iulian Neamtiu and Michael Hicks. Safe and timely updates to multi-threaded programs. Technical report, UC Riverside, June 2009.Google Scholar
- Iulian Neamtiu, Jeffrey S. Foster, and Michael Hicks. Understanding Source Code Evolution Using Abstract Syntax Tree Matching. In phMSR, 2005. Google Scholar
Digital Library
- Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for C. In phPLDI, 2006. Google Scholar
Digital Library
- Iulian Neamtiu, Michael Hicks, Jeffrey S. Foster, and Polyvios Pratikakis. Contextual effects for version-consistent dynamic software updating and safe concurrent programming. In phPOPL, January 2008. Google Scholar
Digital Library
- Polyvios Pratikakis, Jeffrey S. Foster, and Michael Hicks. Context-sensitive correlation analysis for detecting races. In phPLDI, 2006. Google Scholar
Digital Library
- Stelios Sidiroglou, Sotiris Ioannidis, and Angelos D. Keromytis. Band-aid patching. In phHotDep, 2007. Google Scholar
Digital Library
- C. Soules, J. Appavoo, K. Hui, et al. System support for online reconfiguration. In phUSENIX ATC, 2003.Google Scholar
- Gareth Stoyle, Michael Hicks, Gavin Bierman, Peter Sewell, and Iulian Neamtiu. phMutatis Mutandis: Safe and flexible dynamic software updating. phTOPLAS, 29 (4), August 2007. Google Scholar
Digital Library
- Suriya Subramanian, Michael Hicks, and Kathryn S. McKinley. Dynamic software updates for Java: A VM-centric approach. In phPLDI, June 2009. Google Scholar
Digital Library
- Jean-Pierre Talpin and Pierre Jouvelot. Polymorphic type, region and effect inference. phJFP, 2, 1992.Google Scholar
- Chris Walton. phAbstract Machines for Dynamic Computation. PhD thesis, University of Edinburgh, 2001. ECS-LFCS-01-425.Google Scholar
Index Terms
Safe and timely updates to multi-threaded programs
Recommendations
Safe and timely updates to multi-threaded programs
PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and ImplementationMany dynamic updating systems have been developed that enable a program to be patched while it runs, to fix bugs or add new features. This paper explores techniques for supporting dynamic updates to multi-threaded programs, focusing on the problem of ...
Safe and automatic live update for operating systems
ASPLOS '13Increasingly many systems have to run all the time with no downtime allowed. Consider, for example, systems controlling electric power plants and e-banking servers. Nevertheless, security patches and a constant stream of new operating system versions ...
Dynamic software updates: a VM-centric approach
PLDI '09Software evolves to fix bugs and add features. Stopping and restarting programs to apply changes is inconvenient and often costly. Dynamic software updating (DSU) addresses this problem by updating programs while they execute, but existing DSU systems ...







Comments