Summary: | [Qt] REGRESSION(r61207): qwebhistory unit test hangs | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Gabor Rapcsanyi <rgabor> | ||||||
Component: | Tools / Tests | Assignee: | Jędrzej Nowacki <jedrzej.nowacki> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | abecsi, benjamin, commit-queue, fishd, hausmann, jedrzej.nowacki, laszlo.gombos, markus, ossy, tonikitoo, vestbo | ||||||
Priority: | P1 | Keywords: | Qt, QtTriaged, Regression | ||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | All | ||||||||
OS: | All | ||||||||
Bug Depends on: | |||||||||
Bug Blocks: | 31625 | ||||||||
Attachments: |
|
Description
Gabor Rapcsanyi
2010-06-16 05:03:25 PDT
Perhaps this is related to the addition of the HistoryItem::itemSequenceNumber property. http://trac.webkit.org/changeset/61207 I don't know enough about the Qt port, but if you have any questions about that patch, I'd more than happy to help answer them. I reprodced it, It is not an infite loop it simply hangs. I don't think that it is related to HistoryItem::itemSequenceNumber. It seems that QWebPage doesn't emit signal loadFinished() after call to QWebHistory::back(). FYI: I disabled running tst_qwebhistory test on http://webkit.sed.hu/buildbot/waterfall site temporarily (until fix) to make bot happier. (In reply to comment #2) > I don't think that it is related to HistoryItem::itemSequenceNumber. I was wrong; reverting the http://trac.webkit.org/changeset/61207 helps. Created attachment 59103 [details]
Fix v1
The patch slightly change behavior of the functions goToItem, back, forward. Now loadFinished signal can be emitted immediately. I think that it should be ok, as we didn't explicitly define it.
Comment on attachment 59103 [details]
Fix v1
WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp:87
+ connect(page, SIGNAL(loadFinished(bool)), &waitForLoadFinished, SLOT(quit()), Qt::QueuedConnection);
Why the queued connection?
Comment on attachment 59103 [details] Fix v1 Clearing flags on attachment: 59103 Committed r61504: <http://trac.webkit.org/changeset/61504> All reviewed patches have been landed. Closing bug. (In reply to comment #6) > (From update of attachment 59103 [details]) > WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp:87 > + connect(page, SIGNAL(loadFinished(bool)), &waitForLoadFinished, SLOT(quit()), Qt::QueuedConnection); > Why the queued connection? As I wrote in comment 5 the patch slightly change behavior. I think it is because load function isn't called while traversing through history. It works with Qt-4.7: ********* Start testing of tst_QWebHistory ********* Config: Using QTest library 4.7.0, Qt 4.7.0 PASS : tst_QWebHistory::initTestCase() PASS : tst_QWebHistory::title() PASS : tst_QWebHistory::count() PASS : tst_QWebHistory::back() PASS : tst_QWebHistory::forward() PASS : tst_QWebHistory::itemAt() PASS : tst_QWebHistory::goToItem() PASS : tst_QWebHistory::items() PASS : tst_QWebHistory::serialize_1() PASS : tst_QWebHistory::serialize_2() PASS : tst_QWebHistory::serialize_3() PASS : tst_QWebHistory::saveAndRestore_crash_1() PASS : tst_QWebHistory::saveAndRestore_crash_2() PASS : tst_QWebHistory::saveAndRestore_crash_3() PASS : tst_QWebHistory::popPushState() PASS : tst_QWebHistory::clear() PASS : tst_QWebHistory::cleanupTestCase() Totals: 17 passed, 0 failed, 0 skipped ********* Finished testing of tst_QWebHistory ********* But unfortunately it still hangs with Qt 4.6.2: ********* Start testing of tst_QWebHistory ********* Config: Using QTest library 4.6.2, Qt 4.6.2 PASS : tst_QWebHistory::initTestCase() PASS : tst_QWebHistory::title() PASS : tst_QWebHistory::count() PASS : tst_QWebHistory::back() PASS : tst_QWebHistory::forward() PASS : tst_QWebHistory::itemAt() PASS : tst_QWebHistory::goToItem() PASS : tst_QWebHistory::items() PASS : tst_QWebHistory::serialize_1() ^CQFATAL : tst_QWebHistory::serialize_2() Received signal 2 --> I stopped here. (In reply to comment #10) > It works with Qt-4.7: (...) > But unfortunately it still hangs with Qt 4.6.2: I can confirm, it doesn't work with 4.6.2, but I tried 4.6.3 (default on my debian machine) and it is ok. It is really odd, It seems that there are a dependency between tests even if an operation are applied to different instances of the QWebPage. Each of the test pass separetelly. But: ./tst_qwebhistory serialize_1 serialize_1 ********* Start testing of tst_QWebHistory ********* Config: Using QTest library 4.6.2, Qt 4.6.2 PASS : tst_QWebHistory::initTestCase() PASS : tst_QWebHistory::serialize_1() FAIL! : tst_QWebHistory::serialize_1() Compared values are not the same Actual (hist->count()): 0 Expected (histsize): 5 Loc: [/home/nierob/dev/WebKit/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp(210)] PASS : tst_QWebHistory::cleanupTestCase() Problem is trigered by serialization, only... Created attachment 60212 [details]
Fix
I removed a bug workaround. It seems that it is not needed for the Qt 4.6 (checked with 4.6.1, 4.6.2, 4.6.3).
I couldn't find a Qt change that was neccessery for the workaround as the only link to it was via an expired pasbin's element.
Comment on attachment 60212 [details]
Fix
It doesn't work correctly.
We can close this, we do not support 4.6 anymore. |