server: use SIGCHLD to reap subprocesses timely
This MR modifies the render server to use SIGCHLD
to reap subprocesses. It handles crashed subprocesses as well, which requires me to waitid(P_ALL, ...)
rather than waitid(P_PID, ...)
. For that to work, I have to track all workers in render_worker_jail
.
The first 3 commits are minor fixes/cleanups.
The next 3 commits add worker tracking to render_worker_jail
.
The next commit overhauls worker apis and internals. Because render_worker_jail
tracks workers now, we can hide the complexity of process management and present a simplified api. This also switches to ``waitid(P_ALL, ...)`.
The last commit uses SIGCHLD
to reap.