DarthSim / hivemind

Process manager for Procfile-based applications
MIT License
981 stars 29 forks source link

Sub-processes aren't in the same process group #8

Open sheerun opened 6 years ago

sheerun commented 6 years ago

Because subprocesses aren't in the same process group as hivemind, when hivemind gets killed for some reason, the subprocesses arn't killed and are disowned instead.

Could you please spawn subprocesses in the same process group?

DarthSim commented 6 years ago

Processes have to be run in their own sessions because of PTY. It's not possible to run a process in a different session but the same group ID. Correct me if I'm wrong.

sheerun commented 6 years ago

You're correct. According to this stackoverflow, it seems the solution would be to use:

  1. On Linux set Pdeathsig to syscall.SIGTERM
  2. On other platforms run intermediate child that pools whether its ppid is 1. If it is it means parent died and it should send SIGTERM to supervised process (you can also use other tricks like kqueue or sharing pipe that gets closed when parent dies, but it seems there's no solution without using intermediate process).
sheerun commented 6 years ago

Or you cold record spawned pids and kill / reattach to them when running second time after crash. Of course it would leave these processes running until hivemind is started again. Not sure which solution is worse, but probably both better than allowing sub-processes to run indefinitely after hivemind crashes or gets killed.

DarthSim commented 5 years ago

Added Pdeathsig to v1.0.5.