Fix PR_SET_PDEATHSIG results in Broken pipe (#2395)

The ssh client is lazily started by the first worker thread, that
requires a ssh connection. To avoid the ssh client to be killed, when
the worker process is stopped, do not set PR_SET_PDEATHSIG.

(cherry picked from commit 3e347220c82d1537723f49aa03a93a6f9d294417)
This commit is contained in:
Tobias Möst 2020-02-14 07:47:48 +01:00 committed by Eelco Dolstra
parent 6d01e9a623
commit a25214a2bc
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE

View file

@ -33,6 +33,9 @@ std::unique_ptr<SSHMaster::Connection> SSHMaster::startCommand(const std::string
out.create();
auto conn = std::make_unique<Connection>();
ProcessOptions options;
options.dieWithParent = false;
conn->sshPid = startProcess([&]() {
restoreSignals();
@ -64,7 +67,7 @@ std::unique_ptr<SSHMaster::Connection> SSHMaster::startCommand(const std::string
// could not exec ssh/bash
throw SysError("unable to execute '%s'", args.front());
});
}, options);
in.readSide = -1;
@ -91,6 +94,9 @@ Path SSHMaster::startMaster()
Pipe out;
out.create();
ProcessOptions options;
options.dieWithParent = false;
state->sshMaster = startProcess([&]() {
restoreSignals();
@ -110,7 +116,7 @@ Path SSHMaster::startMaster()
execvp(args.begin()->c_str(), stringsToCharPtrs(args).data());
throw SysError("unable to execute '%s'", args.front());
});
}, options);
out.writeSide = -1;