Safe and timely dynamic updates for multi-threaded programs

Iulian Neamtiu, Michael Hicks

Research output: Contribution to journalArticlepeer-review

15 Scopus citations

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 runtime 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.

Original languageEnglish (US)
Pages (from-to)13-24
Number of pages12
JournalACM SIGPLAN Notices
Volume44
Issue number6
StatePublished - Jun 2009
Externally publishedYes

All Science Journal Classification (ASJC) codes

  • General Computer Science

Keywords

  • Dynamic software updating
  • Multi-threading
  • Update safety
  • Update timeliness

Fingerprint

Dive into the research topics of 'Safe and timely dynamic updates for multi-threaded programs'. Together they form a unique fingerprint.

Cite this