When the fork server is enabled, not all IPC child processes are children of
the fork server; currently, process types other than content processes
are still spawned directly. This means that we need to `waitid` or
`waitpid` them when they exit in order to not leak zombie processes.
Specifically, we can just try to `waitid` the process, and then if that
fails with `ECHILD` we can assume it was a fork server child and fall
back to the previous `kill(pid, 0)` workaround. This patch does that,
but only if the fork server is active; otherwise we maintain the current
behavior of only waiting for child processes directly.
Differential Revision: https://phabricator.services.mozilla.com/D168756
When the fork server is enabled, not all IPC child processes are children of
the fork server; currently, process types other than content processes
are still spawned directly. This means that we need to `waitid` or
`waitpid` them when they exit in order to not leak zombie processes.
Specifically, we can just try to `waitid` the process, and then if that
fails with `ECHILD` we can assume it was a fork server child and fall
back to the previous `kill(pid, 0)` workaround. This patch does that,
but only if the fork server is active; otherwise we maintain the current
behavior of only waiting for child processes directly.
Differential Revision: https://phabricator.services.mozilla.com/D168756
Tests for about:memory doesn't know about utility processes. Make sure
to hide the utility process reporter when needed.
Differential Revision: https://phabricator.services.mozilla.com/D167662
Previously it was a property that all types could have, which was
incorrect, as only the UniquePtrType IPDLType could ever be a UniquePtr.
This changes that logic to make it more consistent with other IPDL
Types.
This also removes the check for a UniquePtr type attached to a `using`
statement, as the type can never be an IPDL type in that situation.
Differential Revision: https://phabricator.services.mozilla.com/D168746
Make sure that the geolocation utility process restarts for georequests that arrive after a crash. This tests process behavior regardless of whether or not the OS is set to allow geolocation (and in automation, it is not).
Depends on D162944
Differential Revision: https://phabricator.services.mozilla.com/D162945
Adds a new type of utility process that is set up to handle Windows OS objects. We are adding this process type to run Windows geolocation APIs but more services are expected to be included in it. The ILocation APIs have a race condition that would otherwise crash the main process. The ILocation work is in a later patch in the series.
Depends on D155017
Differential Revision: https://phabricator.services.mozilla.com/D155018
This patch adds the ability for Windows on ARM to launch either x86 or
ARM Widevine plugins. It also adds the ability for Windows on x86 to
refuse ARM binaries in case, for example, a profile is transferred
between machines.
Overall this should be a non-functional change for users at the time of
landing. It does however allow us to ship the ARM Widevine plugin to
Windows ARM users to workaround a plugin crash with the x86 Widevine
plugin. This only affects Windows 10 users (Windows 11 works fine).
Differential Revision: https://phabricator.services.mozilla.com/D167634
This patch implements a number of cleanups for how send semantics are
represented in IPDL types.
1. needsMoreJuiceThan is inlined.
2. convertsTo is renamed to sendSemanticsSatisfiedBy to be more descriptive,
and is no longer a class method.
3. nestedRange, sendSemantics and the methods that operate on them
are moved from IPDLType to a new class, which MessageType and
ProtocolType now inherit from.
4. IPDLType.hasReply has been inlined into MessageType.hasReply.
Differential Revision: https://phabricator.services.mozilla.com/D167836
Make sure that the geolocation utility process restarts for georequests that arrive after a crash. This tests process behavior regardless of whether or not the OS is set to allow geolocation (and in automation, it is not).
Depends on D162944
Differential Revision: https://phabricator.services.mozilla.com/D162945
Adds a new type of utility process that is set up to handle Windows OS objects. We are adding this process type to run Windows geolocation APIs but more services are expected to be included in it. The ILocation APIs have a race condition that would otherwise crash the main process. The ILocation work is in a later patch in the series.
Depends on D155017
Differential Revision: https://phabricator.services.mozilla.com/D155018
Tests for about:memory doesn't know about utility processes. Make sure
to hide the utility process reporter when needed, and count the number
of living processes, also when needed.
Differential Revision: https://phabricator.services.mozilla.com/D167662
Make sure that the geolocation utility process restarts for georequests that arrive after a crash. This tests process behavior regardless of whether or not the OS is set to allow geolocation (and in automation, it is not).
Depends on D162944
Differential Revision: https://phabricator.services.mozilla.com/D162945
Adds a new type of utility process that is set up to handle Windows OS objects. We are adding this process type to run Windows geolocation APIs but more services are expected to be included in it. The ILocation APIs have a race condition that would otherwise crash the main process. The ILocation work is in a later patch in the series.
Depends on D155017
Differential Revision: https://phabricator.services.mozilla.com/D155018
Make sure that the geolocation utility process restarts for georequests that arrive after a crash. This tests process behavior regardless of whether or not the OS is set to allow geolocation (and in automation, it is not).
Depends on D162944
Differential Revision: https://phabricator.services.mozilla.com/D162945
Adds a new type of utility process that is set up to handle Windows OS objects. We are adding this process type to run Windows geolocation APIs but more services are expected to be included in it. The ILocation APIs have a race condition that would otherwise crash the main process. The ILocation work is in a later patch in the series.
Depends on D155017
Differential Revision: https://phabricator.services.mozilla.com/D155018
Make sure that the geolocation utility process restarts for georequests that arrive after a crash. This tests process behavior regardless of whether or not the OS is set to allow geolocation (and in automation, it is not).
Depends on D162944
Differential Revision: https://phabricator.services.mozilla.com/D162945
Adds a new type of utility process that is set up to handle Windows OS objects. We are adding this process type to run Windows geolocation APIs but more services are expected to be included in it. The ILocation APIs have a race condition that would otherwise crash the main process. The ILocation work is in a later patch in the series.
Depends on D155017
Differential Revision: https://phabricator.services.mozilla.com/D155018