When server detects proxy socket lost, it kills all workers, and expects render_worker_jail_wait_workers() to reap render_worker instances one-by-one.
Instead, waitid() produces
errno == ECHILD and the server enters an
infinite busy-loop with worker_count > 0, but never returning a worker
to be reaped. This happens because the vtest server chooses to ignore
SIGCHLD and that is wrongfully inherited by
This failure condition can be triggered by:
- running vtest in forking mode (default), built with
VK_ICD_FILENAMES=<prefix>/share/vulkan/icd.d/virtio_icd.x86_64.json VN_DEBUG=vtest vkcube
- then sending SIGINT (ctrl-c) or SIGKILL to the forked
virgl_test_serverprocess, leaving the main vtest server running.
Signed-off-by: Ryan Neph firstname.lastname@example.org