Safe and Timely Dynamic Updates for Multi-threaded Programs. Iulian Neamtiu and Michael Hicks. In Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI), June 2009.

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.

[.pdf ]

@INPROCEEDINGS{neamtiu09mtdsu,
  AUTHOR = {Iulian Neamtiu and Michael Hicks},
  TITLE = {Safe and Timely Dynamic Updates for Multi-threaded Programs},
  BOOKTITLE = {Proceedings of the {ACM} Conference on Programming Language Design and Implementation (PLDI)},
  PAGES = {13--24},
  LOCATION = {Dublin, Ireland},
  MONTH = {June},
  YEAR = {2009}
}