Bug 30724 - [GTK] Failing test fast/loader/opaque-base-url.html
Summary: [GTK] Failing test fast/loader/opaque-base-url.html
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 30788
Blocks:
  Show dependency treegraph
 
Reported: 2009-10-23 11:39 PDT by Alejandro G. Castro
Modified: 2012-07-15 10:43 PDT (History)
3 users (show)

See Also:


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 Details
The test (258 bytes, text/html)
2009-11-20 10:41 PST, Alejandro G. Castro
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alejandro G. Castro 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
Comment 1 Alejandro G. Castro 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.
Comment 2 Alejandro G. Castro 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.
Comment 3 Alejandro G. Castro 2009-11-20 10:41:14 PST
Created attachment 43595 [details]
The test

It was incorrectly uploaded the first time
Comment 4 Mikhail Pozdnyakov 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
Comment 5 Zan Dobersek 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.