Bug 96531

Summary: [Qt][WK2] REGRESSION(r128245): It made zillion API tests fail
Product: WebKit Reporter: Csaba Osztrogonác <ossy>
Component: New BugsAssignee: Andras Becsi <abecsi>
Status: RESOLVED FIXED    
Severity: Critical CC: abecsi, aestes, andersca, hausmann, jturcotte, noam, ossy
Priority: P1 Keywords: Qt, QtTriaged
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 70236, 96449    
Attachments:
Description Flags
Patch
none
Patch none

Description Csaba Osztrogonác 2012-09-12 09:23:23 PDT
Could you check it, please?

********* Start testing of tst_qrawwebview *********
Config: Using QTest library 5.0.0, Qt 5.0.0
PASS   : tst_qrawwebview::initTestCase()
FAIL!  : tst_qrawwebview::paint() '::waitForSignal(this, SIGNAL(loaded()), 5000)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(86)]
FAIL!  : tst_qrawwebview::paint() 'compareImages(QImage(expectation), image.rgbSwapped(), 5)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(227)]
FAIL!  : tst_qrawwebview::noBackground1() '::waitForSignal(this, SIGNAL(loaded()), 5000)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(86)]
FAIL!  : tst_qrawwebview::noBackground1() '::waitForSignal(this, SIGNAL(loaded()), 5000)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(86)]
FAIL!  : tst_qrawwebview::noBackground2() '::waitForSignal(this, SIGNAL(loaded()), 5000)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(86)]
FAIL!  : tst_qrawwebview::noBackground2() '::waitForSignal(this, SIGNAL(loaded()), 5000)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(86)]
FAIL!  : tst_qrawwebview::noBackground3() '::waitForSignal(this, SIGNAL(loaded()), 5000)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(86)]
FAIL!  : tst_qrawwebview::noBackground3() '::waitForSignal(this, SIGNAL(loaded()), 5000)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(86)]
FAIL!  : tst_qrawwebview::noBackground3() 'compareImages(QImage(expectation), image.rgbSwapped(), 5)' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp(227)]
PASS   : tst_qrawwebview::cleanupTestCase()
Totals: 2 passed, 9 failed, 0 skipped




********* Start testing of qmltests *********
Config: Using QTest library 5.0.0, Qt 5.0.0
PASS   : qmltests::WebViewApplicationSchemes::initTestCase()
QWARN  : qmltests::WebViewApplicationSchemes::test_applicationScheme() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::WebViewApplicationSchemes::test_applicationScheme() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_applicationScheme.qml(75)]
QWARN  : qmltests::WebViewApplicationSchemes::test_charsets() WARNING: The web process has been successfully restarted.
QWARN  : qmltests::WebViewApplicationSchemes::test_charsets() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::WebViewApplicationSchemes::test_charsets() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_applicationScheme.qml(108)]
QWARN  : qmltests::WebViewApplicationSchemes::test_multipleSchemes() WARNING: The web process has been successfully restarted.
QWARN  : qmltests::WebViewApplicationSchemes::test_multipleSchemes() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::WebViewApplicationSchemes::test_multipleSchemes() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_applicationScheme.qml(83)]
QWARN  : qmltests::WebViewApplicationSchemes::test_multipleUrlsForScheme() WARNING: The web process has been successfully restarted.
QWARN  : qmltests::WebViewApplicationSchemes::test_multipleUrlsForScheme() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::WebViewApplicationSchemes::test_multipleUrlsForScheme() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_applicationScheme.qml(95)]
PASS   : qmltests::WebViewApplicationSchemes::cleanupTestCase()
PASS   : qmltests::WebViewColorChooser::initTestCase()
QWARN  : qmltests::WebViewColorChooser::test_accept() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::WebViewColorChooser::test_accept() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml(47)]
QWARN  : qmltests::WebViewColorChooser::test_currentValue() WARNING: The web process has been successfully restarted.
QWARN  : qmltests::WebViewColorChooser::test_currentValue() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::WebViewColorChooser::test_currentValue() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml(47)]
QWARN  : qmltests::WebViewColorChooser::test_reject() WARNING: The web process has been successfully restarted.
QWARN  : qmltests::WebViewColorChooser::test_reject() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::WebViewColorChooser::test_reject() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml(47)]
PASS   : qmltests::WebViewColorChooser::cleanupTestCase()
PASS   : qmltests::DevicePixelRatio::initTestCase()
QWARN  : qmltests::DevicePixelRatio::test_devicePixelRatio() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::DevicePixelRatio::test_devicePixelRatio() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml(33)]
QWARN  : qmltests::DevicePixelRatio::test_devicePixelRatioMediaQuery() WARNING: The web process has been successfully restarted.
QWARN  : qmltests::DevicePixelRatio::test_devicePixelRatioMediaQuery() WARNING: The web process experienced a crash on ''.
FAIL!  : qmltests::DevicePixelRatio::test_devicePixelRatioMediaQuery() 'verify()' returned FALSE. ()
   Loc: [/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml(50)]
PASS   : qmltests::DevicePixelRatio::cleanupTestCase()
Comment 1 Anders Carlsson 2012-09-12 14:28:04 PDT
It looks like the web process is crashing? Do you have web process crash logs?
Comment 2 Andras Becsi 2012-09-13 02:56:42 PDT
(In reply to comment #1)
> It looks like the web process is crashing? Do you have web process crash logs?

(gdb) r
Starting program: /home/abecsi/devel/git/webkit-git-svn/WebKitBuild/Debug/Source/WebKit2/UIProcess/API/qt/tests/qmltests/tst_qmltests_WebView

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff977fc700 (LWP 26276)]
0x00007ffff4793fdf in WebKit::WebChromeClient::contentsSizeChanged (this=0x466720, frame=0x476d30, size=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:448
448             m_page->drawingArea()->layerTreeHost()->sizeDidChange(m_page->size());
(gdb) bt
#0  0x00007ffff4793fdf in WebKit::WebChromeClient::contentsSizeChanged (this=0x466720, frame=0x476d30, size=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:448
#1  0x00007ffff50678d9 in WebCore::Chrome::contentsSizeChanged (this=0x4680e0, frame=0x476d30, size=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/page/Chrome.cpp:125
#2  0x00007ffff50c6814 in WebCore::FrameView::setContentsSize (this=0x4874c0, size=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/page/FrameView.cpp:547
#3  0x00007ffff50c69eb in WebCore::FrameView::adjustViewSize (this=0x4874c0) at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/page/FrameView.cpp:567
#4  0x00007ffff50c88b6 in WebCore::FrameView::layout (this=0x4874c0, allowSubtree=false) at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/page/FrameView.cpp:1192
#5  0x00007ffff50d1625 in WebCore::FrameView::forceLayout (this=0x4874c0, allowSubtree=false) at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/page/FrameView.cpp:3371
#6  0x00007ffff47ea4f5 in WebKit::WebPage::setFixedLayoutSize (this=0x467560, size=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1124
#7  0x00007ffff47e97f0 in WebKit::WebPage::setResizesToContentsUsingLayoutSize (this=0x467560, targetLayoutSize=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebPage/WebPage.cpp:911
#8  0x00007ffff47e9b56 in WebKit::WebPage::sendViewportAttributesChanged (this=0x467560) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebPage/WebPage.cpp:952
#9  0x00007ffff47e9c34 in WebKit::WebPage::setViewportSize (this=0x467560, size=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebPage/WebPage.cpp:965
#10 0x00007ffff4871125 in CoreIPC::callMemberFunction<WebKit::WebPage, void (WebKit::WebPage::*)(WebCore::IntSize const&), WebCore::IntSize> (args=..., object=0x467560, function=
    (void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebCore::IntSize &)) 0x7ffff47e9b9e <WebKit::WebPage::setViewportSize(WebCore::IntSize const&)>)
    at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/Platform/CoreIPC/HandleMessage.h:19
#11 0x00007ffff486e7e9 in CoreIPC::handleMessage<Messages::WebPage::SetViewportSize, WebKit::WebPage, void (WebKit::WebPage::*)(WebCore::IntSize const&)> (argumentDecoder=0x7fff98004a80, object=0x467560, function=
    (void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebCore::IntSize &)) 0x7ffff47e9b9e <WebKit::WebPage::setViewportSize(WebCore::IntSize const&)>)
    at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/Platform/CoreIPC/HandleMessage.h:302
#12 0x00007ffff486be28 in WebKit::WebPage::didReceiveWebPageMessage (this=0x467560, messageID=..., arguments=0x7fff98004a80) at generated/WebPageMessageReceiver.cpp:280
#13 0x00007ffff47f04a8 in WebKit::WebPage::didReceiveMessage (this=0x467560, connection=0x451cd0, messageID=..., arguments=0x7fff98004a80) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2692
#14 0x00007ffff4803658 in WebKit::WebProcess::didReceiveMessage (this=0x451800, connection=0x451cd0, messageID=..., arguments=0x7fff98004a80) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebProcess.cpp:711
#15 0x00007ffff4800ffe in WebKit::WebConnectionToUIProcess::didReceiveMessage (this=0x451c80, connection=0x451cd0, messageID=..., arguments=0x7fff98004a80)
    at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp:87
#16 0x00007ffff45a2dae in CoreIPC::Connection::dispatchMessage (this=0x451cd0, message=...) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/Platform/CoreIPC/Connection.cpp:691
#17 0x00007ffff45a2f9f in CoreIPC::Connection::dispatchOneMessage (this=0x451cd0) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/Platform/CoreIPC/Connection.cpp:717
#18 0x00007ffff45acfb3 in WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>::operator() (this=0x7fff98004b10, c=0x451cd0) at /home/abecsi/devel/git/webkit-git-svn/Source/WTF/wtf/Functional.h:174
#19 0x00007ffff45acd6c in WTF::BoundFunctionImpl<WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>, void (CoreIPC::Connection*)>::operator()() (this=0x7fff98004b00) at /home/abecsi/devel/git/webkit-git-svn/Source/WTF/wtf/Functional.h:406
#20 0x00007ffff4632fd6 in WTF::Function<void ()>::operator()() const (this=0x7fffffffd5c0) at /home/abecsi/devel/git/webkit-git-svn/Source/WTF/wtf/Functional.h:614
#21 0x00007ffff51d180e in WebCore::RunLoop::performWork (this=0x44f790) at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/platform/RunLoop.cpp:102
#22 0x00007ffff54ee0d0 in WebCore::RunLoop::TimerObject::performWork (this=0x44e9d0) at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/platform/qt/RunLoopQt.cpp:48
#23 0x00007ffff54eeb78 in WebCore::RunLoop::TimerObject::qt_static_metacall (_o=0x44e9d0, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff98002fe0) at ./RunLoopQt.moc:69
#24 0x00007ffff33aee9e in QObject::event(QEvent*) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtCore.so.5
#25 0x00007ffff3be507c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtWidgets.so.5
#26 0x00007ffff3be8280 in QApplication::notify(QObject*, QEvent*) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtWidgets.so.5
#27 0x00007ffff338992e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtCore.so.5
#28 0x00007ffff338b79e in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtCore.so.5
#29 0x00007ffff33d0eb3 in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtCore.so.5
#30 0x00007fffecc4c475 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#31 0x00007fffecc4c7a8 in ?? () from /usr/lib/libglib-2.0.so.0
#32 0x00007fffecc4c864 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#33 0x00007ffff33d105b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtCore.so.5
#34 0x00007ffff33887eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtCore.so.5
#35 0x00007ffff338bf4c in QCoreApplication::exec() () from /home/abecsi/devel/git/qt5_build/qtbase/lib/libQtCore.so.5
#36 0x00007ffff54ee307 in WebCore::RunLoop::run () at /home/abecsi/devel/git/webkit-git-svn/Source/WebCore/platform/qt/RunLoopQt.cpp:69
#37 0x00007ffff4816333 in WebKit::WebProcessMainQt (app=0x40f240) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/WebProcess/qt/WebProcessMainQt.cpp:195
#38 0x000000000040100c in main (argc=2, argv=0x7fffffffe328) at /home/abecsi/devel/git/webkit-git-svn/Source/WebKit2/qt/MainQt.cpp:87

For this testcase m_page->drawingArea() is allways null at this point.
Comment 3 Andras Becsi 2012-09-13 04:13:07 PDT
The issue seems to be that WebPage::updatePreferences is called in the WebPage constructor (in WebPage.cpp:310) before the drawing area is created (in WebPage.cpp:318), therefore after r128245 settings->setForceCompositingMode is never called since m_drawingArea is not yet initialized when WebPage::updatePreferences would call m_drawingArea->updatePreferences(store).
Comment 4 Andras Becsi 2012-09-13 04:47:34 PDT
Created attachment 163840 [details]
Patch
Comment 5 Jocelyn Turcotte 2012-09-13 06:29:23 PDT
Comment on attachment 163840 [details]
Patch

Looking at platform implementations this doesn't seem to be an issue yet, but I'm wondering if we shouldn't make sure that platformInitialize() keeps being run after updatePreferences. Tell me what you think, this can be moved once it's needed too.
Comment 6 Andras Becsi 2012-09-13 07:22:35 PDT
(In reply to comment #5)
> (From update of attachment 163840 [details])
> Looking at platform implementations this doesn't seem to be an issue yet, but I'm wondering if we shouldn't make sure that platformInitialize() keeps being run after updatePreferences.

Indeed, it could be safer for future implementations of platformInitialize() that might want to set custom settings.
Comment 7 Andras Becsi 2012-09-13 07:30:15 PDT
Created attachment 163866 [details]
Patch
Comment 8 Andras Becsi 2012-09-13 07:42:13 PDT
Comment on attachment 163866 [details]
Patch

Clearing flags on attachment: 163866

Committed r128457: <http://trac.webkit.org/changeset/128457>
Comment 9 Andras Becsi 2012-09-13 07:42:18 PDT
All reviewed patches have been landed.  Closing bug.