RESOLVED FIXED 30724
[GTK] Failing test fast/loader/opaque-base-url.html
https://bugs.webkit.org/show_bug.cgi?id=30724
Summary [GTK] Failing test fast/loader/opaque-base-url.html
Alejandro G. Castro
Reported 2009-10-23 11:39:46 PDT
It hits an assertion list this: ASSERTION FAILED: !url.length() || isSchemeFirstChar(url[0]) (WebCore/platform/KURL.cpp:276 void WebCore::checkEncodedString(const WebCore::String&)) The problem is this frame: <iframe frameborder=0 src="data:text/html,<iframe frameborder=0 src='<p>FAILURE</p>' width=10 height=10></iframe>"></iframe> It is checking the internal iframe src as a URL and < is not a valid initial character. It is interesting that it is not when loading but when checking URLs to add to history when going to the next page: #0 0x00007ffff6542261 in checkEncodedString (url=...) at WebCore/platform/KURL.cpp:276 #1 0x00007ffff65440ea in WebCore::KURL::parse (this=0x7fffffffba80, string=...) at WebCore/platform/KURL.cpp:1016 #2 0x00007ffff654661d in KURL (this=0x7fffffffba80, url=...) at WebCore/platform/KURL.cpp:313 #3 0x00007ffff6395ffb in WebCore::HistoryItem::url (this=0x7962c0) at WebCore/history/HistoryItem.cpp:175 #4 0x00007ffff6396032 in WebCore::HistoryItem::isCurrentDocument (this=0x7962c0, doc=0x79e9f0) at WebCore/history/HistoryItem.cpp:483 #5 0x00007ffff6499411 in WebCore::HistoryController::saveDocumentState (this=0x7fffe0026168) at WebCore/loader/HistoryController.cpp:135 #6 0x00007ffff648e851 in WebCore::FrameLoader::closeURL (this=0x7fffe0026020) at WebCore/loader/FrameLoader.cpp:583 #7 0x00007ffff648e8de in WebCore::FrameLoader::detachFromParent (this=0x7fffe0026020) at WebCore/loader/FrameLoader.cpp:3078 #8 0x00007ffff648ea74 in WebCore::FrameLoader::detachChildren (this=0x84fb40) at WebCore/loader/FrameLoader.cpp:2998 #9 0x00007ffff648e91d in WebCore::FrameLoader::detachFromParent (this=0x84fb40) at WebCore/loader/FrameLoader.cpp:3081 #10 0x00007ffff648ea74 in WebCore::FrameLoader::detachChildren (this=0x6bf1f0) at WebCore/loader/FrameLoader.cpp:2998 #11 0x00007ffff648eb96 in WebCore::FrameLoader::setDocumentLoader (this=0x6bf1f0, loader=0x85b400) at WebCore/loader/FrameLoader.cpp:2284 #12 0x00007ffff648f0a7 in WebCore::FrameLoader::transitionToCommitted (this=0x6bf1f0, cachedPage=...) at WebCore/loader/FrameLoader.cpp:2452 #13 0x00007ffff648f8a9 in WebCore::FrameLoader::commitProvisionalLoad (this=0x6bf1f0, prpCachedPage=...) at WebCore/loader/FrameLoader.cpp:2368 #14 0x00007ffff6471caf in WebCore::DocumentLoader::commitIfReady (this=0x85b400) at WebCore/loader/DocumentLoader.cpp:320 #15 0x00007ffff6471d86 in WebCore::DocumentLoader::finishedLoading (this=0x85b400) at WebCore/loader/DocumentLoader.cpp:327 #16 0x00007ffff64876ad in WebCore::FrameLoader::finishedLoading (this=0x6bf1f0) at WebCore/loader/FrameLoader.cpp:2674 #17 0x00007ffff649edf7 in WebCore::MainResourceLoader::didFinishLoading (this=0x852250) at WebCore/loader/MainResourceLoader.cpp:393 #18 0x00007ffff649fa26 in WebCore::MainResourceLoader::continueAfterContentPolicy (this=0x852250, contentPolicy=WebCore::PolicyUse, r=...) at WebCore/loader/MainResourceLoader.cpp:264 #19 0x00007ffff649fb0c in WebCore::MainResourceLoader::continueAfterContentPolicy (this=0x852250, policy=WebCore::PolicyUse) at WebCore/loader/MainResourceLoader.cpp:278 #20 0x00007ffff649fb37 in WebCore::MainResourceLoader::callContinueAfterContentPolicy (argument=0x852250, policy=WebCore::PolicyUse) at WebCore/loader/MainResourceLoader.cpp:270 #21 0x00007ffff64a2fa1 in WebCore::PolicyCallback::call (this=0x7fffffffc200, action=WebCore::PolicyUse) at WebCore/loader/PolicyCallback.cpp:112 #22 0x00007ffff64a3817 in WebCore::PolicyChecker::continueAfterContentPolicy (this=0x6bf200, policy=WebCore::PolicyUse) at WebCore/loader/PolicyChecker.cpp:187 #23 0x00007ffff5fa525b in webkit_web_policy_decision_use (decision=0x6a0980) at WebKit/gtk/webkit/webkitwebpolicydecision.cpp:89 #24 0x00007ffff5f91170 in WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType (this=0x6be2c0, policyFunction=0x7ffff64a37c6 <WebCore::PolicyChecker::continueAfterContentPolicy(WebCore::PolicyAction)>, mimeType=..., resourceRequest=...) at WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:304 #25 0x00007ffff64a3bfc in WebCore::PolicyChecker::checkContentPolicy (this=0x6bf200, MIMEType=..., function=0x7ffff649fb1c <WebCore::MainResourceLoader::callContinueAfterContentPolicy(void*, WebCore::PolicyAction)>, argument=0x852250) at WebCore/loader/PolicyChecker.cpp:104 #26 0x00007ffff649ff88 in WebCore::MainResourceLoader::didReceiveResponse (this=0x852250, r=...) at WebCore/loader/MainResourceLoader.cpp:341 #27 0x00007ffff649e554 in WebCore::MainResourceLoader::handleEmptyLoad (this=0x852250, url=..., forURLScheme=false) at WebCore/loader/MainResourceLoader.cpp:426 #28 0x00007ffff649e9cc in WebCore::MainResourceLoader::loadNow (this=0x852250, r=...) at WebCore/loader/MainResourceLoader.cpp:487 #29 0x00007ffff649ecb0 in WebCore::MainResourceLoader::load (this=0x852250, r=..., substituteData=...) at WebCore/loader/MainResourceLoader.cpp:513 #30 0x00007ffff64705e3 in WebCore::DocumentLoader::startLoadingMainResource (this=0x85b400, identifier=15) at WebCore/loader/DocumentLoader.cpp:790 #31 0x00007ffff64865d3 in WebCore::FrameLoader::continueLoadAfterWillSubmitForm (this=0x6bf1f0) at WebCore/loader/FrameLoader.cpp:2954 #32 0x00007ffff64901f7 in WebCore::FrameLoader::continueLoadAfterNavigationPolicy (this=0x6bf1f0, formState=..., shouldContinue=true) at WebCore/loader/FrameLoader.cpp:3450 #33 0x00007ffff6490246 in WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy (argument=0x6bf1f0, request=..., formState=..., shouldContinue=true) at WebCore/loader/FrameLoader.cpp:3381 #34 0x00007ffff64a300d in WebCore::PolicyCallback::call (this=0x7fffffffcb90, shouldContinue=true) at WebCore/loader/PolicyCallback.cpp:101 #35 0x00007ffff64a3aa7 in WebCore::PolicyChecker::continueAfterNavigationPolicy (this=0x6bf200, policy=WebCore::PolicyUse) at WebCore/loader/PolicyChecker.cpp:160 #36 0x00007ffff5fa525b in webkit_web_policy_decision_use (decision=0x7260c0) at WebKit/gtk/webkit/webkitwebpolicydecision.cpp:89 #37 0x00007ffff5f90cff in WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction (this=0x6be2c0, policyFunction=0x7ffff64a390c <WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction)>, action=..., resourceRequest=...) at WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:419 #38 0x00007ffff64a4000 in WebCore::PolicyChecker::checkNavigationPolicy (this=0x6bf200, request=..., loader=0x85b400, formState=..., function=0x7ffff6490202 <WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*, WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, bool)>, argument=0x6bf1f0) at WebCore/loader/PolicyChecker.cpp:88 #39 0x00007ffff6490692 in WebCore::FrameLoader::loadWithDocumentLoader (this=0x6bf1f0, loader=0x85b400, type=WebCore::FrameLoadTypeStandard, prpFormState=...) at WebCore/loader/FrameLoader.cpp:2016 #40 0x00007ffff6490c3b in WebCore::FrameLoader::load (this=0x6bf1f0, newDocumentLoader=0x85b400) at WebCore/loader/FrameLoader.cpp:1970 #41 0x00007ffff6490dcc in WebCore::FrameLoader::load (this=0x6bf1f0, request=..., substituteData=..., lockHistory=false) at WebCore/loader/FrameLoader.cpp:1911 #42 0x00007ffff6490e27 in WebCore::FrameLoader::load (this=0x6bf1f0, request=..., lockHistory=false) at WebCore/loader/FrameLoader.cpp:1898 #43 0x00007ffff5fa0b58 in webkit_web_frame_load_uri (frame=0x6b18c0, uri=0x41707c "about:blank") at WebKit/gtk/webkit/webkitwebframe.cpp:514 #44 0x00007ffff5faeafc in webkit_web_view_load_uri (webView=0x6ae070, uri=0x41707c "about:blank") at WebKit/gtk/webkit/webkitwebview.cpp:2973 #45 0x00007ffff5faed62 in webkit_web_view_open (webView=0x6ae070, uri=0x41707c "about:blank") at WebKit/gtk/webkit/webkitwebview.cpp:2933 #46 0x000000000041067b in runTest (testPathOrURL=...) at WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp:497 #47 0x0000000000410ac7 in main (argc=2, argv=0x7fffffffe038) at WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp:812
Attachments
Test showing the problem, not just in gtk+ DRT (258 bytes, text/html)
2009-10-26 13:42 PDT, Alejandro G. Castro
no flags
The test (258 bytes, text/html)
2009-11-20 10:41 PST, Alejandro G. Castro
no flags
Alejandro G. Castro
Comment 1 2009-10-23 11:59:04 PDT
I forgot to mention it fails in gtk+, gtk+ DRT is loading about:blank after the tests, and when loading that the src of that iframe is checked with that assertion.
Alejandro G. Castro
Comment 2 2009-10-26 13:42:17 PDT
Created attachment 41887 [details] Test showing the problem, not just in gtk+ DRT This is a test that tries to reproduce the error in other platforms, not just gtk+, trying to do a similar action done in the gtk+ DRT. Basically this kind of opaque urls are causing problems when the state is saved in the HistoryController, it is checked if that item is in current document and that tries to create a URL using an opaque URL that hits the checkEncodedString assertion about the first character in an url. I guess even this being an invalid URL (we should remove that from the opaque test then) we should handle the situation without reaching the assertion. Can someone check the test with other platforms and see if the problem is there? I guess the patch should control the current document condition in case of this kind of opaque URLs, not sure if just avoiding saving or setting as current because there is not URL.
Alejandro G. Castro
Comment 3 2009-11-20 10:41:14 PST
Created attachment 43595 [details] The test It was incorrectly uploaded the first time
Mikhail Pozdnyakov
Comment 4 2012-05-05 03:58:02 PDT
The same problem with fast/loader/opaque-base-url.html is on EFL port. STDERR: ASSERTION FAILED: url.isEmpty() || isSchemeFirstChar(url[0]) STDERR: /usr/share/WebKit/Source/WebCore/platform/KURL.cpp(315) : void WebCore::checkEncodedString(const WTF::String&) STDERR: 1 0xb38bb908 STDERR: 2 0xb38be456 WebCore::KURL::parse(WTF::String const&) STDERR: 3 0xb38bb9d9 WebCore::KURL::KURL(WebCore::ParsedURLStringTag, WTF::String const&) STDERR: 4 0x80a063f DumpRenderTreeChrome::onWillSendRequest(void*, _Evas_Object*, void*) STDERR: 5 0xb753dfec evas_object_smart_callback_call STDERR: 6 0xb156529c STDERR: 7 0xb3791d1a WebCore::ResourceLoadNotifier::dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceRequest&, WebCore::ResourceResponse const&) STDERR: 8 0xb3791956 WebCore::ResourceLoadNotifier::willSendRequest(WebCore::ResourceLoader*, WebCore::ResourceRequest&, WebCore::ResourceResponse const&) STDERR: 9 0xb379859e WebCore::ResourceLoader::willSendRequest(WebCore::ResourceRequest&, WebCore::ResourceResponse const&) STDERR: 10 0xb3786752 WebCore::MainResourceLoader::willSendRequest(WebCore::ResourceRequest&, WebCore::ResourceResponse const&) STDERR: 11 0xb3787ed3 WebCore::MainResourceLoader::loadNow(WebCore::ResourceRequest&) STDERR: 12 0xb378836b WebCore::MainResourceLoader::load(WebCore::ResourceRequest const&, WebCore::SubstituteData const&) STDERR: 13 0xb3757382 WebCore::DocumentLoader::startLoadingMainResource() STDERR: 14 0xb3773bb2 WebCore::FrameLoader::continueLoadAfterWillSubmitForm() STDERR: 15 0xb37763f5 WebCore::FrameLoader::continueLoadAfterNavigationPolicy(WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, bool) STDERR: 16 0xb3775bda WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*, WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, bool) STDERR: 17 0xb378ad63 WebCore::PolicyCallback::call(bool) STDERR: 18 0xb378bb09 WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction) STDERR: 19 0xb1564a63
Zan Dobersek
Comment 5 2012-07-15 10:43:35 PDT
The test no longer crashes so the expectation was removed in http://trac.webkit.org/changeset/118474. Closing the bug.
Note You need to log in before you can comment on or make changes to this bug.