<?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>195148</bug_id>
          
          <creation_ts>2019-02-27 23:29:26 -0800</creation_ts>
          <short_desc>Web Inspector: CPU Usage: Worker thread that dies might stay at a high value forever</short_desc>
          <delta_ts>2019-02-28 16:49:18 -0800</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 Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1510827</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-27 23:29:26 -0800</bug_when>
    <thetext>CPU Usage: Worker thread that dies might stay at a high value forever

Steps to Reproduce:
1. Inspect maps.google.com
2. Reload
  =&gt; If a Worker Thread is sampled high and then dies it may stay around forever at a high value

Notes:
- Need to kill off dead workers in the range</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510828</commentid>
    <comment_count>1</comment_count>
      <attachid>363196</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-27 23:30:27 -0800</bug_when>
    <thetext>Created attachment 363196
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510865</commentid>
    <comment_count>2</comment_count>
      <attachid>363196</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-02-28 00:39:59 -0800</bug_when>
    <thetext>Comment on attachment 363196
[PATCH] Proposed Fix

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:413
&gt; +                let deadWorkers = workersSeenLastRecord.difference(workersSeenCurrentRecord);

Cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510950</commentid>
    <comment_count>3</comment_count>
      <attachid>363196</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-28 09:37:42 -0800</bug_when>
    <thetext>Comment on attachment 363196
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/ChangeLog:10
&gt; +        Handle workers dieing or at least zeroing out between records.

s/dieing/dying

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:304
&gt; +        let workersSeenCurrentRecord = new Set;

Having &quot;record&quot; makes me think that this has something to do with actual timeline records.  I think a name without &quot;record&quot; in it (or one that explains more that the records are what you&apos;re filtering off of, like `workersWithRecentRecords`) would be better.

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:366
&gt; +            let workersSeenLastRecord = workersSeenCurrentRecord;
&gt; +            workersSeenCurrentRecord = new Set;

Rather than try to do some fancy checking of usage numbers, couldn&apos;t you check with `WI.WorkerManager` and see if the `workerId` is still active?  It seems to me that that&apos;s the only way of knowing whether a worker is &quot;dead&quot;.

Are you trying to make it so that alive workers with no activity don&apos;t appear, or that actually dead (`terminate`d) workers don&apos;t appear?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511195</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-28 16:42:06 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #3)
&gt; Comment on attachment 363196 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363196&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/ChangeLog:10
&gt; &gt; +        Handle workers dieing or at least zeroing out between records.
&gt; 
&gt; s/dieing/dying
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:304
&gt; &gt; +        let workersSeenCurrentRecord = new Set;
&gt; 
&gt; Having &quot;record&quot; makes me think that this has something to do with actual
&gt; timeline records.  I think a name without &quot;record&quot; in it (or one that
&gt; explains more that the records are what you&apos;re filtering off of, like
&gt; `workersWithRecentRecords`) would be better.

I&apos;ll go with workersSeen*In*CurrentRecord or workersSeen*In*LastRecord

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:366
&gt; &gt; +            let workersSeenLastRecord = workersSeenCurrentRecord;
&gt; &gt; +            workersSeenCurrentRecord = new Set;
&gt; 
&gt; Rather than try to do some fancy checking of usage numbers, couldn&apos;t you
&gt; check with `WI.WorkerManager` and see if the `workerId` is still active?  It
&gt; seems to me that that&apos;s the only way of knowing whether a worker is &quot;dead&quot;.
&gt; 
&gt; Are you trying to make it so that alive workers with no activity don&apos;t
&gt; appear, or that actually dead (`terminate`d) workers don&apos;t appear?

The timeline range selection might be a period of time in the past where a worker existed, but no longer exist. So checking WorkerManager/TargetManager could be insufficient.

Dropping any worker thread to zero if not seen again is a safe way of handling this regardless of any outside data from the CPU Timeline Records themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511203</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-28 16:48:58 -0800</bug_when>
    <thetext>https://trac.webkit.org/r242243</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511204</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-28 16:49:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/48494364&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363196</attachid>
            <date>2019-02-27 23:30:27 -0800</date>
            <delta_ts>2019-02-28 16:42:10 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>workers-1.patch</filename>
            <type>text/plain</type>
            <size>2754</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGUwNDQ5N2RhNjhjLi5kZjBhM2JkNDVlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDItMjcgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDUFUgVXNhZ2U6IFdvcmtlciB0aHJlYWQgdGhhdCBkaWVzIG1pZ2h0IHN0YXkgYXQgYSBoaWdo
IHZhbHVlIGZvcmV2ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DUFVUaW1lbGluZVZpZXcuanM6CisgICAgICAg
IChDUFVUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIEhhbmRsZSB3b3Jr
ZXJzIGRpZWluZyBvciBhdCBsZWFzdCB6ZXJvaW5nIG91dCBiZXR3ZWVuIHJlY29yZHMuCisKIDIw
MTktMDItMjcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDUFUgVXNhZ2UgVGltZWxpbmUgLSBNYWtlIFRocmVhZHMgc2VjdGlv
biBleHBhbmRhYmxlIC8gY29sbGFwc2FibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5qcwppbmRleCAy
YzA5ZTg3ZjkzOS4uZDU1MjQ4MWZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVUaW1lbGluZVZpZXcuanMKQEAgLTMw
MSw2ICszMDEsNyBAQCBXSS5DUFVUaW1lbGluZVZpZXcgPSBjbGFzcyBDUFVUaW1lbGluZVZpZXcg
ZXh0ZW5kcyBXSS5UaW1lbGluZVZpZXcKIAogICAgICAgICBsZXQgZGF0YVBvaW50cyA9IFtdOwog
ICAgICAgICBsZXQgd29ya2Vyc0RhdGFNYXAgPSBuZXcgTWFwOworICAgICAgICBsZXQgd29ya2Vy
c1NlZW5DdXJyZW50UmVjb3JkID0gbmV3IFNldDsKIAogICAgICAgICBsZXQgbWF4ID0gLUluZmlu
aXR5OwogICAgICAgICBsZXQgbWFpblRocmVhZE1heCA9IC1JbmZpbml0eTsKQEAgLTM2MSw4ICsz
NjIsMTIgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGltZWxpbmVWaWV3IGV4dGVu
ZHMgV0kuVGltZWxpbmVWaWV3CiAgICAgICAgICAgICB3ZWJraXRUaHJlYWRBdmVyYWdlICs9IHdl
YmtpdFRocmVhZFVzYWdlOwogICAgICAgICAgICAgdW5rbm93blRocmVhZEF2ZXJhZ2UgKz0gdW5r
bm93blRocmVhZFVzYWdlOwogCisgICAgICAgICAgICBsZXQgd29ya2Vyc1NlZW5MYXN0UmVjb3Jk
ID0gd29ya2Vyc1NlZW5DdXJyZW50UmVjb3JkOworICAgICAgICAgICAgd29ya2Vyc1NlZW5DdXJy
ZW50UmVjb3JkID0gbmV3IFNldDsKKwogICAgICAgICAgICAgaWYgKHJlY29yZC53b3JrZXJzRGF0
YSAmJiByZWNvcmQud29ya2Vyc0RhdGEubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgZm9yIChs
ZXQge3RhcmdldElkLCB1c2FnZX0gb2YgcmVjb3JkLndvcmtlcnNEYXRhKSB7CisgICAgICAgICAg
ICAgICAgICAgIHdvcmtlcnNTZWVuQ3VycmVudFJlY29yZC5hZGQodGFyZ2V0SWQpOwogICAgICAg
ICAgICAgICAgICAgICBsZXQgd29ya2VyRGF0YSA9IHdvcmtlcnNEYXRhTWFwLmdldCh0YXJnZXRJ
ZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd29ya2VyRGF0YSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgd29ya2VyRGF0YSA9IHsKQEAgLTQwMiw2ICs0MDcsMTYgQEAgV0kuQ1BVVGlt
ZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3
CiAgICAgICAgICAgICAgICAgICAgIHdvcmtlckRhdGEuYXZlcmFnZSArPSB1c2FnZTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENsb3NlIGFueSB3
b3JrZXIgdGhhdCBkaWVkIGJ5IGRyb3BwaW5nIHRvIHplcm8uCisgICAgICAgICAgICBpZiAod29y
a2Vyc1NlZW5MYXN0UmVjb3JkLnNpemUpIHsKKyAgICAgICAgICAgICAgICBsZXQgZGVhZFdvcmtl
cnMgPSB3b3JrZXJzU2Vlbkxhc3RSZWNvcmQuZGlmZmVyZW5jZSh3b3JrZXJzU2VlbkN1cnJlbnRS
ZWNvcmQpOworICAgICAgICAgICAgICAgIGZvciAobGV0IHdvcmtlcklkIG9mIGRlYWRXb3JrZXJz
KSB7CisgICAgICAgICAgICAgICAgICAgIGxldCB3b3JrZXJEYXRhID0gd29ya2Vyc0RhdGFNYXAu
Z2V0KHdvcmtlcklkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmtlckRhdGEuZGF0YVBv
aW50cy5sYXN0VmFsdWUudXNhZ2UgIT09IDApCisgICAgICAgICAgICAgICAgICAgICAgICB3b3Jr
ZXJEYXRhLmRhdGFQb2ludHMucHVzaCh7dGltZSwgdXNhZ2U6IDB9KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBhdmVyYWdlIC89IHZpc2li
bGVSZWNvcmRzLmxlbmd0aDsK
</data>
<flag name="review"
          id="379813"
          type_id="1"
          status="+"
          setter="mattbaker"
    />
          </attachment>
      

    </bug>

</bugzilla>