Bug 1611547 - Fix MacProcessLauncher to close the IPC client pipe. r=froydnj

MacProcessLauncher overrides DoFinishLaunch from PosixProcessLauncher,
but doesn't call the superclass method, so CloseClientFileDescriptor is
never called on the channel.

Currently this doesn't cause any obvious problems, because the channel
object redundantly closes the fd when it first reads data from the child
process; however, that extra close is thread-unsafe and being removed in
bug 1607153.

Trying to fix bug 1607153 without this patch caused a number of test
suites to fail by timing out, probably because the extra copy of the
client (child) end of the pipe causes the server (parent) end to never
get an end-of-file or broken pipe error during shutdown.

Differential Revision: https://phabricator.services.mozilla.com/D61050

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Jed Davis 2020-01-28 12:56:46 +00:00
Родитель cf9ced0277
Коммит 5da5bf3e63
1 изменённых файлов: 4 добавлений и 0 удалений

Просмотреть файл

@ -1219,6 +1219,10 @@ bool PosixProcessLauncher::DoFinishLaunch() {
#ifdef XP_MACOSX
bool MacProcessLauncher::DoFinishLaunch() {
if (!PosixProcessLauncher::DoFinishLaunch()) {
return false;
}
// Wait for the child process to send us its 'task_t' data.
const int kTimeoutMs = 10000;