<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>147992</bug_id>
          
          <creation_ts>2015-08-13 14:08:27 -0700</creation_ts>
          <short_desc>WorkQueue::dispatchAfter() on Windows fires early</short_desc>
          <delta_ts>2015-08-13 16:39:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117378</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-13 14:08:27 -0700</bug_when>
    <thetext>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).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117382</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-13 14:15:24 -0700</bug_when>
    <thetext>It looks like the standard Windows timer ticks at ~64 ticks/second -&gt; 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: &lt;https://msdn.microsoft.com/enus/library/windows/hardware/dn265247(v=vs.85).aspx&gt;, check the &quot;Controlling timer accuracy&quot; section&apos;s first paragraph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117384</commentid>
    <comment_count>2</comment_count>
      <attachid>258932</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-13 14:16:37 -0700</bug_when>
    <thetext>Created attachment 258932
the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117386</commentid>
    <comment_count>3</comment_count>
      <attachid>258933</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-13 14:18:29 -0700</bug_when>
    <thetext>Created attachment 258933
the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117393</commentid>
    <comment_count>4</comment_count>
      <attachid>258933</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-13 14:24:43 -0700</bug_when>
    <thetext>Comment on attachment 258933
the fix.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117461</commentid>
    <comment_count>5</comment_count>
      <attachid>258933</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-13 16:39:20 -0700</bug_when>
    <thetext>Comment on attachment 258933
the fix.

Clearing flags on attachment: 258933

Committed r188415: &lt;http://trac.webkit.org/changeset/188415&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117462</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-13 16:39:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258932</attachid>
            <date>2015-08-13 14:16:37 -0700</date>
            <delta_ts>2015-08-13 14:17:09 -0700</delta_ts>
            <desc>the fix.</desc>
            <filename>bug-147992.patch</filename>
            <type>text/plain</type>
            <size>2873</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODg0MDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA4LTEzICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoKSBvbiBXaW5k
b3dzIGZpcmVzIGVhcmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ3OTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgV29ya1F1ZXVlOjpkaXNwYXRj
aEFmdGVyKCkgdXNlcyBDcmVhdGVUaW1lclF1ZXVlVGltZXIoKS4KKyAgICAgICAgVW5mb3J0dW5h
dGVseSwgQ3JlYXRlVGltZXJRdWV1ZVRpbWVyKCkgaXMgc2xvcHB5IGFuZCBjYW4gZmlyZSBlYXJs
eS4gIFdlIG5lZWQgdG8gY29tcGVuc2F0ZQorICAgICAgICBmb3IgdGhpcyBzbG9wIHRvIGVuc3Vy
ZSB0aGF0IHRoZSBzcGVjaWZpZWQgZHVyYXRpb24gZG9lcyBleHBpcmUgYmVmb3JlIHRoZSBjYWxs
YmFjayBmdW5jdGlvbgorICAgICAgICBpcyBjYWxsZWQuICBPdGhlcndpc2UsIHRoZSBKU0Mgd2F0
Y2hkb2cgKHdoaWNoIGRlcGVuZHMgb24gdGhpcykgY2FuIGZhaWwgcmFuZG9tbHkuCisKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2hBZnRlcik6CisKIDIwMTUtMDgtMTMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXVEYgc2hvdWxkIGhhdmUgYSBjb21wYWN0IENvbmRpdGlvbiBvYmpl
Y3QgdG8gdXNlIHdpdGggTG9jawpJbmRleDogU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAJ
KHJldmlzaW9uIDE4ODQwMCkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsOSArMTk1LDIyIEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaEFmdGVyKHN0ZDo6Y2hyb24KICAgICAgICAgLy8gdGltZXIgaGFuZGxlIGhhcyBiZWVuIHN0
b3JlZCBpbiBpdC4KICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhjb250ZXh0LT50aW1lck11dGV4
KTsKIAorICAgICAgICBpbnQ2NF90IG1pbGxpc2Vjb25kcyA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKS5jb3VudCgpICsgc2xv
cEFkanVzdG1lbnQ7CisKKyAgICAgICAgLy8gRnJvbSBlbXBpcmljYWwgdGVzdGluZywgd2UndmUg
c2VlbiBDcmVhdGVUaW1lclF1ZXVlVGltZXIoKSBzb21ldGltZXMgZmlyZSB1cCB0byA1KyBtcyBl
YXJseS4KKyAgICAgICAgLy8gVGhpcyBjYXVzZXMgaGF2b2MgZm9yIGNsaWVudHMgb2YgdGhpcyBj
b2RlIHRoYXQgZXhwZWN0IHRvIG5vdCBiZSBjYWxsZWQgYmFjayB1bnRpbCB0aGUKKyAgICAgICAg
Ly8gc3BlY2lmaWVkIGR1cmF0aW9uIGhhcyBleHBpcmVkLiBPdGhlciBmb2xrcyBvbmxpbmUgaGF2
ZSBhbHNvIG9ic2VydmVkIHNvbWUgc2xvcCBpbiB0aGUKKyAgICAgICAgLy8gZmlyaW5nIHRpbWVz
IG9mIENyZWF0ZVRpbWVyUXVxdWVUaW1lcigpLiBGcm9tIHRoZSBkYXRhIHBvc3RlZCBhdAorICAg
ICAgICAvLyBodHRwOi8vb21lZy5wbC9ibG9nLzIwMTEvMTEvb24td2luYXBpLXRpbWVycy1hbmQt
dGhlaXItcmVzb2x1dGlvbiwgaXQgYXBwZWFycyB0aGF0IHRoZSBzbG9wCisgICAgICAgIC8vIGNh
biBiZSB1cCB0byBhYm91dCAxMCBtcy4gVG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgZmlyZSB0aGUg
dGltZXIgZWFybHksIHdlJ2xsIHRhY2sgb24gYQorICAgICAgICAvLyBzbG9wIGFkanVzdG1lbnQg
dG8gdGhlIGR1cmF0aW9uLCBhbmQgd2UnbGwgdXNlIGRvdWJsZSB0aGUgd29yc3QgYW1vdW50IG9m
IHNsb3Agb2JzZXJ2ZWQKKyAgICAgICAgLy8gc28gZmFyLgorICAgICAgICBjb25zdCBpbnQ2NF90
IHNsb3BBZGp1c3RtZW50ID0gMjA7CisgICAgICAgIGlmIChtaWxsaXNlY29uZHMpIAorICAgICAg
ICAgICAgbWlsbGlzZWNvbmRzICs9IHNsb3BBZGp1c3RtZW50OworCiAgICAgICAgIC8vIFNpbmNl
IG91ciB0aW1lciBjYWxsYmFjayBpcyBxdWljaywgd2UgY2FuIGV4ZWN1dGUgaW4gdGhlIHRpbWVy
IHRocmVhZCBpdHNlbGYgYW5kIGF2b2lkCiAgICAgICAgIC8vIGFuIGV4dHJhIHRocmVhZCBzd2l0
Y2ggb3ZlciB0byBhIHdvcmtlciB0aHJlYWQuCi0gICAgICAgIGludDY0X3QgbWlsbGlzZWNvbmRz
ID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4o
ZHVyYXRpb24pLmNvdW50KCk7CiAgICAgICAgIGlmICghOjpDcmVhdGVUaW1lclF1ZXVlVGltZXIo
JmNvbnRleHQtPnRpbWVyLCBtX3RpbWVyUXVldWUsIHRpbWVyQ2FsbGJhY2ssIGNvbnRleHQuZ2V0
KCksIGNsYW1wVG88RFdPUkQ+KG1pbGxpc2Vjb25kcyksIDAsIFdUX0VYRUNVVEVJTlRJTUVSVEhS
RUFEKSkgewogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShmYWxzZSwgIjo6Q3JlYXRl
VGltZXJRdWV1ZVRpbWVyIGZhaWxlZCB3aXRoIGVycm9yICVsdSIsIDo6R2V0TGFzdEVycm9yKCkp
OwogICAgICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258933</attachid>
            <date>2015-08-13 14:18:29 -0700</date>
            <delta_ts>2015-08-13 16:39:20 -0700</delta_ts>
            <desc>the fix.</desc>
            <filename>bug-147992.patch</filename>
            <type>text/plain</type>
            <size>2856</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODg0MDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA4LTEzICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoKSBvbiBXaW5k
b3dzIGZpcmVzIGVhcmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ3OTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgV29ya1F1ZXVlOjpkaXNwYXRj
aEFmdGVyKCkgdXNlcyBDcmVhdGVUaW1lclF1ZXVlVGltZXIoKS4KKyAgICAgICAgVW5mb3J0dW5h
dGVseSwgQ3JlYXRlVGltZXJRdWV1ZVRpbWVyKCkgaXMgc2xvcHB5IGFuZCBjYW4gZmlyZSBlYXJs
eS4gIFdlIG5lZWQgdG8gY29tcGVuc2F0ZQorICAgICAgICBmb3IgdGhpcyBzbG9wIHRvIGVuc3Vy
ZSB0aGF0IHRoZSBzcGVjaWZpZWQgZHVyYXRpb24gZG9lcyBleHBpcmUgYmVmb3JlIHRoZSBjYWxs
YmFjayBmdW5jdGlvbgorICAgICAgICBpcyBjYWxsZWQuICBPdGhlcndpc2UsIHRoZSBKU0Mgd2F0
Y2hkb2cgKHdoaWNoIGRlcGVuZHMgb24gdGhpcykgY2FuIGZhaWwgcmFuZG9tbHkuCisKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2hBZnRlcik6CisKIDIwMTUtMDgtMTMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXVEYgc2hvdWxkIGhhdmUgYSBjb21wYWN0IENvbmRpdGlvbiBvYmpl
Y3QgdG8gdXNlIHdpdGggTG9jawpJbmRleDogU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAJ
KHJldmlzaW9uIDE4ODQwMCkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsOSArMTk1LDIyIEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaEFmdGVyKHN0ZDo6Y2hyb24KICAgICAgICAgLy8gdGltZXIgaGFuZGxlIGhhcyBiZWVuIHN0
b3JlZCBpbiBpdC4KICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhjb250ZXh0LT50aW1lck11dGV4
KTsKIAorICAgICAgICBpbnQ2NF90IG1pbGxpc2Vjb25kcyA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKS5jb3VudCgpOworCisg
ICAgICAgIC8vIEZyb20gZW1waXJpY2FsIHRlc3RpbmcsIHdlJ3ZlIHNlZW4gQ3JlYXRlVGltZXJR
dWV1ZVRpbWVyKCkgc29tZXRpbWVzIGZpcmUgdXAgdG8gNSsgbXMgZWFybHkuCisgICAgICAgIC8v
IFRoaXMgY2F1c2VzIGhhdm9jIGZvciBjbGllbnRzIG9mIHRoaXMgY29kZSB0aGF0IGV4cGVjdCB0
byBub3QgYmUgY2FsbGVkIGJhY2sgdW50aWwgdGhlCisgICAgICAgIC8vIHNwZWNpZmllZCBkdXJh
dGlvbiBoYXMgZXhwaXJlZC4gT3RoZXIgZm9sa3Mgb25saW5lIGhhdmUgYWxzbyBvYnNlcnZlZCBz
b21lIHNsb3AgaW4gdGhlCisgICAgICAgIC8vIGZpcmluZyB0aW1lcyBvZiBDcmVhdGVUaW1lclF1
cXVlVGltZXIoKS4gRnJvbSB0aGUgZGF0YSBwb3N0ZWQgYXQKKyAgICAgICAgLy8gaHR0cDovL29t
ZWcucGwvYmxvZy8yMDExLzExL29uLXdpbmFwaS10aW1lcnMtYW5kLXRoZWlyLXJlc29sdXRpb24s
IGl0IGFwcGVhcnMgdGhhdCB0aGUgc2xvcAorICAgICAgICAvLyBjYW4gYmUgdXAgdG8gYWJvdXQg
MTAgbXMuIFRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGZpcmUgdGhlIHRpbWVyIGVhcmx5LCB3ZSds
bCB0YWNrIG9uIGEKKyAgICAgICAgLy8gc2xvcCBhZGp1c3RtZW50IHRvIHRoZSBkdXJhdGlvbiwg
YW5kIHdlJ2xsIHVzZSBkb3VibGUgdGhlIHdvcnN0IGFtb3VudCBvZiBzbG9wIG9ic2VydmVkCisg
ICAgICAgIC8vIHNvIGZhci4KKyAgICAgICAgY29uc3QgaW50NjRfdCBzbG9wQWRqdXN0bWVudCA9
IDIwOworICAgICAgICBpZiAobWlsbGlzZWNvbmRzKSAKKyAgICAgICAgICAgIG1pbGxpc2Vjb25k
cyArPSBzbG9wQWRqdXN0bWVudDsKKwogICAgICAgICAvLyBTaW5jZSBvdXIgdGltZXIgY2FsbGJh
Y2sgaXMgcXVpY2ssIHdlIGNhbiBleGVjdXRlIGluIHRoZSB0aW1lciB0aHJlYWQgaXRzZWxmIGFu
ZCBhdm9pZAogICAgICAgICAvLyBhbiBleHRyYSB0aHJlYWQgc3dpdGNoIG92ZXIgdG8gYSB3b3Jr
ZXIgdGhyZWFkLgotICAgICAgICBpbnQ2NF90IG1pbGxpc2Vjb25kcyA9IHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKS5jb3VudCgp
OwogICAgICAgICBpZiAoITo6Q3JlYXRlVGltZXJRdWV1ZVRpbWVyKCZjb250ZXh0LT50aW1lciwg
bV90aW1lclF1ZXVlLCB0aW1lckNhbGxiYWNrLCBjb250ZXh0LmdldCgpLCBjbGFtcFRvPERXT1JE
PihtaWxsaXNlY29uZHMpLCAwLCBXVF9FWEVDVVRFSU5USU1FUlRIUkVBRCkpIHsKICAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICI6OkNyZWF0ZVRpbWVyUXVldWVUaW1lciBm
YWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6OkdldExhc3RFcnJvcigpKTsKICAgICAgICAgICAgIHJl
dHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>