TY - GEN
T1 - Safe and timely dynamic updates for multi-threaded programs
AU - Neamtiu, Iulian
AU - Hicks, Michael
PY - 2009
Y1 - 2009
N2 - 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.
AB - 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.
KW - Dynamic software updating
KW - Multi-threading
KW - Update safety
KW - Update timeliness
UR - http://www.scopus.com/inward/record.url?scp=70450247035&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=70450247035&partnerID=8YFLogxK
U2 - 10.1145/1542476.1542479
DO - 10.1145/1542476.1542479
M3 - Conference contribution
AN - SCOPUS:70450247035
SN - 9781605583921
T3 - Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
SP - 13
EP - 24
BT - PLDI'09 - Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation
T2 - 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI'09
Y2 - 15 June 2009 through 20 June 2009
ER -