7.7. Multi-Process Updates

Multi-process applications whose multiple processes communicate with each other, such as processes that use shared memory, signals, or pipes, still need to be updated immediately as a group to guarantee a safe update.

The UpStare compiler automatically transforms calls to fork() into calls to the runtime system. The runtime system traces the process hierarchy and when an update must be applied, stack unwinding and reconstruction is coordinated to be atomic among all children, and their threads, of the application. It also wraps calls to wait() and waitpid() to free memory used for process hierarchy tracing.

Tip

Supporting multi-process updates can be disabled by supplying the --no-multi-process argument to the compiler.