Test failure in dom/base/test/test_window_close.html when e10s-multi is enabled
Categories
(GeckoView :: Sandboxing, defect, P1)
Tracking
(firefox83 fixed)
Tracking | Status | |
---|---|---|
firefox83 | --- | fixed |
People
(Reporter: bugzilla, Assigned: bugzilla)
References
Details
(Whiteboard: [geckoview:m83])
Attachments
(2 files)
The symptom was that the BroadcastChannel
message being sent to the parent was being lost due to content process termination.
I had a chat with Nika and learned that ContentParent::MarkAsDead
only marks the content process as no longer eligible for new content being allocated to it, but the web content itself may still be active (and doing things like flushing BroadcastChannel
messages).
OTOH, our GV implementation assumes that MarkAsDead
means that the content process is actually dead, so it goes off and unbinds at a moment that, as it turns out, is premature.
Commenting out the call to the Java MarkAsDead
"fixes" the test failure. The purpose of this bug is to update GV's MarkAsDead
with my corrected understanding of what its semantics should be.
Assignee | ||
Comment 1•4 years ago
|
||
Since the semantics of ContentParent::MarkAsDead
are significantly different
from GeckoProcessManager::MarkAsDead
, let's rename the latter to better
reflect what it actually does.
Assignee | ||
Comment 2•4 years ago
|
||
Because GeckoView content processes are hosted inside Android Service
s, and because
there is a hard limit on those services, we cannot assume that it is safe to launch
a new content process while another one is still in the process of shutting down.
We add a GeckoView-specific counter that tracks how many ContentParent
objects
still exist but are unavailable for receiving new content. We increment that
counter the first time that MarkAsDead
is called on a particular ContentParent
,
and decrement that counter when the ContentParent
is finally being closed.
During used process allocation we charge that count against the maximum number of
available processes so that the selection algorithm does not attempt to start
a new process when none are actually available.
We also move the code that tells the Java side of Android that we're shutting
down to a more reasonable location.
Depends on D92649
Updated•4 years ago
|
Pushed by aklotz@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/817f3d254144 Part 1 - Rename GeckoProcessManager::MarkAsDead to GeckoProcessManager::ShutdownProcess; r=geckoview-reviewers,necko-reviewers,agi,dragana https://hg.mozilla.org/integration/autoland/rev/d7b7b9133f0b Part 2 - On Android, do not mark content processes as dead in ContentParent::NotifyTabDestroying; r=nika
Comment 4•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/817f3d254144
https://hg.mozilla.org/mozilla-central/rev/d7b7b9133f0b
Comment 5•2 years ago
|
||
Moving some e10s bugs to the new GeckoView::Sandboxing component.
Description
•