Flexible and Efficient Dynamic Software Updating for C

Dynamic software updating (DSU) systems allow programs to
be updated while running, thereby allowing developers to add features
and fix bugs without downtime. No-downtime fixes are particular
important for security-critical systems (e.g., IDS/IPS appliances),
and for security patches (e.g., to server infrastructure). In this
talk I will present Kitsune, a new DSU system for C whose design has
three notable features. First, Kitsune's updating mechanism updates
the whole program, not individual functions. This mechanism is more
flexible than most prior approaches and places no restrictions on data
representations or allowed compiler optimizations. Second, Kitsune
makes the important aspects of updating explicit in the program text,
making its semantics easy to understand while keeping programmer work
to a minimum. Finally, the programmer can write simple specifications
to direct Kitsune to generate code that traverses and transforms
old-version state for use by the new code; such state transformation
is often necessary, and is significantly more difficult in prior DSU
systems. We have used Kitsune to update six popular, open-source,
single- and multi-threaded programs, and find that few program changes
are required to use Kitsune, and that it incurs essentially no
performance overhead.