RESOLVED FIXED 147992
WorkQueue::dispatchAfter() on Windows fires early
https://bugs.webkit.org/show_bug.cgi?id=147992
Summary WorkQueue::dispatchAfter() on Windows fires early
Mark Lam
Reported 2015-08-13 14:08:27 PDT
The Windows implementation of WorkQueue::dispatchAfter() uses CreateTimerQueueTimer(). Unfortunately, CreateTimerQueueTimer() is sloppy and can fire early. We need to compensate for this slop to ensure that the specified duration does expire before the callback function is called (or the JSC watchdog which depends on this can fail randomly).
Attachments
the fix. (2.81 KB, patch)
2015-08-13 14:16 PDT, Mark Lam
no flags
the fix. (2.79 KB, patch)
2015-08-13 14:18 PDT, Mark Lam
no flags
Brent Fulgham
Comment 1 2015-08-13 14:15:24 PDT
It looks like the standard Windows timer ticks at ~64 ticks/second -> 15ms interval. http://download.microsoft.com/download/3/0/2/3027D574-C433-412A-A8B65E0A75D5B237/Timer-Resolution.docx See also https://msdn.microsoft.com/enus/library/system.timers.timer.interval(v=vs.110).aspx Another one: <https://msdn.microsoft.com/enus/library/windows/hardware/dn265247(v=vs.85).aspx>, check the "Controlling timer accuracy" section's first paragraph.
Mark Lam
Comment 2 2015-08-13 14:16:37 PDT
Created attachment 258932 [details] the fix.
Mark Lam
Comment 3 2015-08-13 14:18:29 PDT
Created attachment 258933 [details] the fix.
Brent Fulgham
Comment 4 2015-08-13 14:24:43 PDT
Comment on attachment 258933 [details] the fix. r=me.
WebKit Commit Bot
Comment 5 2015-08-13 16:39:20 PDT
Comment on attachment 258933 [details] the fix. Clearing flags on attachment: 258933 Committed r188415: <http://trac.webkit.org/changeset/188415>
WebKit Commit Bot
Comment 6 2015-08-13 16:39:26 PDT
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.