-
Notifications
You must be signed in to change notification settings - Fork 3
Description
The multi-process z3 client/server setup leaves behind zombie z3 server processes from earlier spawns. There may be two reasons why this is happening.
There is already a SIGKILL signal sent to the server from the client when the z3client policy decides it is time to respawn the server process. There may be some issue with the parameters to this system call preventing it from killing existing server instances even as new instances are spawned.
There is also the more basic issue that the child (z3server) does not exit when the parent (superopt) exits. There are fixes to this issue, e.g., https://stackoverflow.com/questions/284325/how-to-make-child-process-die-after-parent-exits/36945270#36945270 , relying on the prctl system call (https://man7.org/linux/man-pages/man2/prctl.2.html)
I foresee this won't be a major issue for long-running compiler instances but we must fix this eventually for hygiene.