Bug 119751 - ASSERTION FAILED: url.isEmpty() || isSchemeFirstChar(url[0]) in WebCore::checkEncodedString
Summary: ASSERTION FAILED: url.isEmpty() || isSchemeFirstChar(url[0]) in WebCore::chec...
Status: RESOLVED WORKSFORME
Alias: None
Product: WebKit
Classification: Unclassified
Component: DOM (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks: 116980
  Show dependency treegraph
 
Reported: 2013-08-13 08:40 PDT by Renata Hodovan
Modified: 2015-01-29 06:36 PST (History)
4 users (show)

See Also:


Attachments
Test case (102 bytes, text/html)
2013-08-13 08:41 PDT, Renata Hodovan
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Renata Hodovan 2013-08-13 08:40:36 PDT
The following test fails if it's loaded from the network (at least from localhost):

<html>
    <object data="./pix/line.gif"></object>
    <base href="mailto:nosuch@webkit.org">
</html>



The backtrace:


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff56f5744 in WTFCrash () at /home/reni/Data/REPOS/webkit_sec/Source/WTF/wtf/Assertions.cpp:342
342	    *(int *)(uintptr_t)0xbbadbeef = 0;
(gdb) bt
#0  0x00007ffff56f5744 in WTFCrash () at /home/reni/Data/REPOS/webkit_sec/Source/WTF/wtf/Assertions.cpp:342
#1  0x00007ffff4758489 in WebCore::checkEncodedString (url=...) at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/KURL.cpp:307
#2  0x00007ffff475b306 in WebCore::KURL::parse (this=0x7fffffffc3b0, string=...) at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/KURL.cpp:982
#3  0x00007ffff4758578 in WebCore::KURL::KURL (this=0x7fffffffc3b0, url=...) at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/KURL.cpp:333
#4  0x00007ffff45da5f0 in WebCore::NavigationScheduler::scheduleLocationChange (this=0x8ecb98, securityOrigin=0x781e90, url=..., referrer=..., 
    lockHistory=true, lockBackForwardList=true) at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/NavigationScheduler.cpp:352
#5  0x00007ffff45e55df in WebCore::SubframeLoader::loadOrRedirectSubframe (this=0x7e6080, ownerElement=0x829520, url=..., frameName=..., lockHistory=true, 
    lockBackForwardList=true) at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/SubframeLoader.cpp:340
#6  0x00007ffff45e4eff in WebCore::SubframeLoader::requestObject (this=0x7e6080, ownerElement=0x829520, url=..., frameName=..., mimeType=..., paramNames=..., 
    paramValues=...) at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/SubframeLoader.cpp:243
#7  0x00007ffff43b94b7 in WebCore::HTMLObjectElement::updateWidget (this=0x829520, pluginCreationOption=WebCore::CreateOnlyNonNetscapePlugins)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/html/HTMLObjectElement.cpp:322
#8  0x00007ffff43c062d in WebCore::HTMLPlugInImageElement::updateWidgetIfNecessary (this=0x829520)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/html/HTMLPlugInImageElement.cpp:274
#9  0x00007ffff43c08ef in WebCore::HTMLPlugInImageElement::updateWidgetCallback (n=0x829520)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/html/HTMLPlugInImageElement.cpp:331
#10 0x00007ffff419f064 in WebCore::ContainerNode::dispatchPostAttachCallbacks () at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/dom/ContainerNode.cpp:772
#11 0x00007ffff419ed5b in WebCore::ContainerNode::resumePostAttachCallbacks (this=0x829520)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/dom/ContainerNode.cpp:739
#12 0x00007ffff41a7379 in WebCore::PostAttachCallbackDisabler::~PostAttachCallbackDisabler (this=0x7fffffffc750, __in_chrg=<optimized out>)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/dom/ContainerNode.h:345
#13 0x00007ffff43c04d7 in WebCore::HTMLPlugInImageElement::attach (this=0x829520, context=...)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/html/HTMLPlugInImageElement.cpp:250
#14 0x00007ffff429162f in WebCore::Node::reattach (this=0x829520, context=...) at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/dom/Node.h:811
#15 0x00007ffff43b98e7 in WebCore::HTMLObjectElement::renderFallbackContent (this=0x829520)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/html/HTMLObjectElement.cpp:384
#16 0x00007ffff43a73d2 in WebCore::HTMLImageLoader::notifyFinished (this=0x7779e0)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/html/HTMLImageLoader.cpp:89
#17 0x00007ffff45845c6 in WebCore::CachedResource::checkNotify (this=0x915ef0)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/cache/CachedResource.cpp:369
#18 0x00007ffff4584731 in WebCore::CachedResource::error (this=0x915ef0, status=WebCore::CachedResource::DecodeError)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/cache/CachedResource.cpp:395
#19 0x00007ffff457db36 in WebCore::CachedImage::error (this=0x915ef0, status=WebCore::CachedResource::DecodeError)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/cache/CachedImage.cpp:435
#20 0x00007ffff457da2f in WebCore::CachedImage::finishLoading (this=0x915ef0, data=0x87e260)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/cache/CachedImage.cpp:419
#21 0x00007ffff45e73e3 in WebCore::SubresourceLoader::didFinishLoading (this=0x913690, finishTime=0)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/SubresourceLoader.cpp:282
#22 0x00007ffff45ddccd in WebCore::ResourceLoader::didFinishLoading (this=0x913690, finishTime=0)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/loader/ResourceLoader.cpp:488
#23 0x00007ffff4a87683 in WebCore::QNetworkReplyHandler::finish (this=0x9105d0)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:516
#24 0x00007ffff4a863a2 in WebCore::QNetworkReplyHandlerCallQueue::flush (this=0x910608)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:250
#25 0x00007ffff4a860f2 in WebCore::QNetworkReplyHandlerCallQueue::unlock (this=0x910608)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:230
#26 0x00007ffff4a8643b in WebCore::QueueLocker::~QueueLocker (this=0x7fffffffcac0, __in_chrg=<optimized out>)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:258
#27 0x00007ffff4a86f2a in WebCore::QNetworkReplyWrapper::emitMetaDataChanged (this=0x8f5410)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:395
#28 0x00007ffff4a86cd9 in WebCore::QNetworkReplyWrapper::receiveSniffedMIMEType (this=0x8f5410)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:359
#29 0x00007ffff4a8999a in WebCore::QNetworkReplyWrapper::qt_static_metacall (_o=0x8f5410, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7fffffffcc20)
---Type <return> to continue, or q <return> to quit---
    at .moc/release-shared/moc_QNetworkReplyHandler.cpp:178
#30 0x00007ffff22115cb in QMetaObject::activate(QObject*, int, int, void**) () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#31 0x00007ffff528731f in QtMIMETypeSniffer::finished (this=0x86e720) at .moc/release-shared/moc_QtMIMETypeSniffer.cpp:131
#32 0x00007ffff4a853dc in QtMIMETypeSniffer::trySniffing (this=0x86e720)
    at /home/reni/Data/REPOS/webkit_sec/Source/WebCore/platform/network/qt/QtMIMETypeSniffer.cpp:65
#33 0x00007ffff5287182 in QtMIMETypeSniffer::qt_static_metacall (_o=0x86e720, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7fffffffce20)
    at .moc/release-shared/moc_QtMIMETypeSniffer.cpp:76
#34 0x00007ffff22115cb in QMetaObject::activate(QObject*, int, int, void**) () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#35 0x00007ffff2c5df81 in ?? () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Network.so.5
#36 0x00007ffff2cd7a4d in ?? () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Network.so.5
#37 0x00007ffff221284e in QObject::event(QEvent*) () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#38 0x00007ffff3058dbc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Widgets.so.5
#39 0x00007ffff305c075 in QApplication::notify(QObject*, QEvent*) () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Widgets.so.5
#40 0x00007ffff21ecdbe in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#41 0x00007ffff21eea76 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
   from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#42 0x00007ffff2234333 in ?? () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#43 0x00007fffee3790a6 in g_main_dispatch (context=0x6632f0) at /build/buildd/glib2.0-2.37.3/./glib/gmain.c:3058
#44 g_main_context_dispatch (context=context@entry=0x6632f0) at /build/buildd/glib2.0-2.37.3/./glib/gmain.c:3634
#45 0x00007fffee3793f8 in g_main_context_iterate (context=context@entry=0x6632f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /build/buildd/glib2.0-2.37.3/./glib/gmain.c:3705
#46 0x00007fffee37949c in g_main_context_iteration (context=0x6632f0, may_block=1) at /build/buildd/glib2.0-2.37.3/./glib/gmain.c:3766
#47 0x00007ffff22344bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#48 0x00007ffff21ebd3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#49 0x00007ffff21ef120 in QCoreApplication::exec() () from /usr/local/Trolltech/Qt5/Qt-5.0.0-r40/lib/libQt5Core.so.5
#50 0x0000000000421ba0 in launcherMain (app=...) at /home/reni/Data/REPOS/webkit_sec/Tools/QtTestBrowser/qttestbrowser.cpp:49
#51 0x0000000000423680 in main (argc=2, argv=0x7fffffffdc58) at /home/reni/Data/REPOS/webkit_sec/Tools/QtTestBrowser/qttestbrowser.cpp:318
Comment 1 Renata Hodovan 2013-08-13 08:41:03 PDT
Created attachment 208637 [details]
Test case
Comment 2 Alexey Proskuryakov 2013-08-13 09:37:29 PDT
Ugh, resolving a URL against a mailto: base! We should probably outlaw overly tricky base URLs.
Comment 3 Renata Hodovan 2014-06-13 04:34:38 PDT
(In reply to comment #2)
> Ugh, resolving a URL against a mailto: base! We should probably outlaw overly tricky base URLs.

You were right, the assertion fail still can be triggered with a different test case. A new bug is filed for that: https://bugs.webkit.org/show_bug.cgi?id=133846
Comment 4 Renata Hodovan 2014-06-13 04:38:22 PDT
(In reply to comment #3)
> (In reply to comment #2)
> > Ugh, resolving a URL against a mailto: base! We should probably outlaw overly tricky base URLs.
> 
> You were right, the assertion fail still can be triggered with a different test case. A new bug is filed for that: https://bugs.webkit.org/show_bug.cgi?id=133846

I'm sorry, I missed the tab. I wanted to write this to another url parsing bug (although you are the recipient there too :) ).
Comment 5 Renata Hodovan 2015-01-29 06:36:35 PST
I can't repro this anymore.