Issue metadata
Sign in to add a comment
|
Regression: App renderer killed for XHR after uninstall
Reported by
dmascare...@etouch.net,
Mar 3 2016
|
||||||||||||||||||||||||
Issue descriptionChrome 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.
,
Mar 3 2016
,
Apr 5 2016
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.
,
Apr 12 2016
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.
,
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.
,
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.
,
May 4 2016
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?
,
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.
,
May 5 2016
|
|||||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||||
Comment 1 by dmascare...@etouch.net
, Mar 3 2016Components: Platform>Extensions Platform>Apps
Labels: Stability-Crash M-48 hasTestcase hasbisect Type-Bug-Regression Pri-1 OS-Linux OS-Mac OS-Windows