mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 05:41:12 +00:00
d47f4a615c
After some investigation, I was able to find a theoretical codepath which could lead to the "missing initial frame browsing context" error: 1. Two iframes are created for the same origin, and begin process switching. 2. The first iframe finishes process switching, but for some reason (e.g. being in shutdown) the call to `LaunchSubprocessResolve` errors. 3. The second callback is called and also calls LaunchSubprocessResolve, which this time returns `true` due to it previously having been called. 4. The BrowserParent is created in the new content process despite `InitInternal()` never having been finished, and therefore the ContentParent never becoming subscribed to the BrowsingContextGroup. To fix this, I made 2 changes: 1. Abort from process switching if the target process which we're going to be creating a BrowserParent in `IsDead()`, and 2. Track the return value from `LaunchSubprocessResolve`, so we return `false` if it is called a second time after a failed content process launch. I'm not confident that this is the cause of the crashes, as I was unable to reproduce the issue. Differential Revision: https://phabricator.services.mozilla.com/D123548 |
||
---|---|---|
.. | ||
crashtests | ||
timeline | ||
BaseHistory.cpp | ||
BaseHistory.h | ||
BrowsingContext.cpp | ||
BrowsingContext.h | ||
BrowsingContextGroup.cpp | ||
BrowsingContextGroup.h | ||
BrowsingContextWebProgress.cpp | ||
BrowsingContextWebProgress.h | ||
CanonicalBrowsingContext.cpp | ||
CanonicalBrowsingContext.h | ||
ChildProcessChannelListener.cpp | ||
ChildProcessChannelListener.h | ||
IHistory.h | ||
LoadContext.cpp | ||
LoadContext.h | ||
moz.build | ||
nsAboutRedirector.cpp | ||
nsAboutRedirector.h | ||
nsCTooltipTextProvider.h | ||
nsDocShell.cpp | ||
nsDocShell.h | ||
nsDocShellEditorData.cpp | ||
nsDocShellEditorData.h | ||
nsDocShellEnumerator.cpp | ||
nsDocShellEnumerator.h | ||
nsDocShellLoadState.cpp | ||
nsDocShellLoadState.h | ||
nsDocShellLoadTypes.h | ||
nsDocShellTelemetryUtils.cpp | ||
nsDocShellTelemetryUtils.h | ||
nsDocShellTreeOwner.cpp | ||
nsDocShellTreeOwner.h | ||
nsDSURIContentListener.cpp | ||
nsDSURIContentListener.h | ||
nsIContentViewer.idl | ||
nsIContentViewerEdit.idl | ||
nsIDocShell.idl | ||
nsIDocShellTreeItem.idl | ||
nsIDocShellTreeOwner.idl | ||
nsIDocumentLoaderFactory.idl | ||
nsILoadContext.idl | ||
nsILoadURIDelegate.idl | ||
nsIPrivacyTransitionObserver.idl | ||
nsIReflowObserver.idl | ||
nsIRefreshURI.idl | ||
nsIScrollObserver.h | ||
nsITooltipListener.idl | ||
nsITooltipTextProvider.idl | ||
nsIURIFixup.idl | ||
nsIWebNavigation.idl | ||
nsIWebNavigationInfo.idl | ||
nsIWebPageDescriptor.idl | ||
nsPingListener.cpp | ||
nsPingListener.h | ||
nsRefreshTimer.cpp | ||
nsRefreshTimer.h | ||
nsWebNavigationInfo.cpp | ||
nsWebNavigationInfo.h | ||
SerializedLoadContext.cpp | ||
SerializedLoadContext.h | ||
SyncedContext.h | ||
SyncedContextInlines.h | ||
URIFixup.jsm | ||
WindowContext.cpp | ||
WindowContext.h |