[Webkit-unassigned] [Bug 71695] [Qt] http/tests/xmlhttprequest/workers/abort-exception-assert.html makes 6 fast/workers test fail

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Dec 5 06:59:35 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=71695





--- Comment #5 from Zoltan Herczeg <zherczeg at webkit.org>  2011-12-05 06:59:34 PST ---
Hi Alexey, David

your patch (http://trac.webkit.org/changeset/41216) introduced a complicated bug in the abort-exception-assert.html. You have added a mode string called "loadResourceSynchronouslyMode", and the worker created by the test above does not stop until it receives a message with this mode string.

See WorkerRunLoop.cpp:155:
OwnPtr<WorkerRunLoop::Task> task = m_messageQueue.waitForMessageFilteredWithTimeout(result, predicate, absoluteTime);

The predicate is the following:

81        bool operator()(WorkerRunLoop::Task* task) const
82        {
83            return m_defaultMode || m_mode == task->mode();
84        }

and m_defaultMode is false in or case.

The abort-exception-assert.html sends a terminate message to this worker, and the worker should stop. However, this message does not have loadResourceSynchronouslyMode mode (its mode string is actually NULL), so the "predicate" rule filters it out which makes the worker run infinitely. The purpose of this test is testing the terminate message.

But the story does not end here. The test calls terminate, but it does not wait until it is successful (thus the abort-exception-assert.html seems successul). However, the next test waits until all workers quit. Since this particular worker does never stop, it cause a timeout error during the next test (which makes the next test flakey).

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list