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

Issue 591649 link

Starred by 0 users

Issue metadata

Status: Duplicate
Merged: issue 531378
Owner:
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression: App renderer killed for XHR after uninstall

Reported by dmascare...@etouch.net, Mar 3 2016

Issue description

Chrome Version: 50.0.2661.11 (Official Build) d99fa8d200178bce07b02a15d79512e7236088ee-refs/branch-heads/2661@{#51} 32/64-bit.
OS: All (Win 7 Aero enabled)

Test url:
https://chrome.google.com/webstore/detail/fishing-joy/mlonhgnjdlnjgalpdigmbpfpielpadmc/related?utm_source=chrome-app-launcher-info-dialog

What steps will reproduce the problem?
1. Launch chrome and add the app using above url.
2. Launch the app and then go to 'Chrome://extensions' , disable the extension of the same app.
3. Click on the 'Stay on the page' button of 'Confirm navigation' dialogue box and then Click on 'Start' button of the app.

Actual: Tab crashes.
Expected: Tab should not crash.

This is regression issue, broke in 'M 46' and below is narrow bisect:
https://chromium.googlesource.com/chromium/src/+log/fdff335c897731c036dbe4d598453bf3e2ebd617..3710b238717b14967922263070cac76257a55ac5?pretty=fuller&n=100

Suspecting: r343778 ?

Good build:46.0.2486.0
Bad build:46.0.2487.3

Could you please help to reassign if your change is not the cause for this change?

Note: Crash id is not generated.

 
Actual_crash.mp4
1.2 MB Download
Cc: ranjitkan@chromium.org nyerramilli@chromium.org
Components: Platform>Extensions Platform>Apps
Labels: Stability-Crash M-48 hasTestcase hasbisect Type-Bug-Regression Pri-1 OS-Linux OS-Mac OS-Windows
Labels: -M-48 M-51

Comment 3 by creis@chromium.org, Apr 5 2016

Cc: nick@chromium.org
https://codereview.chromium.org/1270663002 is certainly a possibility for this.  I haven't had a chance to look yet.

CC'ing Nick as FYI, since he's been looking at related renderer kills.  (This one is RDH_ILLEGAL_ORIGIN, and Nick is looking at RFMF_GET_COOKIES_BAD_ORIGIN.)  I'll probably just need to install and figure why the renderer is getting killed.

Comment 4 by creis@chromium.org, Apr 12 2016

Cc: jln@chromium.org creis@chromium.org
Owner: rdevlin....@chromium.org
Summary: Regression: App renderer killed for XHR after uninstall (was: Regression: Tab crash is observed on 'Fishing Joy' app .)
Devlin, this turns out to be a case where uninstalling an app might not close the tab if the tab has a beforeunload handler.  As a result, we kill the renderer if it tries to do an XHR after uninstall, due to the check we added in  issue 513502 .

I've attached a minimal repro case.
1) Unzip and install the attached beforeunload-xhr-app.zip as an unpacked extension, via chrome://extensions.
2) Launch its index.html via chrome://apps.
3) On chrome://extensions in a separate tab, disable the app.
4) Click on "Stay" when the beforeunload dialog appears.
5) Click the XHR button.
The renderer process is killed.

I think we want to enforce that these tabs get closed on uninstall, right?  There's a WebContentsDelegate::ShouldSuppressDialogs that we force to return true to bypass beforeunload when uninstalling an extension/app.  Would you know how to write that code and test?  (It's been a while since I've touched the extension code.)

If not, feel free to assign back to me or another owner.
beforeunload-xhr-app.zip
1.3 KB Download

Comment 5 by nick@chromium.org, May 4 2016

We understand now that the RFMF_GET_COOKIES_BAD_ORIGIN kill is due to the SecurityStateMap not having an entry for the process in question (we suspect, but have not confirmed, that it's a process shutdown race). The RDH_ILLEGAL_OPERATION check also has a similar 'return false' codepath.

I think the lesson here is to be sure we understand exactly *why* policy->CanCommitURL is returning false, as the answer could surprise you.

Comment 6 by creis@chromium.org, May 4 2016

Comment 5: Thanks.  That will likely affect this case as well, but we also have a known set of repro steps for the kill without the shutdown race.  Hopefully we can fix the shutdown race independently of this bug?

Devlin: Do you have any ideas on comment 4, or who might be able to help?  We just need a WebContentsDelegate to return true from ShouldSuppressDialogs if a tab has an extension page that is being disabled/uninstalled.
To me this looks like a dupe of  issue 531378 , which I investigated and never got around to actually fixing (but has a bit more context and handy code links in the bug).

Good to merge into that one?

Comment 8 by creis@chromium.org, May 4 2016

Sure.  I'd forgotten about that one when writing up comment 4.  Sounds like there's more than just suppressing the dialog involved in fixing it properly.
Mergedinto: 531378
Status: Duplicate (was: Assigned)

Sign in to add a comment