hivemind icon indicating copy to clipboard operation
hivemind copied to clipboard

Sub-processes aren't in the same process group

Open sheerun opened this issue 8 years ago • 4 comments
trafficstars

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?

sheerun avatar Nov 20 '17 00:11 sheerun

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.

DarthSim avatar Nov 20 '17 12:11 DarthSim

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 avatar Nov 20 '17 13:11 sheerun

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.

sheerun avatar Nov 20 '17 13:11 sheerun

Added Pdeathsig to v1.0.5.

DarthSim avatar Feb 12 '19 12:02 DarthSim