issue killing subprocesses using `cd` with failure at startup
mjhoy opened this issue · comments
Hello,
I've run into an interesting problem, and reduced to it what I think is a minimal case. I have the following Procfile
(note this requires python 3.x to run):
server: cd inner && python -m http.server 8000
failure: sleep 1 && false
Running foreman start
in a directory with an inner
subdirectory (so the cd
doesn't fail), I get:
% foreman start
10:20:30 server.1 | started with pid 15205
10:20:30 failure.1 | started with pid 15206
10:20:32 failure.1 | exited with code 1
10:20:32 system | sending SIGTERM to all processes
10:20:32 server.1 | terminated by SIGTERM
However, the server is still running:
% lsof -i tcp:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3.7 15207 mikeyhoy 3u IPv4 0xe5175633836f0ad9 0t0 TCP *:irdmi (LISTEN)
If I remove the cd inner &&
from the server
child command, it works as expected, the subprocess getting terminated. Even more interestingly, if I remove the failure
child, and exit foreman normally with Control-C, it correctly kills the subprocess. So it only seems to happen if another child process fails at startup.
Any ideas on what's going on?
Thanks.
EDIT: I'm using the current version,
% foreman --version
0.87.1
Maybe due to #779? That issue has been addressed in overman
, a foreman fork, see #780 (comment)