Summary: | http/tests/eventsource/workers/eventsource-simple.html is a flaky crash because of eventsource-status-error-iframe-crash.html | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Philippe Normand <pnormand> | ||||
Component: | Page Loading | Assignee: | Alexey Proskuryakov <ap> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | adam.bergkvist, ap, gustavo, japhet, lforschler, mario, mrobinson, webkit.review.bot | ||||
Priority: | P2 | ||||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Attachments: |
|
Description
Philippe Normand
2011-05-26 06:58:48 PDT
*** Bug 61937 has been marked as a duplicate of this bug. *** The ASSERT also exists in Mac: http://trac.webkit.org/browser/trunk/Source/WebKit/mac/WebView/WebDataSource.mm#L94 I think that's probably where it came from to our own WebKitWebDataSource. Maybe the place where we are destroying the datasource is bad (or simply different) compared to Mac, though? (In reply to comment #2) > The ASSERT also exists in Mac: > > http://trac.webkit.org/browser/trunk/Source/WebKit/mac/WebView/WebDataSource.mm#L94 > > I think that's probably where it came from to our own WebKitWebDataSource. Maybe the place where we are destroying the datasource is bad (or simply different) compared to Mac, though? Could it be that Mac lets the main loop spin before actually destroying the wrapper object? This crash also frequently occurs on Mac. It's the previous test that crashes, in fact. run-webkit-tests --repeat 10 http/tests/eventsource/eventsource-status-error-iframe-crash.html Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 com.apple.WebKit 0x00000001023d1262 -[WebDataSourcePrivate dealloc] + 274 (WebDataSource.mm:94) 1 com.apple.WebKit 0x00000001023d2b44 -[WebDataSource dealloc] + 132 (WebDataSource.mm:409) 2 com.apple.CoreFoundation 0x00007fff88c11800 CFRelease + 176 3 com.apple.WebKit 0x00000001023d9cd3 WebDocumentLoaderMac::releaseDataSource() + 147 (WebDocumentLoaderMac.mm:135) 4 com.apple.WebKit 0x00000001023d9f88 WebDocumentLoaderMac::decreaseLoadCount(unsigned long) + 472 (WebDocumentLoaderMac.mm:116) ... 38 com.apple.WebCore 0x0000000102e7f40f WebCore::DocumentThreadableLoader::cancel() + 95 (DocumentThreadableLoader.cpp:146) 39 com.apple.WebCore 0x000000010303c4d5 WebCore::EventSource::didReceiveResponse(unsigned long, WebCore::ResourceResponse const&) + 1429 (EventSource.cpp:221) *** Bug 62554 has been marked as a duplicate of this bug. *** The problem here is that we dispatch an error event when canceling EventSource loads in a frame that's being detached. This is incorrect per the spec, and in this particular case, it makes us recurse into Frame's willDetach methods, causing some major brokenness. Patch forthcoming. Created attachment 105819 [details]
proposed fix
This changes the logic and behavior quite a bit, but I think that it's becoming simpler.
Comment on attachment 105819 [details]
proposed fix
This patch makes me smile.
Comment on attachment 105819 [details] proposed fix Clearing flags on attachment: 105819 Committed r94242: <http://trac.webkit.org/changeset/94242> All reviewed patches have been landed. Closing bug. Philippe were any tests skipped for this issue? If so we should unskip them. (In reply to comment #11) > Philippe were any tests skipped for this issue? If so we should unskip them. Right, I forgot, thanks for the reminder! http://trac.webkit.org/changeset/94576 (In reply to comment #12) > (In reply to comment #11) > > Philippe were any tests skipped for this issue? If so we should unskip them. > > Right, I forgot, thanks for the reminder! > > http://trac.webkit.org/changeset/94576 There where still some skipped from bug https://bugs.webkit.org/show_bug.cgi?id=61937. I've unskipped them now. http://trac.webkit.org/changeset/99365 |