Practical dynamic software updating for c
Just the checkpointing and re-reading from disk could take tens of minutes.With rebootless patching, this disruption is avoided; cf.Once the flag is set on all processes, k Graft drops the now-redundant indirection and jumps straight to the patched code.The problem with multi-version execution is that processes running two different code versions could interact, e.g., through common data structures, and thereby potentially violate new (or outdated) invariants.
This approach, however, introduces a lot of complexity (and opportunities for bugs) as the code is maintained and patched further, going ahead.
But Linux 4.0’s rebootless patching support limits flexibility for the sake of better performance, backward-compatibility, and ease of use by the kernel programmer, even though the latter is not quite satisfying, as we have discussed: ironically, a “rebootless patch” could result in a crash, defeating the point!
The research community has been looking at how to support highly-flexible DSU for many years now.
Linux 4.0 DSU support is a far cry from supporting Vaughan-Nichols’ hope that “With Linux 4.0, updates to a program we can make statically we can also make dynamically.
I.e., we should be able to add new functions, change function types (e.g., to have new or different arguments), or modify data structures, e.g., by adding new data elements, breaking apart or changing the types of existing elements, adding and removing pointers, etc.
Search for practical dynamic software updating for c:
From that point on, that process will always use the patched code.