<?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>227001</bug_id>
          
          <creation_ts>2021-06-14 16:56:33 -0700</creation_ts>
          <short_desc>Too much CPU time is spent under MemoryPressureHandler::currentMemoryUsagePolicy()</short_desc>
          <delta_ts>2021-06-21 14:38:07 -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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>nham</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769626</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-14 16:56:33 -0700</bug_when>
    <thetext>Too much CPU time is spent under MemoryPressureHandler::currentMemoryUsagePolicy().

Looking at profiles of our WebContent processes, we frequently see traces like these:
Sample Count, Samples %, Normalized CPU %, Symbol
31, 0.0%, 0.0%, WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags() (in WebCore)
30, 0.0%, 0.0%,     WTF::MemoryPressureHandler::currentMemoryUsagePolicy() (in JavaScriptCore)
30, 0.0%, 0.0%,         task_info (in libsystem_kernel.dylib)

It is a decent amount of samples and shows several times per process.

We should try and minimize calls to WTF::MemoryPressureHandler::currentMemoryUsagePolicy() to reduce CPU usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769689</commentid>
    <comment_count>1</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-06-14 21:48:48 -0700</bug_when>
    <thetext>Maybe we should just ditch computing the memory footprint on every call and map MemoryUsagePolicy to OS memory pressure levels (e.g. unrestricted =&gt; normal pressure, conservative =&gt; warning pressure, strict =&gt; critical pressure). Then we could just rely on the OS memory pressure notification handler to update MemoryUsagePolicy.

I guess the other obvious thing to do here is to cache the memoryFootprint for X seconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771434</commentid>
    <comment_count>2</comment_count>
      <attachid>431904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 13:55:08 -0700</bug_when>
    <thetext>Created attachment 431904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771438</commentid>
    <comment_count>3</comment_count>
      <attachid>431904</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-21 14:03:22 -0700</bug_when>
    <thetext>Comment on attachment 431904
Patch

10s seems too long. Maybe 1s or 2s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771439</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-21 14:03:46 -0700</bug_when>
    <thetext>Or we could do it once per rendering update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771440</commentid>
    <comment_count>5</comment_count>
      <attachid>431906</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 14:06:02 -0700</bug_when>
    <thetext>Created attachment 431906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771443</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-21 14:08:23 -0700</bug_when>
    <thetext>Can we pick the delay based on what it would take to make the % time in a representative profile negligible?

In the snippet posted here, the % time is already 0.0% (rounded, I assume), so I&apos;m not sure any delay would be justified.

To say out loud what is perhaps implicit so far: memory pressure can change rapidly, so there is some benefit to responding as quickly as possible (but not so quickly that we waste CPU).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771445</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-21 14:09:24 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Can we pick the delay based on what it would take to make the % time in a
&gt; representative profile negligible?
&gt; 
&gt; In the snippet posted here, the % time is already 0.0% (rounded, I assume),
&gt; so I&apos;m not sure any delay would be justified.
&gt; 
&gt; To say out loud what is perhaps implicit so far: memory pressure can change
&gt; rapidly, so there is some benefit to responding as quickly as possible (but
&gt; not so quickly that we waste CPU).

I suspect that the only cases where it&apos;s non-negligible are those where there are many forced layouts per rendering update. So once per rendering update feels right to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771446</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 14:09:32 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Can we pick the delay based on what it would take to make the % time in a
&gt; representative profile negligible?
&gt; 
&gt; In the snippet posted here, the % time is already 0.0% (rounded, I assume),
&gt; so I&apos;m not sure any delay would be justified.

This shows many times per profile. Not sure how to aggregate all the calls in the profiler.

&gt; 
&gt; To say out loud what is perhaps implicit so far: memory pressure can change
&gt; rapidly, so there is some benefit to responding as quickly as possible (but
&gt; not so quickly that we waste CPU).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771447</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 14:12:24 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Geoffrey Garen from comment #6)
&gt; &gt; Can we pick the delay based on what it would take to make the % time in a
&gt; &gt; representative profile negligible?
&gt; &gt; 
&gt; &gt; In the snippet posted here, the % time is already 0.0% (rounded, I assume),
&gt; &gt; so I&apos;m not sure any delay would be justified.
&gt; 
&gt; This shows many times per profile. Not sure how to aggregate all the calls
&gt; in the profiler.
&gt; 
&gt; &gt; 
&gt; &gt; To say out loud what is perhaps implicit so far: memory pressure can change
&gt; &gt; rapidly, so there is some benefit to responding as quickly as possible (but
&gt; &gt; not so quickly that we waste CPU).

If the point is to respond to memory pressure, then we have the memory pressure warning/signal for that. This code relies on a certain % of the memory being used, which is not the same as memory pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771450</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-21 14:15:45 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; (In reply to Geoffrey Garen from comment #6)
&gt; &gt; &gt; Can we pick the delay based on what it would take to make the % time in a
&gt; &gt; &gt; representative profile negligible?
&gt; &gt; &gt; 
&gt; &gt; &gt; In the snippet posted here, the % time is already 0.0% (rounded, I assume),
&gt; &gt; &gt; so I&apos;m not sure any delay would be justified.
&gt; &gt; 
&gt; &gt; This shows many times per profile. Not sure how to aggregate all the calls
&gt; &gt; in the profiler.
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; To say out loud what is perhaps implicit so far: memory pressure can change
&gt; &gt; &gt; rapidly, so there is some benefit to responding as quickly as possible (but
&gt; &gt; &gt; not so quickly that we waste CPU).
&gt; 
&gt; If the point is to respond to memory pressure, then we have the memory
&gt; pressure warning/signal for that. This code relies on a certain % of the
&gt; memory being used, which is not the same as memory pressure.

And this threshold appears to be 33% of RAM size of macOS and 50% of RAM size on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771458</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-21 14:36:34 -0700</bug_when>
    <thetext>Committed r279084 (239003@main): &lt;https://commits.webkit.org/239003@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431906.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771459</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-21 14:38:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/79581141&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431904</attachid>
            <date>2021-06-21 13:55:08 -0700</date>
            <delta_ts>2021-06-21 14:06:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227001-20210621135507.patch</filename>
            <type>text/plain</type>
            <size>2334</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYzMzM2NmNmNGZlZDUw
YzBlZWZhYzhjOGQ5ZDE4ZTk4OTA2ZDRmMi4uZjMyMWYwNzBjNGFmZDM2OWU0NzQwNzMwMTI4MTAz
ZTIzOGE1NGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVG9vIG11Y2ggQ1BVIHRpbWUg
aXMgc3BlbnQgdW5kZXIgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJyZW50TWVtb3J5VXNhZ2VQ
b2xpY3koKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3MDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSBpdCBzbyB0aGF0IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQ
b2xpY3koKSBxdWVyaWVzIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Y3VycmVudE1lbW9yeVVzYWdl
UG9saWN5KCkKKyAgICAgICAgYXQgbW9zdCBvbmNlIGV2ZXJ5IDEwIHNlY29uZHMgZ2l2ZW4gdGhh
dCB0aGUgY2FsbCBpcyBleHBlbnNpdmUuIEl0IGNhbiBjdXJyZW50bHkgZ2V0IGNhbGxlZCBzZXZl
cmFsIHRpbWVzIGEgc2Vjb25kIGFuZAorICAgICAgICBzaG93cyBvbiBDUFUgcHJvZmlsZXMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3kp
OgorCiAyMDIxLTA2LTIxICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Q1NTT00gdGVzdCBmb3Igc2VyaWFsaXppbmcgZm9udC12YXJpYW50IGZhaWxzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDEx
YzlmZjdhZDRlYjNmZTFlMmIxMTg3MGQ5NDI4NTI4ZGZlZTU1ZTYuLmZlM2E3Y2ZmZTI5NDBiNmZk
NTU4NWNhN2VjYjRiNTAxZDU0YjZjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00ODUsOCArNDg1LDE2IEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ1BvbGljeSgpCiAgICAgICAg
IHJldHVybiBtX2NvbXBvc2l0aW5nUG9saWN5ICE9IGN1cnJlbnRQb2xpY3k7CiAgICAgfQogICAg
IAotICAgIGF1dG8gbWVtb3J5UG9saWN5ID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJyZW50
TWVtb3J5VXNhZ2VQb2xpY3koKTsKLSAgICBtX2NvbXBvc2l0aW5nUG9saWN5ID0gbWVtb3J5UG9s
aWN5ID09IFdURjo6TWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZCA/IENvbXBvc2l0aW5n
UG9saWN5OjpOb3JtYWwgOiBDb21wb3NpdGluZ1BvbGljeTo6Q29uc2VydmF0aXZlOworICAgIHN0
YXRpYyBhdXRvIGNhY2hlZE1lbW9yeVBvbGljeSA9IFdURjo6TWVtb3J5VXNhZ2VQb2xpY3k6OlVu
cmVzdHJpY3RlZDsKKyAgICBzdGF0aWMgTW9ub3RvbmljVGltZSBjYWNoZWRNZW1vcnlQb2xpY3lU
aW1lOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBtZW1vcnlQb2xpY3lDYWNoaW5nRHVyYXRp
b24gPSAxMF9zOworICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgaWYg
KG5vdyAtIGNhY2hlZE1lbW9yeVBvbGljeVRpbWUgPiBtZW1vcnlQb2xpY3lDYWNoaW5nRHVyYXRp
b24pIHsKKyAgICAgICAgY2FjaGVkTWVtb3J5UG9saWN5ID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKKyAgICAgICAgY2FjaGVkTWVtb3J5UG9saWN5
VGltZSA9IG5vdzsKKyAgICB9CisKKyAgICBtX2NvbXBvc2l0aW5nUG9saWN5ID0gY2FjaGVkTWVt
b3J5UG9saWN5ID09IFdURjo6TWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZCA/IENvbXBv
c2l0aW5nUG9saWN5OjpOb3JtYWwgOiBDb21wb3NpdGluZ1BvbGljeTo6Q29uc2VydmF0aXZlOwog
ICAgIHJldHVybiBtX2NvbXBvc2l0aW5nUG9saWN5ICE9IGN1cnJlbnRQb2xpY3k7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431906</attachid>
            <date>2021-06-21 14:06:02 -0700</date>
            <delta_ts>2021-06-21 14:36:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227001-20210621140601.patch</filename>
            <type>text/plain</type>
            <size>2330</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYzMzM2NmNmNGZlZDUw
YzBlZWZhYzhjOGQ5ZDE4ZTk4OTA2ZDRmMi4uMDhhNjRlOWJhNWRmODA5OWUwNDJmOTcwZTllZDFh
OTUyOGYxODAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVG9vIG11Y2ggQ1BVIHRpbWUg
aXMgc3BlbnQgdW5kZXIgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJyZW50TWVtb3J5VXNhZ2VQ
b2xpY3koKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3MDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIE1h
a2UgaXQgc28gdGhhdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nUG9s
aWN5KCkgcXVlcmllcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmN1cnJlbnRNZW1vcnlVc2FnZVBv
bGljeSgpCisgICAgICAgIGF0IG1vc3Qgb25jZSBldmVyeSAyIHNlY29uZHMgZ2l2ZW4gdGhhdCB0
aGUgY2FsbCBpcyBleHBlbnNpdmUuIEl0IGNhbiBjdXJyZW50bHkgZ2V0IGNhbGxlZCBzZXZlcmFs
IHRpbWVzIGEgc2Vjb25kIGFuZAorICAgICAgICBzaG93cyBvbiBDUFUgcHJvZmlsZXMuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3kpOgor
CiAyMDIxLTA2LTIxICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ1NT
T00gdGVzdCBmb3Igc2VyaWFsaXppbmcgZm9udC12YXJpYW50IGZhaWxzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDExYzlm
ZjdhZDRlYjNmZTFlMmIxMTg3MGQ5NDI4NTI4ZGZlZTU1ZTYuLmViZWI1ZTE2YmNkMTY2OWZiZTJm
MWM1YWE5ZDM1ODE4NzQzMjIwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00ODUsOCArNDg1LDE2IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ1BvbGljeSgpCiAgICAgICAgIHJl
dHVybiBtX2NvbXBvc2l0aW5nUG9saWN5ICE9IGN1cnJlbnRQb2xpY3k7CiAgICAgfQogICAgIAot
ICAgIGF1dG8gbWVtb3J5UG9saWN5ID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJyZW50TWVt
b3J5VXNhZ2VQb2xpY3koKTsKLSAgICBtX2NvbXBvc2l0aW5nUG9saWN5ID0gbWVtb3J5UG9saWN5
ID09IFdURjo6TWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZCA/IENvbXBvc2l0aW5nUG9s
aWN5OjpOb3JtYWwgOiBDb21wb3NpdGluZ1BvbGljeTo6Q29uc2VydmF0aXZlOworICAgIHN0YXRp
YyBhdXRvIGNhY2hlZE1lbW9yeVBvbGljeSA9IFdURjo6TWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVz
dHJpY3RlZDsKKyAgICBzdGF0aWMgTW9ub3RvbmljVGltZSBjYWNoZWRNZW1vcnlQb2xpY3lUaW1l
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBtZW1vcnlQb2xpY3lDYWNoaW5nRHVyYXRpb24g
PSAyX3M7CisgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBpZiAobm93
IC0gY2FjaGVkTWVtb3J5UG9saWN5VGltZSA+IG1lbW9yeVBvbGljeUNhY2hpbmdEdXJhdGlvbikg
eworICAgICAgICBjYWNoZWRNZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmN1
cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOworICAgICAgICBjYWNoZWRNZW1vcnlQb2xpY3lUaW1l
ID0gbm93OworICAgIH0KKworICAgIG1fY29tcG9zaXRpbmdQb2xpY3kgPSBjYWNoZWRNZW1vcnlQ
b2xpY3kgPT0gV1RGOjpNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkID8gQ29tcG9zaXRp
bmdQb2xpY3k6Ok5vcm1hbCA6IENvbXBvc2l0aW5nUG9saWN5OjpDb25zZXJ2YXRpdmU7CiAgICAg
cmV0dXJuIG1fY29tcG9zaXRpbmdQb2xpY3kgIT0gY3VycmVudFBvbGljeTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>