Dynamic Software Updating

Software systems are imperfect, so software updates are a fact of life. While typical software updates require stopping and restarting the program in question, many systems cannot afford to halt service, or would prefer not to.  Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run.  DSU is appealing compared to other approaches for on-line upgrades because it is quite general and requires no redundant hardware.  The challenge is in making DSU flexible, and yet safe and easy to use.  In this project we are exploring this tension through theoretical programming language development, and practical implementation experience.

People

CurrentFormer
Gavin Bierman (Microsoft Research)
Eric Hardisty (Maryland)
Chris Hayden (Maryland)
Michael Hicks (Maryland)
Iulian Neamtiu (Maryland)
Peter Sewell (Cambridge)
Gareth Stoyle (Cambridge)
Manuel Oriol (ETH Zurich)

Current Activities

We have a DSU implementation for C programs called Ginseng that we have used to dynamically update well-known open-source programs: the vsftpd FTP server, the sshd in the OpenSSH suite, and the zebra routing daemon from the GNU Zebra routing software package.  This implementation uses a novel static analysis to determine good times during a program's execution to perform updates (first proposed in our POPL paper).

We are currently exploring approaches to supporting DSU in multi-threaded programs, toward supporting DSU in operating systems. We have also begun to explore means for adding DSU capabilities to object-oriented languages through explicit versioning.

Software

Ginseng, our DSU implementation for C programs, runs on Linux; it requires gcc 3.3+ and ocaml 3.08+. It should compile on BSD and MacOS, so you're able to see how the safety analyses and source-to-source transformations work, but to actually perform dynamic updates you need to have dynamic linking working, and we haven't tested that on platforms other than Linux. You can find an user's guide in the tarball, under ginseng/doc/UsersGuide/guide.pdf. Contact Iulian Neamtiu for Ginseng-related issues.
Latest release is Ginseng v1.2.2. (Jan 13, 2008)

Papers

  1. Contextual Effects for Version-Consistent Dynamic Software Updating and Safe Concurrent Programming. Iulian Neamtiu, Michael Hicks, Jeffrey S. Foster, and Polyvios Pratikakis. Proceedings of the ACM Conference on Principles of Programming Languages (POPL'08), January 2008.

  2. Contextual Effects for Version-Consistent Dynamic Software Updating and Safe Concurrent Programming. Iulian Neamtiu, Michael Hicks, Jeffrey S. Foster, Polyvios Pratikakis. Department of Computer Science Technical Report CS-TR-4920, November 2007.

  3. Mutatis Mutandis: Safe and Flexible Dynamic Software Updating (full version). Gareth Stoyle, Michael Hicks, Gavin Bierman, Peter Sewell, and Iulian Neamtiu. ACM Transactions on Programming Languages and Systems (TOPLAS), 29(4), August 2007. Full version of POPL 05 paper.

  4. Practical Dynamic Software Updating for C.  Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. In Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI), June 2006. A slightly extended version appears as Maryland Technical Report CS-TR-4790 (March 2006).

  5. Formalizing Dynamic Software Updating.  Gavin Bierman, Michael Hicks, Peter Sewell, and Gareth Stoyle.  In Proceedings of the Second International Workshop on  Unanticipated Software Evolution (USE), April 2003.

  6. Dynamic Software Updating.  Michael Hicks and Scott M. Nettles.  ACM Transactions on Programming Languages and Systems  (TOPLAS), 27(6), November 2005.  This is a shorter version of Hicks' dissertation (which won the ACM SIGPLAN 2002 Doctoral Dissertation Award), superseding a paper that appeared at PLDI 2001.

Posters, Presentations

  1. Dynamic Software Updating for the Linux Kernel. Iulian Neamtiu and Michael Hicks. Work-in-progress session at The 7th USENIX Symposium on Operating Systems Des ign and Implementation (OSDI), November 2006.

  2. Ginseng: A System for Dynamic Software Updating. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Poster presentation at ACM Conference on Programming Language Design and Impl ementation (PLDI), June 2006.

Funding

This material is based upon work supported in part by the National Science Foundation under Grant No. CCF-0346989, CAREER: Programming Languages for Reliable and Secure Low-level Systems. Any opinions, findings and conclusions or recome ndations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF).

Related Projects