<?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>158678</bug_id>
          
          <creation_ts>2016-06-12 17:07:50 -0700</creation_ts>
          <short_desc>The sampling profiler should further protect itself against certain forms of sampling bias that arise due to the sampling interval being in sync with some other system process</short_desc>
          <delta_ts>2016-06-13 19:27:55 -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>JavaScriptCore</component>
          <version>WebKit Local 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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>naserid13</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201736</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-12 17:07:50 -0700</bug_when>
    <thetext>This problem was first brought to my attention after reading this paper.
See section 6.2:
http://plv.colorado.edu/papers/mytkowicz-pldi10.pdf

It seems somewhat rare that this will happen in practice, and it&apos;s
unlikely to happen many times in a row after restarting the profiler,
but it&apos;s good practice to defend against this form of bias.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201857</commentid>
    <comment_count>1</comment_count>
      <attachid>281176</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-13 09:31:15 -0700</bug_when>
    <thetext>Created attachment 281176
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201858</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 09:32:55 -0700</bug_when>
    <thetext>Attachment 281176 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SamplingProfiler.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201897</commentid>
    <comment_count>3</comment_count>
      <attachid>281176</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-06-13 12:03:54 -0700</bug_when>
    <thetext>Comment on attachment 281176
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281176&amp;action=review

&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:237
&gt; +        std::chrono::microseconds randomFluctuation = std::chrono::microseconds(static_cast&lt;uint64_t&gt;(randomNumber() * (static_cast&lt;double&gt;(m_timingInterval.count()) * 0.20l)));

Is this right?

I understand a distribution around &quot;t&quot; but randomNumber() is always positive, m_timingInterval.count() is always positive.
Shouldn&apos;t the distribution be spread on both sides of t?

This line would also benefit from mentioning the paper in a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201914</commentid>
    <comment_count>4</comment_count>
      <attachid>281176</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-13 12:45:32 -0700</bug_when>
    <thetext>Comment on attachment 281176
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281176&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:237
&gt;&gt; +        std::chrono::microseconds randomFluctuation = std::chrono::microseconds(static_cast&lt;uint64_t&gt;(randomNumber() * (static_cast&lt;double&gt;(m_timingInterval.count()) * 0.20l)));
&gt; 
&gt; Is this right?
&gt; 
&gt; I understand a distribution around &quot;t&quot; but randomNumber() is always positive, m_timingInterval.count() is always positive.
&gt; Shouldn&apos;t the distribution be spread on both sides of t?
&gt; 
&gt; This line would also benefit from mentioning the paper in a comment.

Yeah, obviously. I wasn&apos;t thinking. This is definitely wrong.
I shall fix and update with a link. Thanks for catching this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202038</commentid>
    <comment_count>5</comment_count>
      <attachid>281221</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-13 18:40:09 -0700</bug_when>
    <thetext>Created attachment 281221
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202040</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 18:42:03 -0700</bug_when>
    <thetext>Attachment 281221 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SamplingProfiler.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202042</commentid>
    <comment_count>7</comment_count>
      <attachid>281221</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-06-13 18:46:01 -0700</bug_when>
    <thetext>Comment on attachment 281221
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281221&amp;action=review

&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:241
&gt; +        double randomSignedNumber = (randomNumber() * 2.0l) - 1.0l; // A random number between [-1, 1).

What&apos;s the .01?
Why not &quot;(randomNumber() * 2.) - 1&quot;?

&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:242
&gt; +        std::chrono::microseconds randomFluctuation = std::chrono::microseconds(static_cast&lt;uint64_t&gt;(randomSignedNumber * static_cast&lt;double&gt;(m_timingInterval.count()) * 0.20l));

What&apos;s that &quot;* 0.20l&quot; factor here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202043</commentid>
    <comment_count>8</comment_count>
      <attachid>281221</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-13 18:48:48 -0700</bug_when>
    <thetext>Comment on attachment 281221
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281221&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:241
&gt;&gt; +        double randomSignedNumber = (randomNumber() * 2.0l) - 1.0l; // A random number between [-1, 1).
&gt; 
&gt; What&apos;s the .01?
&gt; Why not &quot;(randomNumber() * 2.) - 1&quot;?

it&apos;s an &apos;L&apos; not a 1.
For a double literal. I&apos;ll just switch to 2.0 and 1.0

&gt;&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:242
&gt;&gt; +        std::chrono::microseconds randomFluctuation = std::chrono::microseconds(static_cast&lt;uint64_t&gt;(randomSignedNumber * static_cast&lt;double&gt;(m_timingInterval.count()) * 0.20l));
&gt; 
&gt; What&apos;s that &quot;* 0.20l&quot; factor here?

We add +-(0.2t) where t is our sampling interval.
We&apos;re just choosing some range between [-t, t]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202046</commentid>
    <comment_count>9</comment_count>
      <attachid>281223</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-13 18:50:02 -0700</bug_when>
    <thetext>Created attachment 281223
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202051</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-13 18:56:58 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 281221 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281221&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:241
&gt; &gt;&gt; +        double randomSignedNumber = (randomNumber() * 2.0l) - 1.0l; // A random number between [-1, 1).
&gt; &gt; 
&gt; &gt; What&apos;s the .01?
&gt; &gt; Why not &quot;(randomNumber() * 2.) - 1&quot;?
&gt; 
&gt; it&apos;s an &apos;L&apos; not a 1.
&gt; For a double literal. I&apos;ll just switch to 2.0 and 1.0
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:242
&gt; &gt;&gt; +        std::chrono::microseconds randomFluctuation = std::chrono::microseconds(static_cast&lt;uint64_t&gt;(randomSignedNumber * static_cast&lt;double&gt;(m_timingInterval.count()) * 0.20l));
&gt; &gt; 
&gt; &gt; What&apos;s that &quot;* 0.20l&quot; factor here?
&gt; 
&gt; We add +-(0.2t) where t is our sampling interval.
&gt; We&apos;re just choosing some range between [-t, t]

To elaborate on this, we don&apos;t do the full
[-t, t] because we want to defend against longer sample
times for short running programs. Even though short
running programs are hard to run under a sampling profiler,
we don&apos;t want to hurt such uses. We choose 0.2 because
a random 20% of our default (1ms) range is enough to add 
randomness to our sample times so we don&apos;t end up
in sync with some other system process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202054</commentid>
    <comment_count>11</comment_count>
      <attachid>281223</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 19:27:50 -0700</bug_when>
    <thetext>Comment on attachment 281223
patch

Clearing flags on attachment: 281223

Committed r202021: &lt;http://trac.webkit.org/changeset/202021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202055</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 19:27:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281176</attachid>
            <date>2016-06-13 09:31:15 -0700</date>
            <delta_ts>2016-06-13 18:40:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>2944</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE2LTA2LTEyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSBzYW1wbGluZyBwcm9maWxlciBzaG91bGQgZnVydGhlciBwcm90ZWN0IGl0c2VsZiBhZ2Fp
bnN0IGNlcnRhaW4gZm9ybXMgb2Ygc2FtcGxpbmcgYmlhcyB0aGF0IGFyaXNlIGR1ZSB0byB0aGUg
c2FtcGxpbmcgaW50ZXJ2YWwgYmVpbmcgaW4gc3luYyB3aXRoIHNvbWUgb3RoZXIgc3lzdGVtIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
ODY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
Zmlyc3QgYmVjYW1lIGF3YXJlIG9mIHRoaXMgcHJvYmxlbSB3aGVuIEkgcmVhZCB0aGlzIHBhcGVy
OgorICAgICAgICBodHRwOi8vcGx2LmNvbG9yYWRvLmVkdS9wYXBlcnMvbXl0a293aWN6LXBsZGkx
MC5wZGYKKworICAgICAgICBUbyBwcm92aWRlIGJhY2tncm91bmQgZm9yIHRoaXMgY2hhbmdlLCBJ
J2xsIHF1b3RlIGEgcGFyYWdyYXBoCisgICAgICAgIGZyb20gc2VjdGlvbiA2LjI6CisgICAgICAg
ICJPbmUgc3RhdGljYWxseSBzb3VuZCBtZXRob2QgZm9yIGNvbGxlY3RpbmcgcmFuZG9tIHNhbXBs
ZXMgaXMgdG8gY29sbGVjdCBhCisgICAgICAgIHNhbXBsZSBhdCBldmVyeSB0ICsgciBtaWxsaXNl
Y29uZHMsIHdoZXJlIHQgaXMgdGhlIGRlc2lyZWQgc2FtcGxpbmcgaW50ZXJ2YWwKKyAgICAgICAg
YW5kIHIgaXMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4g4oiSdCBhbmQgdC4gT25lIG1pZ2h0IHRo
aW5rIHRoYXQgc2FtcGxpbmcgZXZlcnkKKyAgICAgICAgdCBzZWNvbmRzIGlzIGVub3VnaCAoaS5l
LiwgZHJvcCB0aGUgciBjb21wb25lbnQpIGJ1dCBpdCBpcyBub3Q6IHNwZWNpZmljYWxseSwKKyAg
ICAgICAgaWYgYSBwcm9maWxlciBzYW1wbGVzIGV2ZXJ5IHQgc2Vjb25kcywgdGhlIHNhbXBsaW5n
IHJhdGUgd291bGQgYmUgc3luY2hyb25pemVkCisgICAgICAgIHdpdGggYW55IHByb2dyYW0gb3Ig
c3lzdGVtIGFjdGl2aXR5IHRoYXQgb2NjdXJzIGF0IHJlZ3VsYXIgdGltZSBpbnRlcnZhbHMgWzE3
XS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSB0aHJlYWQgc2NoZWR1bGVyIHN3aXRjaGVz
IGJldHdlZW4gdGhyZWFkcyBldmVyeSAxMG1zIGFuZCBvdXIKKyAgICAgICAgc2FtcGxpbmcgaW50
ZXJ2YWwgd2FzIGFsc28gMTBtcywgdGhlbiB3ZSBtYXkgYWx3YXlzIHRha2Ugc2FtcGxlcyBpbW1l
ZGlhdGVseSBhZnRlcgorICAgICAgICBhIHRocmVhZCBzd2l0Y2guIEJlY2F1c2UgcGVyZm9ybWFu
Y2UgaXMgb2Z0ZW4gZGlmZmVyZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdGhyZWFkCisgICAgICAg
IHN3aXRjaCB0aGFuIGF0IG90aGVyIHBvaW50cyAoZS5nLiwgZHVlIHRvIGNhY2hlIGFuZCBUTEIg
d2FybS11cCBlZmZlY3RzKSB3ZSB3b3VsZAorICAgICAgICBnZXQgYmlhc2VkIGRhdGEuIFRoZSBy
YW5kb20gY29tcG9uZW50LCByLCBndWFyZHMgYWdhaW5zdCBzdWNoIHNpdHVhdGlvbnMuIgorCisg
ICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2Ft
cGxpbmdQcm9maWxlcjo6dGltZXJMb29wKToKKwogMjAxNi0wNi0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1jcHkg
ZG9uZSBmb3IgYWxsb2NhdGluZyBFcnJvciBzdGFja3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjAx
OTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJWTUVudHJ5U2Nv
cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0y
MzMsNyArMjM0LDggQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp0aW1lckxvb3AoKQogICAgICAg
ICAgICAgbV9sYXN0VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yKG1fdGltaW5nSW50ZXJ2YWwg
LSBzdGQ6Om1pbihtX3RpbWluZ0ludGVydmFsLCBzdGFja1RyYWNlUHJvY2Vzc2luZ1RpbWUpKTsK
KyAgICAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyByYW5kb21GbHVjdHVhdGlvbiA9IHN0
ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmRvbU51bWJl
cigpICogKHN0YXRpY19jYXN0PGRvdWJsZT4obV90aW1pbmdJbnRlcnZhbC5jb3VudCgpKSAqIDAu
MjBsKSkpOworICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjpzbGVlcF9mb3IobV90aW1pbmdJbnRl
cnZhbCAtIHN0ZDo6bWluKG1fdGltaW5nSW50ZXJ2YWwsIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGlt
ZSkgKyByYW5kb21GbHVjdHVhdGlvbik7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="305030"
          type_id="1"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281221</attachid>
            <date>2016-06-13 18:40:09 -0700</date>
            <delta_ts>2016-06-13 18:50:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>3363</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE2LTA2LTEyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSBzYW1wbGluZyBwcm9maWxlciBzaG91bGQgZnVydGhlciBwcm90ZWN0IGl0c2VsZiBhZ2Fp
bnN0IGNlcnRhaW4gZm9ybXMgb2Ygc2FtcGxpbmcgYmlhcyB0aGF0IGFyaXNlIGR1ZSB0byB0aGUg
c2FtcGxpbmcgaW50ZXJ2YWwgYmVpbmcgaW4gc3luYyB3aXRoIHNvbWUgb3RoZXIgc3lzdGVtIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
ODY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
Zmlyc3QgYmVjYW1lIGF3YXJlIG9mIHRoaXMgcHJvYmxlbSB3aGVuIEkgcmVhZCB0aGlzIHBhcGVy
OgorICAgICAgICBodHRwOi8vcGx2LmNvbG9yYWRvLmVkdS9wYXBlcnMvbXl0a293aWN6LXBsZGkx
MC5wZGYKKworICAgICAgICBUbyBwcm92aWRlIGJhY2tncm91bmQgZm9yIHRoaXMgY2hhbmdlLCBJ
J2xsIHF1b3RlIGEgcGFyYWdyYXBoCisgICAgICAgIGZyb20gc2VjdGlvbiA2LjI6CisgICAgICAg
ICJPbmUgc3RhdGljYWxseSBzb3VuZCBtZXRob2QgZm9yIGNvbGxlY3RpbmcgcmFuZG9tIHNhbXBs
ZXMgaXMgdG8gY29sbGVjdCBhCisgICAgICAgIHNhbXBsZSBhdCBldmVyeSB0ICsgciBtaWxsaXNl
Y29uZHMsIHdoZXJlIHQgaXMgdGhlIGRlc2lyZWQgc2FtcGxpbmcgaW50ZXJ2YWwKKyAgICAgICAg
YW5kIHIgaXMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4g4oiSdCBhbmQgdC4gT25lIG1pZ2h0IHRo
aW5rIHRoYXQgc2FtcGxpbmcgZXZlcnkKKyAgICAgICAgdCBzZWNvbmRzIGlzIGVub3VnaCAoaS5l
LiwgZHJvcCB0aGUgciBjb21wb25lbnQpIGJ1dCBpdCBpcyBub3Q6IHNwZWNpZmljYWxseSwKKyAg
ICAgICAgaWYgYSBwcm9maWxlciBzYW1wbGVzIGV2ZXJ5IHQgc2Vjb25kcywgdGhlIHNhbXBsaW5n
IHJhdGUgd291bGQgYmUgc3luY2hyb25pemVkCisgICAgICAgIHdpdGggYW55IHByb2dyYW0gb3Ig
c3lzdGVtIGFjdGl2aXR5IHRoYXQgb2NjdXJzIGF0IHJlZ3VsYXIgdGltZSBpbnRlcnZhbHMgWzE3
XS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSB0aHJlYWQgc2NoZWR1bGVyIHN3aXRjaGVz
IGJldHdlZW4gdGhyZWFkcyBldmVyeSAxMG1zIGFuZCBvdXIKKyAgICAgICAgc2FtcGxpbmcgaW50
ZXJ2YWwgd2FzIGFsc28gMTBtcywgdGhlbiB3ZSBtYXkgYWx3YXlzIHRha2Ugc2FtcGxlcyBpbW1l
ZGlhdGVseSBhZnRlcgorICAgICAgICBhIHRocmVhZCBzd2l0Y2guIEJlY2F1c2UgcGVyZm9ybWFu
Y2UgaXMgb2Z0ZW4gZGlmZmVyZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdGhyZWFkCisgICAgICAg
IHN3aXRjaCB0aGFuIGF0IG90aGVyIHBvaW50cyAoZS5nLiwgZHVlIHRvIGNhY2hlIGFuZCBUTEIg
d2FybS11cCBlZmZlY3RzKSB3ZSB3b3VsZAorICAgICAgICBnZXQgYmlhc2VkIGRhdGEuIFRoZSBy
YW5kb20gY29tcG9uZW50LCByLCBndWFyZHMgYWdhaW5zdCBzdWNoIHNpdHVhdGlvbnMuIgorCisg
ICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2Ft
cGxpbmdQcm9maWxlcjo6dGltZXJMb29wKToKKwogMjAxNi0wNi0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1jcHkg
ZG9uZSBmb3IgYWxsb2NhdGluZyBFcnJvciBzdGFja3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjAx
OTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJWTUVudHJ5U2Nv
cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0y
MzMsNyArMjM0LDEzIEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGltZXJMb29wKCkKICAgICAg
ICAgICAgIG1fbGFzdFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihtX3RpbWluZ0ludGVydmFs
IC0gc3RkOjptaW4obV90aW1pbmdJbnRlcnZhbCwgc3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lKSk7
CisgICAgICAgIC8vIFJlYWQgc2VjdGlvbiA2LjIgb2YgdGhpcyBwYXBlciBmb3IgbW9yZSBlbGFi
b3JhdGlvbiBvZiB3aHkgd2UgYWRkIGEgcmFuZG9tCisgICAgICAgIC8vIGZsdWN0dWF0aW9uIGhl
cmUuIFRoZSBtYWluIGlkZWEgaXMgdG8gcHJldmVudCBvdXIgdGltZXIgZnJvbSBiZWluZyBpbiBz
eW5jCisgICAgICAgIC8vIHdpdGggc29tZSBzeXN0ZW0gcHJvY2VzcyBzdWNoIGFzIGEgc2NoZWR1
bGVkIGNvbnRleHQgc3dpdGNoLgorICAgICAgICAvLyBodHRwOi8vcGx2LmNvbG9yYWRvLmVkdS9w
YXBlcnMvbXl0a293aWN6LXBsZGkxMC5wZGYKKyAgICAgICAgZG91YmxlIHJhbmRvbVNpZ25lZE51
bWJlciA9IChyYW5kb21OdW1iZXIoKSAqIDIuMGwpIC0gMS4wbDsgLy8gQSByYW5kb20gbnVtYmVy
IGJldHdlZW4gWy0xLCAxKS4KKyAgICAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyByYW5k
b21GbHVjdHVhdGlvbiA9IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJhbmRvbVNpZ25lZE51bWJlciAqIHN0YXRpY19jYXN0PGRvdWJsZT4obV90aW1pbmdJ
bnRlcnZhbC5jb3VudCgpKSAqIDAuMjBsKSk7CisgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNs
ZWVwX2ZvcihtX3RpbWluZ0ludGVydmFsIC0gc3RkOjptaW4obV90aW1pbmdJbnRlcnZhbCwgc3Rh
Y2tUcmFjZVByb2Nlc3NpbmdUaW1lKSArIHJhbmRvbUZsdWN0dWF0aW9uKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281223</attachid>
            <date>2016-06-13 18:50:02 -0700</date>
            <delta_ts>2016-06-13 19:27:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>3376</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE2LTA2LTEyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSBzYW1wbGluZyBwcm9maWxlciBzaG91bGQgZnVydGhlciBwcm90ZWN0IGl0c2VsZiBhZ2Fp
bnN0IGNlcnRhaW4gZm9ybXMgb2Ygc2FtcGxpbmcgYmlhcyB0aGF0IGFyaXNlIGR1ZSB0byB0aGUg
c2FtcGxpbmcgaW50ZXJ2YWwgYmVpbmcgaW4gc3luYyB3aXRoIHNvbWUgb3RoZXIgc3lzdGVtIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
ODY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
Zmlyc3QgYmVjYW1lIGF3YXJlIG9mIHRoaXMgcHJvYmxlbSB3aGVuIEkgcmVhZCB0aGlzIHBhcGVy
OgorICAgICAgICBodHRwOi8vcGx2LmNvbG9yYWRvLmVkdS9wYXBlcnMvbXl0a293aWN6LXBsZGkx
MC5wZGYKKworICAgICAgICBUbyBwcm92aWRlIGJhY2tncm91bmQgZm9yIHRoaXMgY2hhbmdlLCBJ
J2xsIHF1b3RlIGEgcGFyYWdyYXBoCisgICAgICAgIGZyb20gc2VjdGlvbiA2LjI6CisgICAgICAg
ICJPbmUgc3RhdGljYWxseSBzb3VuZCBtZXRob2QgZm9yIGNvbGxlY3RpbmcgcmFuZG9tIHNhbXBs
ZXMgaXMgdG8gY29sbGVjdCBhCisgICAgICAgIHNhbXBsZSBhdCBldmVyeSB0ICsgciBtaWxsaXNl
Y29uZHMsIHdoZXJlIHQgaXMgdGhlIGRlc2lyZWQgc2FtcGxpbmcgaW50ZXJ2YWwKKyAgICAgICAg
YW5kIHIgaXMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4g4oiSdCBhbmQgdC4gT25lIG1pZ2h0IHRo
aW5rIHRoYXQgc2FtcGxpbmcgZXZlcnkKKyAgICAgICAgdCBzZWNvbmRzIGlzIGVub3VnaCAoaS5l
LiwgZHJvcCB0aGUgciBjb21wb25lbnQpIGJ1dCBpdCBpcyBub3Q6IHNwZWNpZmljYWxseSwKKyAg
ICAgICAgaWYgYSBwcm9maWxlciBzYW1wbGVzIGV2ZXJ5IHQgc2Vjb25kcywgdGhlIHNhbXBsaW5n
IHJhdGUgd291bGQgYmUgc3luY2hyb25pemVkCisgICAgICAgIHdpdGggYW55IHByb2dyYW0gb3Ig
c3lzdGVtIGFjdGl2aXR5IHRoYXQgb2NjdXJzIGF0IHJlZ3VsYXIgdGltZSBpbnRlcnZhbHMgWzE3
XS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSB0aHJlYWQgc2NoZWR1bGVyIHN3aXRjaGVz
IGJldHdlZW4gdGhyZWFkcyBldmVyeSAxMG1zIGFuZCBvdXIKKyAgICAgICAgc2FtcGxpbmcgaW50
ZXJ2YWwgd2FzIGFsc28gMTBtcywgdGhlbiB3ZSBtYXkgYWx3YXlzIHRha2Ugc2FtcGxlcyBpbW1l
ZGlhdGVseSBhZnRlcgorICAgICAgICBhIHRocmVhZCBzd2l0Y2guIEJlY2F1c2UgcGVyZm9ybWFu
Y2UgaXMgb2Z0ZW4gZGlmZmVyZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdGhyZWFkCisgICAgICAg
IHN3aXRjaCB0aGFuIGF0IG90aGVyIHBvaW50cyAoZS5nLiwgZHVlIHRvIGNhY2hlIGFuZCBUTEIg
d2FybS11cCBlZmZlY3RzKSB3ZSB3b3VsZAorICAgICAgICBnZXQgYmlhc2VkIGRhdGEuIFRoZSBy
YW5kb20gY29tcG9uZW50LCByLCBndWFyZHMgYWdhaW5zdCBzdWNoIHNpdHVhdGlvbnMuIgorCisg
ICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2Ft
cGxpbmdQcm9maWxlcjo6dGltZXJMb29wKToKKwogMjAxNi0wNi0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1jcHkg
ZG9uZSBmb3IgYWxsb2NhdGluZyBFcnJvciBzdGFja3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjAx
OTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIlZNRW50cnlTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1JhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0yMzMsNyArMjM0LDEzIEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGlt
ZXJMb29wKCkKICAgICAgICAgICAgIG1fbGFzdFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRp
bWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2Zvciht
X3RpbWluZ0ludGVydmFsIC0gc3RkOjptaW4obV90aW1pbmdJbnRlcnZhbCwgc3RhY2tUcmFjZVBy
b2Nlc3NpbmdUaW1lKSk7CisgICAgICAgIC8vIFJlYWQgc2VjdGlvbiA2LjIgb2YgdGhpcyBwYXBl
ciBmb3IgbW9yZSBlbGFib3JhdGlvbiBvZiB3aHkgd2UgYWRkIGEgcmFuZG9tCisgICAgICAgIC8v
IGZsdWN0dWF0aW9uIGhlcmUuIFRoZSBtYWluIGlkZWEgaXMgdG8gcHJldmVudCBvdXIgdGltZXIg
ZnJvbSBiZWluZyBpbiBzeW5jCisgICAgICAgIC8vIHdpdGggc29tZSBzeXN0ZW0gcHJvY2VzcyBz
dWNoIGFzIGEgc2NoZWR1bGVkIGNvbnRleHQgc3dpdGNoLgorICAgICAgICAvLyBodHRwOi8vcGx2
LmNvbG9yYWRvLmVkdS9wYXBlcnMvbXl0a293aWN6LXBsZGkxMC5wZGYKKyAgICAgICAgZG91Ymxl
IHJhbmRvbVNpZ25lZE51bWJlciA9IChyYW5kb21OdW1iZXIoKSAqIDIuMCkgLSAxLjA7IC8vIEEg
cmFuZG9tIG51bWJlciBiZXR3ZWVuIFstMSwgMSkuCisgICAgICAgIHN0ZDo6Y2hyb25vOjptaWNy
b3NlY29uZHMgcmFuZG9tRmx1Y3R1YXRpb24gPSBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihyYW5kb21TaWduZWROdW1iZXIgKiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1fdGltaW5nSW50ZXJ2YWwuY291bnQoKSkgKiAwLjIwbCkpOworICAgICAgICBzdGQ6OnRo
aXNfdGhyZWFkOjpzbGVlcF9mb3IobV90aW1pbmdJbnRlcnZhbCAtIHN0ZDo6bWluKG1fdGltaW5n
SW50ZXJ2YWwsIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGltZSkgKyByYW5kb21GbHVjdHVhdGlvbik7
CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>