Closed Bug 1589054 Opened 5 years ago Closed 5 years ago

Crash in [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process]

Categories

(Core :: DOM: Content Processes, defect, P2)

71 Branch
Unspecified
Windows 10
defect

Tracking

()

RESOLVED FIXED
mozilla72
Fission Milestone M4
Tracking Status
firefox-esr60 --- unaffected
firefox-esr68 --- unaffected
firefox69 --- unaffected
firefox70 --- unaffected
firefox71 --- wontfix
firefox72 --- fixed

People

(Reporter: calixte, Assigned: nika)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: crash, regression)

Crash Data

Attachments

(4 files)

This bug is for crash report bp-324f1cb8-91ed-4374-905d-fcafa0191016.

Top 10 frames of crashing thread:

0 xul.dll void mozilla::dom::ContentChild::ProcessingError dom/ipc/ContentChild.cpp:2440
1 xul.dll mozilla::ipc::IPCResult::Fail ipc/glue/ProtocolUtils.cpp:64
2 xul.dll mozilla::dom::WindowGlobalChild::RecvMakeFrameRemote dom/ipc/WindowGlobalChild.cpp:316
3 xul.dll mozilla::dom::PWindowGlobalChild::OnMessageReceived ipc/ipdl/PWindowGlobalChild.cpp:451
4 xul.dll mozilla::dom::PContentChild::OnMessageReceived ipc/ipdl/PContentChild.cpp:7838
5 xul.dll mozilla::ipc::MessageChannel::DispatchMessage ipc/glue/MessageChannel.cpp:2111
6 xul.dll mozilla::SchedulerGroup::Runnable::Run xpcom/threads/SchedulerGroup.cpp:295
7 xul.dll nsThread::ProcessNextEvent xpcom/threads/nsThread.cpp:1225
8 xul.dll NS_ProcessNextEvent xpcom/threads/nsThreadUtils.cpp:486
9 xul.dll mozilla::ipc::MessagePump::Run ipc/glue/MessagePump.cpp:88

There are 5 crashes (from 5 installations) in nightly 71 with buildid 20191015213743. In analyzing the backtrace, the regression may have been introduced by patch [1] to fix bug 1576714.

[1] https://hg.mozilla.org/mozilla-central/rev?node=7935fa1ac774

Flags: needinfo?(nika)

This one should be relatively straightforward to fix, I'll put up a patch for it soon.

Assignee: nobody → nika
Flags: needinfo?(nika)
Crash Signature: [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] → [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] [@ mozilla::dom::ContentChild::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*)]
Attachment #9101632 - Attachment description: Bug 1589054 - Cleanly kill BrowserBridgeChild if process switch fails, → Bug 1589054 - Part 1: Cleanly kill BrowserBridgeChild if process switch fails,

If these are fired too early, a nested event loop can be spun before the new
nsFrameLoader has been set up. Messages can be received over the
BrowserBridgeChild actor during this time when no nsFrameLoader is set, causing
crashes.

This is necessary as the nsFrameLoader may have been swapped, due to a process
switch, before the teardown of the old nsDocShell is complete. In this case, the
nsDocShell is still present on the BrowsingContext despite a nsFrameLoader for a
remote frame having been set up.

This will also be important for future changes such as cross-process bfcache. It
may be possible to change the calls to nsFrameLoader::GetDocShell() back to
mDocShell accesses in the future.

Pushed by nlayzell@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/03bc24aa3a2c
Part 1: Cleanly kill BrowserBridgeChild if process switch fails, r=farre
https://hg.mozilla.org/integration/autoland/rev/91e4d5c6422a
Part 2: Delay pagehide events until new nsFrameLoader is set up, r=farre
https://hg.mozilla.org/integration/autoland/rev/1a43032819e1
Part 3: Store mDocShell directly on nsFrameLoader, r=farre

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&group_state=expanded&resultStatus=pending%2Crunning%2Ctestfailed%2Cbusted%2Cexception&revision=1a43032819e160acfec3ccefc3fe9aa0fbc265b1&selectedJob=272202396

Failures log: https://treeherder.mozilla.org/logviewer.html#?job_id=272200286&repo=autoland

Backout link: https://hg.mozilla.org/integration/autoland/rev/7537be6fe6bf885aa89388881e781648ca8f89f0

[task 2019-10-21T16:21:49.603Z] 16:21:49 INFO - TEST-PASS | dom/ipc/tests/browser_crash_oopiframe.js | oop frame browsing context id expected. -
[task 2019-10-21T16:21:49.603Z] 16:21:49 INFO - Console message: [JavaScript Error: "remote browser crashed while on about:blank
[task 2019-10-21T16:21:49.603Z] 16:21:49 INFO - " {file: "chrome://mochikit/content/mochitest-e10s-utils.js" line: 10}]
[task 2019-10-21T16:21:49.603Z] 16:21:49 INFO - e10s_init/<@chrome://mochikit/content/mochitest-e10s-utils.js:10:10
[task 2019-10-21T16:21:49.603Z] 16:21:49 INFO - EventListener.handleEvente10s_init@chrome://mochikit/content/mochitest-e10s-utils.js:6:10
[task 2019-10-21T16:21:49.604Z] 16:21:49 INFO - testInit@chrome://mochikit/content/browser-test.js:130:5
[task 2019-10-21T16:21:49.604Z] 16:21:49 INFO - setTimeout handler
@chrome://mochikit/content/browser-test.js:40:11
[task 2019-10-21T16:21:49.605Z] 16:21:49 INFO - loadChromeScripts@jar:file:///tmp/tmpiw4rHp.mozrunner/extensions/mochikit@mozilla.org.xpi!/api.js:21:25
[task 2019-10-21T16:21:49.606Z] 16:21:49 INFO - loadMochitest@jar:file:///tmp/tmpiw4rHp.mozrunner/extensions/mochikit@mozilla.org.xpi!/api.js:143:20
[task 2019-10-21T16:21:49.606Z] 16:21:49 INFO - @tests/mochitest/runtests.py:1794:5
[task 2019-10-21T16:21:49.606Z] 16:21:49 INFO - @tests/mochitest/runtests.py:1795:8
[task 2019-10-21T16:21:49.607Z] 16:21:49 INFO - evaluate.sandbox/promise<@chrome://marionette/content/evaluate.js:138:10
[task 2019-10-21T16:21:49.607Z] 16:21:49 INFO - evaluate.sandbox@chrome://marionette/content/evaluate.js:114:17
[task 2019-10-21T16:21:49.608Z] 16:21:49 INFO - GeckoDriver.prototype.execute_@chrome://marionette/content/driver.js:1070:28
[task 2019-10-21T16:21:49.608Z] 16:21:49 INFO - asyncGeckoDriver.prototype.executeScript@chrome://marionette/content/driver.js:945:30
[task 2019-10-21T16:21:49.608Z] 16:21:49 INFO - despatch@chrome://marionette/content/server.js:305:40
[task 2019-10-21T16:21:49.609Z] 16:21:49 INFO - execute@chrome://marionette/content/server.js:275:16
[task 2019-10-21T16:21:49.609Z] 16:21:49 INFO - onPacket/<@chrome://marionette/content/server.js:248:20
[task 2019-10-21T16:21:49.609Z] 16:21:49 INFO - onPacket@chrome://marionette/content/server.js:249:9
[task 2019-10-21T16:21:49.610Z] 16:21:49 INFO - _onJSONObjectReady/<@chrome://marionette/content/transport.js:501:20
[task 2019-10-21T16:21:49.610Z] 16:21:49 INFO -
[task 2019-10-21T16:21:49.610Z] 16:21:49 INFO - Console message: [JavaScript Error: "NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIObserverService.removeObserver]" {file: "resource://testing-common/BrowserTestUtils.jsm" line: 1701}]
[task 2019-10-21T16:21:49.610Z] 16:21:49 INFO - Buffered messages finished
[task 2019-10-21T16:21:49.610Z] 16:21:49 INFO - TEST-UNEXPECTED-FAIL | dom/ipc/tests/browser_crash_oopiframe.js | Uncaught exception - undefined - timed out after 50 tries.
[task 2019-10-21T16:21:49.610Z] 16:21:49 INFO - Not taking screenshot here: see the one that was previously logged
[task 2019-10-21T16:21:49.610Z] 16:21:49 INFO - TEST-UNEXPECTED-FAIL | dom/ipc/tests/browser_crash_oopiframe.js | A promise chain failed to handle a rejection: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIObserverService.removeObserver] - stack: crashFrame/crashCleanupPromise</observer/<@resource://testing-common/BrowserTestUtils.jsm:1701:24
[task 2019-10-21T16:21:49.611Z] 16:21:49 INFO - promise callback
observer@resource://testing-common/BrowserTestUtils.jsm:1700:24
[task 2019-10-21T16:21:49.611Z] 16:21:49 INFO - Rejection date: Mon Oct 21 2019 16:21:43 GMT+0000 (Coordinated Universal Time) - false == true - JS frame :: resource://testing-common/PromiseTestUtils.jsm :: assertNoUncaughtRejections :: line 265
[task 2019-10-21T16:21:49.612Z] 16:21:49 INFO - Stack trace:
[task 2019-10-21T16:21:49.612Z] 16:21:49 INFO - resource://testing-common/PromiseTestUtils.jsm:assertNoUncaughtRejections:265
[task 2019-10-21T16:21:49.613Z] 16:21:49 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1098
[task 2019-10-21T16:21:49.613Z] 16:21:49 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1102
[task 2019-10-21T16:21:49.614Z] 16:21:49 INFO - chrome://mochikit/content/browser-test.js:nextTest/<:930
[task 2019-10-21T16:21:49.614Z] 16:21:49 INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:805
[task 2019-10-21T16:21:49.614Z] 16:21:49 INFO - Leaving test bound
[task 2019-10-21T16:21:49.614Z] 16:21:49 INFO - GECKO(8459) | MEMORY STAT | vsize 2976MB | residentFast 341MB | heapAllocated 117MB
[task 2019-10-21T16:21:49.614Z] 16:21:49 INFO - TEST-OK | dom/ipc/tests/browser_crash_oopiframe.js | took 7295ms

Crash Signature: [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] [@ mozilla::dom::ContentChild::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*)] → [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] [@ mozilla::dom::ContentChild::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*)]
Flags: needinfo?(nika)
Crash Signature: [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] [@ mozilla::dom::ContentChild::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*)] → [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] [@ mozilla::dom::ContentChild::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*)] [@ IPCError-content | RecvMakeFrameRemote Wrong actor]

Some crashes in the 10-21 72 build, so marking that as affected.

Crash Signature: [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] [@ mozilla::dom::ContentChild::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*)] [@ IPCError-content | RecvMakeFrameRemote Wrong actor] → [@ IPCError-content | RecvMakeFrameRemote No embedder element in this process] [@ mozilla::dom::ContentChild::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*)] [@ IPCError-content | RecvMakeFrameRemote Wrong actor]
Pushed by nlayzell@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c5da844195a2
Part 1: Cleanly kill BrowserBridgeChild if process switch fails, r=farre
https://hg.mozilla.org/integration/autoland/rev/b1340469162d
Part 2: Delay pagehide events until new nsFrameLoader is set up, r=farre
https://hg.mozilla.org/integration/autoland/rev/df7f1b18c16b
Part 3: Store mDocShell directly on nsFrameLoader, r=farre
https://hg.mozilla.org/integration/autoland/rev/26994428212d
Part 4: Run DisplayLoadError in a script runner, r=farre
Status: NEW → ASSIGNED
Flags: needinfo?(nika)
Priority: -- → P2
Fission Milestone: --- → M4

No crashes on 71 beta so no need for an uplift, wontfix 71.

Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.