Bug 69511 - [Qt] REGRESSION(r96779): It made svg/as-image/svg-nested.html timeout
Summary: [Qt] REGRESSION(r96779): It made svg/as-image/svg-nested.html timeout
Alias: None
Product: WebKit
Classification: Unclassified
Component: SVG (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P1 Critical
Assignee: Nobody
Keywords: Qt, QtTriaged
Depends on:
Blocks: CVE-2012-3696 79666 79668
  Show dependency treegraph
Reported: 2011-10-06 03:43 PDT by Csaba Osztrogonác
Modified: 2012-05-25 00:19 PDT (History)
12 users (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description Csaba Osztrogonác 2011-10-06 03:43:05 PDT
After http://trac.webkit.org/changeset/96779 this test always fails with timeout:
Comment 1 Erik Arvidsson 2011-10-06 09:34:58 PDT
The data URL for the SVG image now contains <a><a>...</a></a>. This used to be URL encoded.

Does Qt do something different for SVG images than other ports?
Comment 2 Csaba Osztrogonác 2011-10-06 09:38:50 PDT
This test introduced in http://trac.webkit.org/changeset/57263/trunk/LayoutTests/fast/images/svg-nested.html . (Chris or Adam, have you got any idea?)
Comment 3 Adam Barth 2011-10-06 09:43:45 PDT
We can URL encode them in the test, if that would be helpful.  The intent of that test is to create a very deeply nested DOM in the SVG image.
Comment 4 Adam Barth 2011-10-06 09:44:03 PDT
(and to check that we don't crash when that happens)
Comment 5 Erik Arvidsson 2011-10-06 09:48:37 PDT
There should be no need to URL encode this data URL.

FYI: It does not time out on other ports and Qurl passes other tests that have markup (html) in a data URL.
Comment 6 Erik Arvidsson 2011-10-06 09:50:45 PDT
I'll get the Qt port building on my machine so I can track this down
Comment 7 Erik Arvidsson 2011-10-11 14:57:16 PDT
Here is a stack trace

#0  _wordcopy_fwd_dest_aligned (dstp=16305872, srcp=16305888, len=11580) at wordcopy.c:197
#1  0x00007ffff149873e in memmove (dest=0xf81db0, src=<value optimized out>, len=137996) at memmove.c:73
#2  0x00007ffff21f2474 in QByteArray::remove(int, int) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
#3  0x00007ffff21f3f50 in QByteArray::replace(int, int, char const*, int) ()
  from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
#4  0x00007ffff229ae86 in QUrl::setEncodedUrl(QByteArray const&, QUrl::ParsingMode) ()
  from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
#5  0x00007ffff229b6a6 in QUrl::fromEncoded(QByteArray const&) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
#6  0x00007ffff605acf5 in WebCore::KURL::operator QUrl (this=0xc0cf08) at ../../../Source/WebCore/platform/qt/KURLQt.cpp:40
#7  0x00007ffff6041409 in WebCore::ResourceRequest::toNetworkRequest (this=0xc0cf08, originatingFrame=0x94f0b0)
   at ../../../Source/WebCore/platform/network/qt/ResourceRequestQt.cpp:87
#8  0x00007ffff6045d47 in WebCore::QNetworkReplyHandler::QNetworkReplyHandler (this=0xc0c040, handle=0xc0aa20, 
   loadType=WebCore::QNetworkReplyHandler::AsynchronousLoad, deferred=false)
   at ../../../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:402
#9  0x00007ffff604074f in WebCore::ResourceHandle::start (this=0xc0aa20, context=0x985ff0)
   at ../../../Source/WebCore/platform/network/qt/ResourceHandleQt.cpp:112
#10 0x00007ffff5e22955 in WebCore::ResourceHandle::create (context=0x985ff0, request=..., client=0xc0b8e0, 
   defersLoading=false, shouldContentSniff=true) at ../../../Source/WebCore/platform/network/ResourceHandle.cpp:71
Comment 8 Alexey Proskuryakov 2012-01-16 12:47:45 PST
Any update on why this is happening?
Comment 9 Csaba Osztrogonác 2012-02-02 10:34:53 PST
It is still valid. Any volunteer to pick it up?
Comment 10 Csaba Osztrogonác 2012-05-17 04:34:29 PDT
Still valid now. Zoltán? AFAIK, you are searching a good debugging thing. :) It is debugging and SVG too. ;)
Comment 11 Lauro Moura Maranhao Neto 2012-05-24 14:41:07 PDT
Using latest WebKit revision this test takes 10s on average running on Qt4 and under 1s on Qt5 (both WK1/WK2). Wouldn't it be better to move it to "qt-4.8" skip list instead of "qt"?
Comment 12 Balazs Kelemen 2012-05-24 14:59:45 PDT
(In reply to comment #11)
> Using latest WebKit revision this test takes 10s on average running on Qt4 and under 1s on Qt5 (both WK1/WK2). Wouldn't it be better to move it to "qt-4.8" skip list instead of "qt"?

Best would be to fix it for Qt4, but if it's non-trivial and there is no volunteer for the task I support skipping it on Qt4.
Comment 13 Csaba Osztrogonác 2012-05-25 00:07:18 PDT
I think I got the root of the problem. http://trac.webkit.org/changeset/114240 made QtWebKit use libxml instead of QtXmlPatterns, but for only Qt 5. It seems QtXmlPatterns are very very slow, but libxml is quite fast.
Comment 14 Csaba Osztrogonác 2012-05-25 00:13:17 PDT
Oh, I didn't see Comment7, it isn't libxml/QtXmlPatterns related, but QUrl related thing. But I don't think if anybody will fix it in Qt 4.8. (maybe Digia for commercial users)

But this test works fine on Qt 4.8 too, but it is very slow. So I marked it as SLOW - r118485. And the bug isn't in WebKit, but in Qt 4.8, so we can close it.
Comment 15 Csaba Osztrogonác 2012-05-25 00:19:55 PDT
Qt bug report, maybe somebody is interested in fixing it - https://bugreports.qt-project.org/browse/QTBUG-25907