Bug 141820

Summary: RunLoop::dispatch() should drop the mutex before calling wakeUp().
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: WebKit Misc.Assignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: andersca, benjamin, cmarcelo, commit-queue, sam, simon.fraser
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch none

Simon Fraser (smfr)
Reported 2015-02-19 18:03:24 PST
It's possible for RunLoop::performWork() to return without handling all the functions in the queue. In that case, CF is going to unset the CFRunLoopSource "signaled" state, which means that source won't get processed again until RunLoop::dispatch is called. We should re-signal the source at the end of RunLoop::performWork() if there's still work to do. This is OK, because CF unsets the signaled bit before it calls us. Also, RunLoop::dispatch() should drop the mutex before calling wakeUp().
Attachments
Patch (1.33 KB, patch)
2015-02-19 18:32 PST, Simon Fraser (smfr)
no flags
Simon Fraser (smfr)
Comment 1 2015-02-19 18:28:34 PST
Never mind. If something was added to the m_functionQueue inside of RunLoop::performWork(), it would have had to have been via RunLoop::dispatch, which would have signaled. So I'll just keep this for the mutex fix.
Simon Fraser (smfr)
Comment 2 2015-02-19 18:32:31 PST
WebKit Commit Bot
Comment 3 2015-02-20 11:36:13 PST
Comment on attachment 246931 [details] Patch Clearing flags on attachment: 246931 Committed r180434: <http://trac.webkit.org/changeset/180434>
WebKit Commit Bot
Comment 4 2015-02-20 11:36:18 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.