[Webkit-unassigned] [Bug 166645] New: WorkQueueGeneric's platformInvalidate() can deadlock when called on the RunLoop's thread
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Jan 3 02:30:03 PST 2017
https://bugs.webkit.org/show_bug.cgi?id=166645
Bug ID: 166645
Summary: WorkQueueGeneric's platformInvalidate() can deadlock
when called on the RunLoop's thread
Classification: Unclassified
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: Web Template Framework
Assignee: webkit-unassigned at lists.webkit.org
Reporter: zan at falconsigh.net
CC: cgarcia at igalia.com
It's possible that a WorkQueue object is destroyed on its own thread. In case of the WorkQueueGeneric implementation, that is the thread of the underlying RunLoop object.
When that occurs, platformInvalidate() in WorkQueueGeneric.cpp stops the RunLoop and then waits for a signal on the m_terminateRunLoopCondition indefinitely. That doesn't occur because the signal is supposed to be launched on the same thread after the RunLoop is stopped.
https://trac.webkit.org/browser/trunk/Source/WTF/wtf/generic/WorkQueueGeneric.cpp#L68
One solution is to not wait on m_terminateRunLoopCondition if we detect that we're on the RunLoop's thread. Another solution is to remove both m_terminateRunLoopCondition and the accompanying mutex.
First reported at https://github.com/Metrological/WebKitForWayland/pull/170
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170103/acc44fe0/attachment.html>
More information about the webkit-unassigned
mailing list