skip to main content
10.1145/1542476.1542479acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Safe and timely updates to multi-threaded programs

Published: 15 June 2009 Publication History

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

Cited By

View all
  • (2021)Synthesizing Object State Transformers for Dynamic Software Updates2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)10.1109/ICSE43902.2021.00103(1111-1122)Online publication date: May-2021
  • (2020)PSU: A Framework for Dynamic Software Updates in Multi-threaded C-Language Programs2020 IEEE 32nd International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)10.1109/SBAC-PAD49847.2020.00040(233-240)Online publication date: Sep-2020
  • (2018)SEEDE: simultaneous execution and editing in a development environmentProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238182(270-281)Online publication date: 3-Sep-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

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
  • 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
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 15 June 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. dynamic software updating
  2. multi-threading
  3. update safety
  4. update timeliness

Qualifiers

  • Research-article

Conference

PLDI '09
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)21
  • Downloads (Last 6 weeks)1
Reflects downloads up to 15 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Synthesizing Object State Transformers for Dynamic Software Updates2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)10.1109/ICSE43902.2021.00103(1111-1122)Online publication date: May-2021
  • (2020)PSU: A Framework for Dynamic Software Updates in Multi-threaded C-Language Programs2020 IEEE 32nd International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)10.1109/SBAC-PAD49847.2020.00040(233-240)Online publication date: Sep-2020
  • (2018)SEEDE: simultaneous execution and editing in a development environmentProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238182(270-281)Online publication date: 3-Sep-2018
  • (2018)Software Is Not SoftEngineering Trustworthy Software Systems10.1007/978-3-030-02928-9_5(143-175)Online publication date: 13-Nov-2018
  • (2017)A demonstration of simultaneous execution and editing in a development environmentProceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering10.5555/3155562.3155674(895-900)Online publication date: 30-Oct-2017
  • (2017)PistonProceedings of the 33rd Annual Computer Security Applications Conference10.1145/3134600.3134611(141-153)Online publication date: 4-Dec-2017
  • (2017)Hybridizing and Relaxing Dependence Tracking for Efficient Parallel Runtime SupportACM Transactions on Parallel Computing10.1145/31081384:2(1-42)Online publication date: 30-Aug-2017
  • (2017)Improving Timeliness and Visibility in Publishing Software Engineering ResearchIEEE Transactions on Software Engineering10.1109/TSE.2017.266391843:3(205-206)Online publication date: 1-Mar-2017
  • (2017)Automating Live Update for Generic Server ProgramsIEEE Transactions on Software Engineering10.1109/TSE.2016.258406643:3(207-225)Online publication date: 1-Mar-2017
  • (2017)CodeArmor: Virtualizing the Code Space to Counter Disclosure Attacks2017 IEEE European Symposium on Security and Privacy (EuroS&P)10.1109/EuroSP.2017.17(514-529)Online publication date: Apr-2017
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media