UpStare manual

RELEASE_0-12-4

Kristis Makris <mkgnu@mkgnu.net>

This is the documentation of UpStare, a system that can apply immediate dynamic software updates in multi-threaded userspace applications using stack reconstruction.


Table of Contents
1. About
1.1. Copyright Information
1.2. Disclaimer
1.3. Document Conventions
2. Introduction
2.1. What Is It?
2.2. Example Updates
3. Installation
3.1. Availability
3.2. Installation
4. Preparing Updateable Programs
4.1. Invoking Wrapper Build Programs
4.2. Exporting Dynamic Symbols
4.3. Additional API Calls
4.4. Understanding The Compiler And Its Options
5. Preparing Dynamic Software Updates
5.1. Preparing An Updateable Original Version
5.2. Preparing An Updateable New Version
5.3. Describing Dynamic Software Updates
5.3.1. Describing Function Updates
5.3.2. Describing Execution Continuation
5.3.3. Describing Update Constraints
5.4. Running The Patch Generator
5.5. Compiling The Dynamic Software Update Patch
6. Applying Dynamic Software Updates
7. System Internals
7.1. Function Call Indirection
7.2. Thread Entry-Points
7.3. Signal Handlers
7.4. Update Points
7.5. Exported Local Variables
7.6. Multi-Threaded Updates
7.7. Multi-Process Updates
7.8. Blocking System Calls
7.9. Dynamic Stack Tracing
List of Figures
3-1. Forcing installation of RPM packages.
3-2. Forcing installation of Debian packages.
4-1. Original Makefile for PostgreSQL 7.4.16.
4-2. Makefile modifications for an updateable PostgreSQL 7.4.16.
4-3. Test program that attempts to be updated inside a signal handler.
4-4. Describing a compiler configuration.
5-1. Describing function updates for vsFTPd from 2.0.4 to 2.0.5.
5-2. Describing execution continuation when updating from Bubblesort to Heapsort.
5-3. Describing update constraints.
5-4. Preparing a dynamic software update patch for vsFTPd from 2.0.4 to 2.0.5.
5-5. Patch generator report to update vsFTPd from 2.0.4 to 2.0.5.
5-6. Compiling a dynamic software update patch for vsFTPd from 2.0.4 to 2.0.5.
6-1. Applying a dynamic software update for vsFTPd from 2.0.4 to 2.0.5