skip to main content
research-article

Safe and timely updates to multi-threaded programs

Authors Info & Claims
Published:15 June 2009Publication History
Skip Abstract Section

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.

References

  1. Gautam Altekar, Ilya Bagrak, Paul Burstein, and Andrew Schultz. Opus: online patches and updates for security. In phUSENIX Security, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Jeff Arnold and Frans Kaashoek. Ksplice: Automatic rebootless kernel updates. In phEuroSys, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. Haibo Chen, Rong Chen, et al. Live updating operating systems using virtualization. In phVEE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Haibo Chen, Jie Yu, Rong Chen, Binyu Zang, and Pen-Chung Yew. POLUS: A powerful live updating system. In phICSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Deepak Gupta, Pankaj Jalote, and Gautam Barua. A formal framework for on-line software version change. phIEEE TSE, 22 (2), 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Tim Harris, Simon Marlow, Simon L. Peyton Jones, and Maurice Herlihy. Composable memory transactions. In phPPOPP, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Michael Hicks and Scott Nettles. Dynamic software updating. phACM Trans. Program. Lang. Syst., 27 (6), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. K42. The K42 Project. http://www.research.ibm.com/K42/.Google ScholarGoogle Scholar
  10. Insup Lee. phDYMOS: A Dynamic Modification System. PhD thesis, Dept. of Computer Science, University of Wisconsin, Madison, April 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Kristis Makris and Rida Bazzi. Multi-threaded dynamic software updates using stack reconstruction. In phUSENIX ATC, 2009.Google ScholarGoogle Scholar
  12. Kristis Makris and Kyung Dong Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In phEuroSys, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Iulian Neamtiu. phPractical Dynamic Software Updating. PhD thesis, University of Maryland, College Park, August 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Iulian Neamtiu and Michael Hicks. Safe and timely updates to multi-threaded programs. Technical report, UC Riverside, June 2009.Google ScholarGoogle Scholar
  15. Iulian Neamtiu, Jeffrey S. Foster, and Michael Hicks. Understanding Source Code Evolution Using Abstract Syntax Tree Matching. In phMSR, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for C. In phPLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. Polyvios Pratikakis, Jeffrey S. Foster, and Michael Hicks. Context-sensitive correlation analysis for detecting races. In phPLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Stelios Sidiroglou, Sotiris Ioannidis, and Angelos D. Keromytis. Band-aid patching. In phHotDep, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. C. Soules, J. Appavoo, K. Hui, et al. System support for online reconfiguration. In phUSENIX ATC, 2003.Google ScholarGoogle Scholar
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. Suriya Subramanian, Michael Hicks, and Kathryn S. McKinley. Dynamic software updates for Java: A VM-centric approach. In phPLDI, June 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Jean-Pierre Talpin and Pierre Jouvelot. Polymorphic type, region and effect inference. phJFP, 2, 1992.Google ScholarGoogle Scholar
  24. Chris Walton. phAbstract Machines for Dynamic Computation. PhD thesis, University of Edinburgh, 2001. ECS-LFCS-01-425.Google ScholarGoogle Scholar

Index Terms

  1. Safe and timely updates to multi-threaded programs

                    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 SIGPLAN Notices
                      ACM SIGPLAN Notices  Volume 44, Issue 6
                      PLDI '09
                      June 2009
                      478 pages
                      ISSN:0362-1340
                      EISSN:1558-1160
                      DOI:10.1145/1543135
                      Issue’s Table of Contents
                      • cover image ACM Conferences
                        PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation
                        June 2009
                        492 pages
                        ISBN:9781605583921
                        DOI:10.1145/1542476

                      Copyright © 2009 ACM

                      Publisher

                      Association for Computing Machinery

                      New York, NY, United States

                      Publication History

                      • Published: 15 June 2009

                      Check for updates

                      Qualifiers

                      • research-article

                    PDF Format

                    View or Download as a PDF file.

                    PDF

                    eReader

                    View online with eReader.

                    eReader
                    About Cookies On This Site

                    We use cookies to ensure that we give you the best experience on our website.

                    Learn more

                    Got it!