Commit Graph

486 Commits

Author SHA1 Message Date
Andreea Pavel
7f1f05a9b0 Backed out 2 changesets (bug 1498742) for build bustages at GMPProcessParent.cpp on a CLOSED TREE
Backed out changeset 5f9d32e26c71 (bug 1498742)
Backed out changeset ffc8d151cf3a (bug 1498742)
2019-06-13 04:38:56 +03:00
Haik Aftandilian
5f5b6f4f78 Bug 1498742 - Part 2 - Start the GMP sandbox earlier during process startup r=jya,cpearce
Change the Mac GMP process launch to include sandboxing params on the command line to allow the sandbox to be started earlier during GMP process launch. Content, extension, and RDD processes have already been changed to start the sandbox earlier.

Update GMPProcessParent to override GeckoChildProcessHost methods used to construct sandboxing parameters. Pass the plugin path as a sandbox parameter so that the sandbox rules can whitelist the plugin directory which is now read after the sandbox is enabled in the plugin process. On development builds, pass "testingReadPath" params so directories needed during automated tests can be whitelisted.

Update Mac sandboxing code to detect GMP sandbox params on the command line and enable the sandbox with additional arguments needed for early sandbox start.

Allow reverting to the old implementation by setting security.sandbox.gmp.mac.earlyinit to false.

Differential Revision: https://phabricator.services.mozilla.com/D34085
2019-06-12 23:41:53 +00:00
Jed Davis
218ced2a41 Bug 1548525 - Detect Android launch failure. r=snorp
Currently the Android implementation of process launch signals failure by
returning pid 0 through an out-parameter; we don't check for that, so we
report success and then the bad pid spreads through IPC until it sets off
an assertion somewhere else.  This patch adds the missing check and
strengthens an assertion that would have caught the problem more directly.

Differential Revision: https://phabricator.services.mozilla.com/D32875
2019-05-28 21:08:36 +00:00
Sylvestre Ledru
72e7e7d7e7 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D27245
2019-04-12 13:14:25 +00:00
Aaron Klotz
3bc3ad73df Bug 1541130: Add XRE_GetChildProcBinPathType to nsXULAppAPI.h; r=froydnj,jld
The binary path type of a particular content process is useful information
outside of IPC. Given that `XRE_EnableSameExecutableForContentProc` already
exists, and given that the binary path type is closely related to
`GeckoProcessType`, I've added a new function, `XRE_GetContentProcBinPathType`.

The mapping of process type to binary type has been moved to the
`GeckoProcessTypes` definitions.

This patch also modifies `ipc::GeckoChildProcessHost` to call into the new
function.

Differential Revision: https://phabricator.services.mozilla.com/D25816
2019-04-08 20:19:51 +00:00
Ciure Andrei
d0bbbbeec0 Backed out 3 changesets (bug 1541130) for causing GeckoChildProcessHost.cpp build bustages CLOSED TREE
Backed out changeset 656108173cde (bug 1541130)
Backed out changeset 5914a425bc67 (bug 1541130)
Backed out changeset 8ef30ebad16c (bug 1541130)
2019-04-08 22:54:57 +03:00
Aaron Klotz
9af327f6c0 Bug 1541130: Follow-up: Add more missing parts that had been stripped during rebase; r=froydnj, jld on a CLOSED TREE 2019-04-08 13:28:04 -06:00
Khyati Agarwal
1f82da5665 bug 1469694 - GeckoChildProcessHost should check the return value of LaunchApp r=jld
Differential Revision: https://phabricator.services.mozilla.com/D24837
2019-04-01 21:58:23 +00:00
Haik Aftandilian
00334624af Bug 1525086 - Part 3b - Start the RDD sandbox earlier r=Alex_Gaynor
Start the RDD process earlier by changing RDDProcessHost to pass the necessary command line arguments for enabling the sandbox.

Per lsmp output on 10.14.3, starting the RDD process sandbox removes access to WindowServer, coreservicesd, lsd and distnoted.

Add a pref (defaulting to on) to control enabling starting the RDD process earlier.

Differential Revision: https://phabricator.services.mozilla.com/D23460
2019-03-28 02:25:50 +00:00
Haik Aftandilian
5447b12dcb Bug 1525086 - Part 3a - Move sandbox param logic to GeckoChildProcessHost and MacSandboxInfo to be more reusable r=Alex_Gaynor
Move sandbox early start logic to GeckoChildProcessHost.

Move sandbox CLI param logic into MacSandboxInfo.

Differential Revision: https://phabricator.services.mozilla.com/D22409
2019-03-28 02:25:52 +00:00
Alex Gaynor
a1982759e2 Bug 1375863 - fold MOZ_CONTENT_SANDBOX and MOZ_GMP_SANDBOX into MOZ_SANDBOX; r=jld,firefox-build-system-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D22975
2019-03-18 22:31:59 +00:00
Chris Pearce
f6f051e018 Bug 1530245 - Launch sandbox from new remote sandbox broker process. r=jld,bobowen
Depends on D22051

Differential Revision: https://phabricator.services.mozilla.com/D22052
2019-03-13 09:24:52 +00:00
Chris Pearce
c84017dba4 Bug 1530245 - Make GeckoChildProcessHost::mSandboxBroker an abstract pointer. r=bobowen
Differential Revision: https://phabricator.services.mozilla.com/D22051
2019-03-13 09:24:37 +00:00
David Major
0b03d5e4d0 Bug 1531376: Fix more unused code -Werrors in GeckoChildProcessHost.cpp 2019-03-01 14:29:39 -05:00
Chris Pearce
5aee4f8c64 Bug 1531376 - #ifdef out isWidevine if sandbox disabled in GeckoChildProcessHost.cpp. r=dmajor
Differential Revision: https://phabricator.services.mozilla.com/D21600
2019-02-28 21:35:25 +00:00
Chris Pearce
5e0e5b5238 Bug 1527811 - Don't pass appdir and omnijar path to GMP processes. r=bobowen
GMP shouldn't need them anyway, and this reduces the dependencies from the x86
build we need to package in the "i686" subdir.

Differential Revision: https://phabricator.services.mozilla.com/D19902
2019-02-15 10:47:45 +13:00
Chris Pearce
660a552dbc Bug 1527811 - Execute plugin-container.exe for CDM GMP child process in "i686" subdir on Windows on ARM. r=bobowen
This patch assumes that "the build" places plugin-container.exe, xul.dll, and
their dependencies in the "i686" subdirectory of the aarch64 firefox package
directory.

Differential Revision: https://phabricator.services.mozilla.com/D19898
2019-02-12 15:45:07 +13:00
Jed Davis
22f2323d8b Bug 1487287 - Move child process launch off the I/O thread. r=mccr8
Launching processes takes enough time that we should avoid blocking the
parent process's IPC I/O thread for it; it's less bad for responsiveness
than blocking the main thread, but it's not good.

On Windows we need to use a dedicated thread, because the sandbox isn't
thread-safe and it asserts that the same thread is used for every
launch.  Otherwise, a thread pool is used.  (Or, in the Web Replay
middleman process, where there isn't enough of XPCOM for any of this,
launching the actual content processes remains on the I/O thread.)

Depends on D18011

Differential Revision: https://phabricator.services.mozilla.com/D8946
2019-02-05 00:15:22 +00:00
Jed Davis
ffdd1fdc8a Bug 1487287 - Synchronize GeckoChildProcessHost destruction with launching. r=mccr8
In order to enable asynchronous launch, destruction of
GeckoChildProcessHost (and its subclasses) has to be delayed until after
launching (or anything else that might be made asynchronous in the
future) has completed, to prevent use-after-free.  However, there are
other dependencies on process hosts always being destroyed on the I/O
thread, so refcounting would be difficult to use.

Instead, GeckoChildProcessHost now may not be destroyed directly, but
must go through a method that handles the scheduling.

There are also some minor cleanups to the affected headers (removed
duplicate access modifiers, and made PluginProcessParent final).

Depends on D18010

Differential Revision: https://phabricator.services.mozilla.com/D18011
2019-02-05 00:15:20 +00:00
Ehsan Akhgari
498e2df734 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset
2019-01-18 10:16:18 +01:00
Nathan Froyd
0ab475cfc0 Bug 1518923 - simplify subprocess handle duplication logic in PerformAsyncLaunch; r=bobowen
Avoiding handle duplication for certain kinds of processes and allowing
it for everything else seems to be what we're already doing, so let's
make it easier to add new process types with that scheme in mind.
2019-01-14 11:01:48 -05:00
Kershaw Chang
cfb044fab9 Bug 1513057 - P1: Start the new socket process basics (prefs, full xpcom init, logging, no sandboxing) r=mayhemer,dragana
Differential Revision: https://phabricator.services.mozilla.com/D14148
2019-01-11 18:57:23 +00:00
Andreea Pavel
d4eef2124c Backed out 10 changesets (bug 1513057) for build bustages on a CLOSED TREE
Backed out changeset 56329b5f1844 (bug 1513057)
Backed out changeset 46411c5de3da (bug 1513057)
Backed out changeset de65c456aad6 (bug 1513057)
Backed out changeset f648b5f1a7c2 (bug 1513057)
Backed out changeset 460bbf0849e1 (bug 1513057)
Backed out changeset 86032a14d26f (bug 1513057)
Backed out changeset a81f83df08d5 (bug 1513057)
Backed out changeset edbda5ee5fd5 (bug 1513057)
Backed out changeset c900ac2519f5 (bug 1513057)
Backed out changeset 4e94bbb90315 (bug 1513057)
2019-01-11 17:02:44 +02:00
Kershaw Chang
72ed268015 Bug 1513057 - P1: Start the new socket process basics (prefs, full xpcom init, logging, no sandboxing) r=mayhemer,dragana
Differential Revision: https://phabricator.services.mozilla.com/D14148
2019-01-11 14:07:47 +00:00
Nathan Froyd
0223a5739a Bug 1518922 - part 1 - remove dead code for extra crashreporting directory; r=Alex_Gaynor
The command-line parameter used by nsEmbedFunctions.cpp is turned into
an nsIFile, and then said nsIFile is never used.  Its last use was
deleted in bug 1407693, where we reworked how extra annotations were
done.
2019-01-10 16:13:37 -05:00
Jed Davis
620eb34780 Backed out changeset a0cf88b1fe5b (bug 1487287) 2019-01-10 13:55:31 -07:00
Jed Davis
758c8ca34c Bug 1487287 - Move child process launch off the I/O thread. r=mccr8
Launching processes takes enough time that we should avoid blocking the
parent process's IPC I/O thread for it; it's less bad for responsiveness
than blocking the main thread, but it's not good.

On Windows we need to use a dedicated thread, because the sandbox isn't
thread-safe and it asserts that the same thread is used for every
launch.  Otherwise, a thread pool is used.  (Or, in the Web Replay
middleman process, where there isn't enough of XPCOM for any of this,
launching the actual content processes remains on the I/O thread.)

Depends on D15886

Differential Revision: https://phabricator.services.mozilla.com/D8946
2019-01-09 02:52:10 +00:00
Jed Davis
5b46d6a903 Bug 1487287 - Set profiler env vars in child processes without side-effecting the parent process. r=mstange
We can directly set environment variables for the child process on
all platforms now, instead of changing the parent's environment and
inheriting the changes.  This simplifies memory management, but more
importantly it's necessary for thread safety to allow launching
processes from a thread pool.

Depends on D8944

Differential Revision: https://phabricator.services.mozilla.com/D8945
2019-01-08 23:53:36 +00:00
Gabriele Svelto
2fcbf36acf Bug 1511557 - Do not leak the pipe used for sending crash annotations when hitting errors during startup r=jld
Differential Revision: https://phabricator.services.mozilla.com/D14744
2018-12-19 15:29:09 +00:00
Razvan Maries
923fe25353 Backed out changeset 15f8b27f1305 (bug 1511557) for build bustages on a CLOSED TREE. 2018-12-14 11:54:33 +02:00
Gabriele Svelto
9999877375 Bug 1511557 - Do not leak the pipe used for sending crash annotations when hitting errors during startup r=jld
Differential Revision: https://phabricator.services.mozilla.com/D13999
2018-12-14 02:47:03 +00:00
Sylvestre Ledru
e5a134f73a Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset
2018-11-30 11:46:48 +01:00
Michael Froman
a4ab578d92 Bug 1498624 - pt2 - Implement Win sandbox for RDD process. r=bobowen
Differential Revision: https://phabricator.services.mozilla.com/D13101
2018-11-29 17:02:16 +00:00
Jed Davis
708bc0f4b5 Bug 1474991 - Add new and improved performance telemetry for child process launching. r=mccr8,mconley,janerik
This patch adds some telemetry histograms:

* CONTENT_PROCESS_LAUNCH_IS_SYNC - boolean, true if the content process
was launched synchronously (blocking the main thread)

* CONTENT_PROCESS_SYNC_LAUNCH_MS - the time consumed by sync launch;
the main thread will be busy or blocked for this entire time

* CONTENT_PROCESS_LAUNCH_TOTAL_MS - the total time elapsed from the
start of async content process launch until the launch promise is
resolved and the ContentParent can be sent IPDL messages

* CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS - the time consumed on the parent
process main thread during async content process launch; typically this
is due to ContentParent::Init.

* CHILD_PROCESS_LAUNCH_MS - for any kind of Gecko child process
(including plugins, GPU, etc.), the time taken in the common process
launch code (which is run off-main-thread)

The probes restricted to async content process launch don't have "async"
in the name because that will eventually become the only kind of content
process launch.

Depends on D8943

Differential Revision: https://phabricator.services.mozilla.com/D8944
2018-11-28 20:42:33 +00:00
Jed Davis
cb12d5b5ef Bug 1446161 - Asynchronously launch preallocated content processes using MozPromise. r=mccr8
There are several layers to this patch:

1. GeckoChildProcessHost now exposes a promise that's resolved when
the process handle is available (or rejected if launch failed), as a
nonblocking alternative to LaunchAndWaitForProcessHandle.

2. ContentParent builds on this with the private method
LaunchSubprocessAsync and the public method PreallocateProcessAsync;
synchronous launch continues to exist for the regular on-demand launch
path, for the time being.

3. PreallocatedProcessManager now uses async launch, and handles the new
"launch in progress" state appropriately.

Depends on D8942

Differential Revision: https://phabricator.services.mozilla.com/D8943
2018-11-28 20:42:31 +00:00
Jed Davis
19da9ddb0c Bug 1446161 - Remove the earlier attempt at async launch. r=spohl,mccr8
The first attempt at async launch tried to hide the asynchrony inside
IPC, by making the process seem to be launched enough to construct new
channels and send it messages, and lazily blocking on the pid/handle.
Unfortunately, in practice we wind up needing the pid/handle immediately,
and this requirement is too deeply embedded in IPC for that to be viable.

(The alternative that will be used instead -- exposing process launch via
an explicitly asynchronous promise interface -- is made simpler by
Project Fission's upcoming rewrite of how the DOM requests new content
processes.)

Depends on D8941

Differential Revision: https://phabricator.services.mozilla.com/D8942
2018-11-28 20:42:24 +00:00
Sylvestre Ledru
6a934a2d97 Bug 1503537 - Get rid of the pdfium & mortar code r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D10352
2018-11-28 19:31:21 +00:00
Ehsan Akhgari
35c4e1a185 Bug 1508472 - Part 4: Fourth batch of comment fix-ups in preparation for the tree reformat r=sylvestre
This is a best effort attempt at ensuring that the adverse impact of
reformatting the entire tree over the comments would be minimal.  I've used a
combination of strategies including disabling of formatting, some manual
formatting and some changes to formatting to work around some clang-format
limitations.

Differential Revision: https://phabricator.services.mozilla.com/D13193
2018-11-28 09:16:55 +00:00
Andreea Pavel
eeb20fa828 Backed out 8 changesets (bug 1446161, bug 1487287, bug 1488993, bug 1474991, bug 1496608) for very frequent automation.py crashes on a CLOSED TREE
Backed out changeset 8b1f88d7bfeb (bug 1487287)
Backed out changeset 8fa5e81ad801 (bug 1487287)
Backed out changeset 7a480161fa0f (bug 1474991)
Backed out changeset 80116391b7fe (bug 1446161)
Backed out changeset 1bdf64b29121 (bug 1446161)
Backed out changeset 37bf52f0e9cf (bug 1446161)
Backed out changeset 8ede2ebe6b7a (bug 1496608)
Backed out changeset cea43bc88c7a (bug 1488993)
2018-11-27 08:53:18 +02:00
Jed Davis
c34630780a Bug 1487287 - Move child process launch off the I/O thread. r=mccr8
Launching processes takes enough time that we should avoid blocking the
parent process's IPC I/O thread for it; it's less bad for responsiveness
than blocking the main thread, but it's not good.

On Windows we need to use a dedicated thread, because the sandbox isn't
thread-safe and it asserts that the same thread is used for every
launch.  Otherwise, a thread pool is used.

Depends on D8945

Differential Revision: https://phabricator.services.mozilla.com/D8946
2018-11-22 00:06:22 +00:00
Jed Davis
51bf737d1b Bug 1487287 - Set profiler env vars in child processes without side-effecting the parent process. r=mstange
We can directly set environment variables for the child process on
all platforms now, instead of changing the parent's environment and
inheriting the changes.  This simplifies memory management, but more
importantly it's necessary for thread safety to allow launching
processes from a thread pool.

Depends on D8944

Differential Revision: https://phabricator.services.mozilla.com/D8945
2018-11-22 00:06:20 +00:00
Jed Davis
5937b50474 Bug 1474991 - Add new and improved performance telemetry for child process launching. r=mccr8,mconley,janerik
This patch adds some telemetry histograms:

* CONTENT_PROCESS_LAUNCH_IS_SYNC - boolean, true if the content process
was launched synchronously (blocking the main thread)

* CONTENT_PROCESS_SYNC_LAUNCH_MS - the time consumed by sync launch;
the main thread will be busy or blocked for this entire time

* CONTENT_PROCESS_LAUNCH_TOTAL_MS - the total time elapsed from the
start of async content process launch until the launch promise is
resolved and the ContentParent can be sent IPDL messages

* CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS - the time consumed on the parent
process main thread during async content process launch; typically this
is due to ContentParent::Init.

* CHILD_PROCESS_LAUNCH_MS - for any kind of Gecko child process
(including plugins, GPU, etc.), the time taken in the common process
launch code (which is run off-main-thread)

The probes restricted to async content process launch don't have "async"
in the name because that will eventually become the only kind of content
process launch.

Depends on D8943

Differential Revision: https://phabricator.services.mozilla.com/D8944
2018-11-22 00:06:17 +00:00
Jed Davis
cc76a0b7a4 Bug 1446161 - Asynchronously launch preallocated content processes using MozPromise. r=mccr8
There are several layers to this patch:

1. GeckoChildProcessHost now exposes a promise that's resolved when
the process handle is available (or rejected if launch failed), as a
nonblocking alternative to LaunchAndWaitForProcessHandle.

2. ContentParent builds on this with the private method
LaunchSubprocessAsync and the public method PreallocateProcessAsync;
synchronous launch continues to exist for the regular on-demand launch
path, for the time being.

3. PreallocatedProcessManager now uses async launch, and handles the new
"launch in progress" state appropriately.

Depends on D8942

Differential Revision: https://phabricator.services.mozilla.com/D8943
2018-11-22 00:35:53 +00:00
Jed Davis
fe09bf0145 Bug 1446161 - Remove the earlier attempt at async launch. r=spohl,mccr8
The first attempt at async launch tried to hide the asynchrony inside
IPC, by making the process seem to be launched enough to construct new
channels and send it messages, and lazily blocking on the pid/handle.
Unfortunately, in practice we wind up needing the pid/handle immediately,
and this requirement is too deeply embedded in IPC for that to be viable.

(The alternative that will be used instead -- exposing process launch via
an explicitly asynchronous promise interface -- is made simpler by
Project Fission's upcoming rewrite of how the DOM requests new content
processes.)

Depends on D8941

Differential Revision: https://phabricator.services.mozilla.com/D8942
2018-11-22 00:06:14 +00:00
Michael Froman
e24e61acf8 Bug 1471535 - pt12 - Hook up RDD process and Remote decoding. r=jya,spohl
Depends on D8493

Differential Revision: https://phabricator.services.mozilla.com/D8494
2018-11-14 18:07:28 +00:00
Michael Froman
1917fcbda6 Bug 1471535 - pt9 - Add Windows sandbox pref and Win sandboxBroker code for RDD process. r=bobowen
Depends on D8490

Differential Revision: https://phabricator.services.mozilla.com/D8491
2018-11-14 18:06:37 +00:00
Bogdan Tara
ab4f52af45 Backed out 12 changesets (bug 1471535) for VideoDecoderChild failures CLOSED TREE
Backed out changeset 3d8a11458d79 (bug 1471535)
Backed out changeset 2176010bc1fe (bug 1471535)
Backed out changeset dfb4d3462b22 (bug 1471535)
Backed out changeset ea6b73ded74d (bug 1471535)
Backed out changeset 404d760a9e82 (bug 1471535)
Backed out changeset 28ae4b6fab68 (bug 1471535)
Backed out changeset af91e1f04c2d (bug 1471535)
Backed out changeset d39fef4334b3 (bug 1471535)
Backed out changeset a038821cd8ae (bug 1471535)
Backed out changeset 5dcc74a938c6 (bug 1471535)
Backed out changeset 53aff7e699b4 (bug 1471535)
Backed out changeset f3f6abc052f0 (bug 1471535)
2018-11-13 23:31:56 +02:00
Michael Froman
c405802ecc Bug 1471535 - pt12 - Hook up RDD process and Remote decoding. r=jya,spohl
Depends on D8493

Differential Revision: https://phabricator.services.mozilla.com/D8494
2018-11-13 17:36:47 +00:00
Michael Froman
e3bd439235 Bug 1471535 - pt9 - Add Windows sandbox pref and Win sandboxBroker code for RDD process. r=bobowen
Depends on D8490

Differential Revision: https://phabricator.services.mozilla.com/D8491
2018-11-13 17:35:57 +00:00
Dorel Luca
2acd40fffe Backed out 9 changesets (bug 1471535) for Mochitest failures in build/src/dom/media/ipc/VideoDecoderChild.cpp
Backed out changeset 1342e21cf613 (bug 1471535)
Backed out changeset 8dc9b4d59f90 (bug 1471535)
Backed out changeset 8082f226b52d (bug 1471535)
Backed out changeset f53e1e7bd538 (bug 1471535)
Backed out changeset 1a991ac2e1f8 (bug 1471535)
Backed out changeset a32288737e57 (bug 1471535)
Backed out changeset a094c1ac3afe (bug 1471535)
Backed out changeset fe9b5cdf78f9 (bug 1471535)
Backed out changeset 3a8a75389c42 (bug 1471535)
2018-11-09 12:14:50 +02:00