New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 652322 link

Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 2
Type: Bug



Sign in to add a comment

Extension subframes will be killed if the extension is unloaded

Project Member Reported by rdevlin....@chromium.org, Oct 3 2016

Issue description

We kill frames with RDH_ILLEGAL_ORIGIN if the frame makes a network request and has the id of an extension that isn't enabled (either terminated, disabled, or not installed). This means that any subframes that point to extension resources for unloaded extensions will be killed if they make further network requests.

Ideally, we would just remove any frames corresponding to an extension.  We already close all the tabs, and if the extension is no longer enabled, we should reduce its surface as much as possible.  How to do this might be a little tricky - it would probably involve just iterating over all frames and removing any that match.
 
creis@, is there a chrome/-accessible way to remove a specific RFH?  All that jumped out at me was FrameTree::RemoveFrame(), but that's not public.

Comment 2 by creis@chromium.org, Mar 23 2017

Cc: nick@chromium.org
Components: Internals>Sandbox>SiteIsolation
Labels: M-59
This is back on our radar from issue 613335.  The RDH_ILLEGAL_ORIGIN kill is now a top crasher, though we think most of the cases might be for content scripts rather than subframes.

Still, the subframe case is real, and something we know how to repro.  Moreover, it's a bit worse now that --isolate-extensions has launched, because the extension subframes are running in OOPIFs inside an extension process.  That means the extension process sticks around *after* uninstalling the extension.  (And to the degree that unblessed extension pages are gone, it might still have some of the privileges it had when installed?  Or maybe that would get it killed another way?)

Let's revisit this and find a way to unload those iframes.  For comment 1, there's no good way to remove a frame from the browser process, but we could navigate it to an error page from the browser process.  That won't be synchronous with the uninstallation of the extension, but I think it's probably sufficient given the other changes we're proposing on issue 613335.  Note that we'll want to make sure the error page isn't in the extension process-- ideally it'd be in the parent process.

Devlin, would you or someone from extensions be able to help with this part while I put together a fix on issue 613335?  Feel free to post here if there are more questions about how to do it.

Sign in to add a comment