<?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>69774</bug_id>
          
          <creation_ts>2011-10-10 11:50:18 -0700</creation_ts>
          <short_desc>REGRESSION: High frequency memory warnings cause Safari to hog the CPU doing useless garbage collection</short_desc>
          <delta_ts>2011-10-13 23:28:21 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</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="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>aroben</cc>
    
    <cc>ggaren</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>481043</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-10-10 11:50:18 -0700</bug_when>
    <thetext>In a low memory situation, Mac OS  can start sending a flurry of low memory events. The current memory pressure handling code will always try to free up memory. This can end up with WebKit processes consuming large amounts of CPU bring to free up memory without any real benefit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481049</commentid>
    <comment_count>1</comment_count>
      <attachid>110379</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-10-10 12:04:14 -0700</bug_when>
    <thetext>Created attachment 110379
Proposed patch

This patch throttles low memory events to no more frequent than once every 5 seconds.  It will drop low memory events, but since the original problem is too many events we&apos;ll respond when needed later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481125</commentid>
    <comment_count>2</comment_count>
      <attachid>110379</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-10-10 13:48:57 -0700</bug_when>
    <thetext>Comment on attachment 110379
Proposed patch

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

&gt; Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm:55
&gt; +static const time_t s_secondsBetweenMemoryCleanup = 5;

How was this value chosen? It would be useful to have a comment explaining so that people looking at this in the future know how to evaluate whether this value is still reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481130</commentid>
    <comment_count>3</comment_count>
      <attachid>110379</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-10 13:52:59 -0700</bug_when>
    <thetext>Comment on attachment 110379
Proposed patch

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

&gt;&gt; Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm:55
&gt;&gt; +static const time_t s_secondsBetweenMemoryCleanup = 5;
&gt; 
&gt; How was this value chosen? It would be useful to have a comment explaining so that people looking at this in the future know how to evaluate whether this value is still reasonable.

I&apos;d recomment putting stuff like this into runtime/Heuristics.h.  Then you can name it and also automatically get a story for tuning it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481143</commentid>
    <comment_count>4</comment_count>
      <attachid>110402</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-10-10 14:11:54 -0700</bug_when>
    <thetext>Created attachment 110402
Updated patch with additional comment for the choice of 5 seconds

Given that this change is in WebCore and that the constant is fairly simple, I didn&apos;t feel that it made sense to place it in JSC/runtime/Heuristics.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481271</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-10 16:29:38 -0700</bug_when>
    <thetext>Given my understanding of how the warning works on OS X, even with this patch, under memory pressure, the kernel will still constantly call into WebKit&apos;s GCD source. It&apos;s an improvement to return early, but we could do even better, and avoid the constant calls into WebKit&apos;s GCD source as well.

To get the full benefit, you could unregister the GCD source entirely, and set a timer to re-register it after a constant delay.

I think this improvement is worth it, since your comment mentions &quot;greatly reducing CPU usage&quot;. Without exact numbers I don&apos;t know for sure, but it sounds like your testing showed that this patch didn&apos;t eliminate WebKit CPU usage within the constant window. Unregistering the GCD source would eliminate CPU usage within the constant window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481303</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-10-10 17:04:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Given my understanding of how the warning works on OS X, even with this patch, under memory pressure, the kernel will still constantly call into WebKit&apos;s GCD source. It&apos;s an improvement to return early, but we could do even better, and avoid the constant calls into WebKit&apos;s GCD source as well.
&gt; 
&gt; To get the full benefit, you could unregister the GCD source entirely, and set a timer to re-register it after a constant delay.
&gt; 
&gt; I think this improvement is worth it, since your comment mentions &quot;greatly reducing CPU usage&quot;. Without exact numbers I don&apos;t know for sure, but it sounds like your testing showed that this patch didn&apos;t eliminate WebKit CPU usage within the constant window. Unregistering the GCD source would eliminate CPU usage within the constant window.

&quot;Greatly reduced CPU usage&quot; means WebProcess goes from ~100% to ~8%.  My test is to use the notify event &quot;org.WebKit.lowMemory&quot; instead of the system memory pressure event as this is easier to produce and control.  In a terminal I start &quot;while true; do notifyutil -p org.WebKit.lowMemory; done&quot; and then look at the CPU usage using the activity monitor.  Without the change, the WebProcess uses ~ one CPU (~100%) responding to events.  With the change, it uses between 6-10% of a CPU throwing away events.  The UI process isn&apos;t impacted much, probably since the GC and other memory clean-up can happen within the time between events.

Note that without the change, it takes a long time (tens of seconds) for the WebProcess to catch up, that is after the shell while loop is killed, CPU stays at 100%.  With the change, the WebProcess returns back to pre-test CPU usage (~2% with the windows/tabs I had open) almost immediately.

Note that I typed this response in a Safari with the change while the test was running!  Before the change, Safari is completely unusable with my test.

If we want to unregister and reregister instead of throwing away events, we can do that.  I was just trying to keep the fix simple since this is a corner case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482492</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-12 10:27:02 -0700</bug_when>
    <thetext>I definitely want to acknowledge that your current patch is a big improvement. Based on your numbers, though, it sounds like we&apos;re leaving ~6% on the table (~2% baseline load, ~8% load under notification). I think it&apos;s worth going after that last ~6%.

I want that last ~6% because I don&apos;t think this is a corner case. I think that systems under memory pressure tend to stay that way, as they page out and in different parts of the user&apos;s working set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482900</commentid>
    <comment_count>8</comment_count>
      <attachid>110778</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-10-12 17:34:55 -0700</bug_when>
    <thetext>Created attachment 110778
Patch that cancels event handlers and reinstalls after delay

This patch implements the approach that Geoff recommends.

Using the same artificial test using &quot;while 1 - notifyutil&quot; and the WebProcess fluctuates between 2% and 4% CPU with similar pages loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483555</commentid>
    <comment_count>9</comment_count>
      <attachid>110778</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-13 15:24:07 -0700</bug_when>
    <thetext>Comment on attachment 110778
Patch that cancels event handlers and reinstalls after delay

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

r=me

&gt; Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm:71
&gt; +    if (_timer_event_source) {
&gt; +        dispatch_source_cancel(_timer_event_source);
&gt; +        _timer_event_source = 0;
&gt; +    }

I think this timer cleanup code should go in the timer handler.

If you want, maybe you should add an early return here, so that if the timer is set, and we&apos;re supposed to hold off, we ignore new install calls, which would violate our rate limiting plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483703</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-10-13 18:15:51 -0700</bug_when>
    <thetext>Committed r97433: &lt;http://trac.webkit.org/changeset/97433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483796</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-13 23:28:21 -0700</bug_when>
    <thetext>... and Qt-win buildfix landed in http://trac.webkit.org/changeset/97443</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110379</attachid>
            <date>2011-10-10 12:04:14 -0700</date>
            <delta_ts>2011-10-10 14:11:54 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>69774.patch</filename>
            <type>text/plain</type>
            <size>2893</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MDcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMTAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogSGlnaCBm
cmVxdWVuY3kgbWVtb3J5IHdhcm5pbmdzIGNhdXNlIFNhZmFyaSB0byBob2cgdGhlIENQVSBkb2lu
ZyB1c2VsZXNzIGdhcmJhZ2UgY29sbGVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk3NzQKKworICAgICAgICBUaHJvdHRsZSB0aGUgcHJvY2Vz
c2luZyBvZiBtZW1vcnkgcHJlc3N1cmUgZXZlbnRzIHRvIG5vIG1vcmUgb2Z0ZW4gdGhhbiBvbmNl
IGV2ZXJ5IDUgc2Vjb25kcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKToKKwogMjAxMS0xMC0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBzdGF0aWMgZnVuY3Rpb25zIGluIEhUTUxTZWxl
Y3RFbGVtZW50LmNwcCBtZW1iZXIgZnVuY3Rpb25zIG9mIEhUTUxTZWxlY3RFbGVtZW50IGNsYXNz
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAJKHJldmlzaW9uIDk2ODE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXImIG1lbW9yeVByZXNzdXJlSGFuCiAKIE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkgCiAgICAgOiBtX2luc3RhbGxlZChmYWxz
ZSkKKyAgICAsIG1fbGFzdFJlc3BvbmRUaW1lKDApCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCShyZXZpc2lvbiA5Njgx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25k
VG9NZW1vcnlQcmVzc3VyZSgpOwogCiAgICAgYm9vbCBtX2luc3RhbGxlZDsKKyAgICB0aW1lX3Qg
bV9sYXN0UmVzcG9uZFRpbWU7CiB9OwogIAogLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9i
YWwgbWVtb3J5IHByZXNzdXJlIG9iamVjdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQkocmV2aXNpb24g
OTY4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCiAKIHN0YXRpYyBkaXNwYXRjaF9zb3VyY2VfdCBfY2FjaGVf
ZXZlbnRfc291cmNlID0gMDsKK3N0YXRpYyBjb25zdCB0aW1lX3Qgc19zZWNvbmRzQmV0d2Vlbk1l
bW9yeUNsZWFudXAgPSA1OwogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgp
CiB7CkBAIC03Nyw2ICs3OCwxMyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3Vy
ZSgpCiB7CisgICAgdGltZV90IG5vdyA9IHRpbWUoMCk7CisKKyAgICBpZiAoKG5vdyAtIG1fbGFz
dFJlc3BvbmRUaW1lKSA8IHNfc2Vjb25kc0JldHdlZW5NZW1vcnlDbGVhbnVwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2xhc3RSZXNwb25kVGltZSA9IG5vdzsKKwogICAgIGludCBzYXZlZFBh
Z2VDYWNoZUNhcGFjaXR5ID0gcGFnZUNhY2hlKCktPmNhcGFjaXR5KCk7CiAgICAgcGFnZUNhY2hl
KCktPnNldENhcGFjaXR5KHBhZ2VDYWNoZSgpLT5wYWdlQ291bnQoKS8yKTsKICAgICBwYWdlQ2Fj
aGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110402</attachid>
            <date>2011-10-10 14:11:54 -0700</date>
            <delta_ts>2011-10-12 17:34:55 -0700</delta_ts>
            <desc>Updated patch with additional comment for the choice of 5 seconds</desc>
            <filename>69774-1.patch</filename>
            <type>text/plain</type>
            <size>3064</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MDcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMTAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogSGlnaCBm
cmVxdWVuY3kgbWVtb3J5IHdhcm5pbmdzIGNhdXNlIFNhZmFyaSB0byBob2cgdGhlIENQVSBkb2lu
ZyB1c2VsZXNzIGdhcmJhZ2UgY29sbGVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk3NzQKKworICAgICAgICBUaHJvdHRsZSB0aGUgcHJvY2Vz
c2luZyBvZiBtZW1vcnkgcHJlc3N1cmUgZXZlbnRzIHRvIG5vIG1vcmUgb2Z0ZW4gdGhhbiBvbmNl
IGV2ZXJ5IDUgc2Vjb25kcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKToKKwogMjAxMS0xMC0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBzdGF0aWMgZnVuY3Rpb25zIGluIEhUTUxTZWxl
Y3RFbGVtZW50LmNwcCBtZW1iZXIgZnVuY3Rpb25zIG9mIEhUTUxTZWxlY3RFbGVtZW50IGNsYXNz
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAJKHJldmlzaW9uIDk2ODE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXImIG1lbW9yeVByZXNzdXJlSGFuCiAKIE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkgCiAgICAgOiBtX2luc3RhbGxlZChmYWxz
ZSkKKyAgICAsIG1fbGFzdFJlc3BvbmRUaW1lKDApCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCShyZXZpc2lvbiA5Njgx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25k
VG9NZW1vcnlQcmVzc3VyZSgpOwogCiAgICAgYm9vbCBtX2luc3RhbGxlZDsKKyAgICB0aW1lX3Qg
bV9sYXN0UmVzcG9uZFRpbWU7CiB9OwogIAogLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9i
YWwgbWVtb3J5IHByZXNzdXJlIG9iamVjdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQkocmV2aXNpb24g
OTY4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBkaXNwYXRjaF9zb3VyY2VfdCBfY2FjaGVfZXZlbnRfc291cmNlID0g
MDsKIAorLy8gSWdub3JlIG1lbW9yeSBldmVudHMgcmVjZWl2ZWQgd2l0aGluIDUgc2Vjb25kcyBv
ZiB0aGUgbGFzdCBwcm9jZXNzZWQgZXZlbnQuIAorLy8gVGhpcyB2YWx1ZSBzZWVtcyByZWFzb25h
YmxlIGFuZCB0ZXN0aW5nIHZlcmlmaWVzIHRoYXQgaXQgdGhyb3R0bGVzIGZyZXF1ZW50CisvLyBs
b3cgbWVtb3J5IGV2ZW50cywgZ3JlYXRseSByZWR1Y2luZyBDUFUgdXNhZ2UuCitzdGF0aWMgY29u
c3QgdGltZV90IHNfc2Vjb25kc0JldHdlZW5NZW1vcnlDbGVhbnVwID0gNTsKKwogdm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogewogICAgIHN0YXRpYyBpbnQgbm90aWZ5VG9r
ZW47CkBAIC03Nyw2ICs4MiwxMyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3Vy
ZSgpCiB7CisgICAgdGltZV90IG5vdyA9IHRpbWUoMCk7CisKKyAgICBpZiAoKG5vdyAtIG1fbGFz
dFJlc3BvbmRUaW1lKSA8IHNfc2Vjb25kc0JldHdlZW5NZW1vcnlDbGVhbnVwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2xhc3RSZXNwb25kVGltZSA9IG5vdzsKKwogICAgIGludCBzYXZlZFBh
Z2VDYWNoZUNhcGFjaXR5ID0gcGFnZUNhY2hlKCktPmNhcGFjaXR5KCk7CiAgICAgcGFnZUNhY2hl
KCktPnNldENhcGFjaXR5KHBhZ2VDYWNoZSgpLT5wYWdlQ291bnQoKS8yKTsKICAgICBwYWdlQ2Fj
aGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSk7Cg==
</data>
<flag name="review"
          id="107909"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110778</attachid>
            <date>2011-10-12 17:34:55 -0700</date>
            <delta_ts>2011-10-13 15:24:07 -0700</delta_ts>
            <desc>Patch that cancels event handlers and reinstalls after delay</desc>
            <filename>69774-2.patch</filename>
            <type>text/plain</type>
            <size>5241</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MDcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMTAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogSGlnaCBm
cmVxdWVuY3kgbWVtb3J5IHdhcm5pbmdzIGNhdXNlIFNhZmFyaSB0byBob2cgdGhlIENQVSBkb2lu
ZyB1c2VsZXNzIGdhcmJhZ2UgY29sbGVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk3NzQKKworICAgICAgICBUaHJvdHRsZSB0aGUgcHJvY2Vz
c2luZyBvZiBtZW1vcnkgcHJlc3N1cmUgZXZlbnRzIHRvIG5vIG1vcmUgb2Z0ZW4gdGhhbiBvbmNl
IGV2ZXJ5IDUgc2Vjb25kcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKToKKwogMjAxMS0xMC0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBzdGF0aWMgZnVuY3Rpb25zIGluIEhUTUxTZWxl
Y3RFbGVtZW50LmNwcCBtZW1iZXIgZnVuY3Rpb25zIG9mIEhUTUxTZWxlY3RFbGVtZW50IGNsYXNz
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAJKHJldmlzaW9uIDk2ODE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE3IEBA
IE1lbW9yeVByZXNzdXJlSGFuZGxlciYgbWVtb3J5UHJlc3N1cmVIYW4KIAogTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKSAKICAgICA6IG1faW5zdGFsbGVkKGZh
bHNlKQorICAgICwgbV9sYXN0UmVzcG9uZFRpbWUoMCkKIHsKIH0KIAogI2lmICFQTEFURk9STShN
QUMpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgfHwgZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpIHsg
fQogCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkgeyB9CisKK3ZvaWQg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KKwogdm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKCkgeyB9CiAjZW5kaWYK
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oCShyZXZpc2lvbiA5NjgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9y
eVByZXNzdXJlSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw5IEBAIHB1Ymxp
YzoKICAgICBmcmllbmQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBtZW1vcnlQcmVzc3VyZUhhbmRs
ZXIoKTsKIAogICAgIHZvaWQgaW5zdGFsbCgpOworICAgIHZvaWQgdW5pbnN0YWxsKCk7CisKKyAg
ICB2b2lkIGhvbGRPZmYodW5zaWduZWQpOwogCiBwcml2YXRlOgogICAgIE1lbW9yeVByZXNzdXJl
SGFuZGxlcigpOwpAQCAtNDMsNiArNDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uZFRv
TWVtb3J5UHJlc3N1cmUoKTsKIAogICAgIGJvb2wgbV9pbnN0YWxsZWQ7CisgICAgdGltZV90IG1f
bGFzdFJlc3BvbmRUaW1lOwogfTsKICAKIC8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgZ2xvYmFs
IG1lbW9yeSBwcmVzc3VyZSBvYmplY3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDk2
ODE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsMTQgKzUyLDI0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCiAKIHN0YXRpYyBkaXNwYXRjaF9zb3VyY2VfdCBfY2FjaGVf
ZXZlbnRfc291cmNlID0gMDsKK3N0YXRpYyBkaXNwYXRjaF9zb3VyY2VfdCBfdGltZXJfZXZlbnRf
c291cmNlID0gMDsKK3N0YXRpYyBpbnQgX25vdGlmeVRva2VuOworCisvLyBEaXNhYmxlIG1lbW9y
eSBldmVudCByZWNlcHRpb24gZm9yIDUgc2Vjb25kcyBhZnRlciByZWNlaXZpbmcgYW4gZXZlbnQu
IAorLy8gVGhpcyB2YWx1ZSBzZWVtcyByZWFzb25hYmxlIGFuZCB0ZXN0aW5nIHZlcmlmaWVzIHRo
YXQgaXQgdGhyb3R0bGVzIGZyZXF1ZW50CisvLyBsb3cgbWVtb3J5IGV2ZW50cywgZ3JlYXRseSBy
ZWR1Y2luZyBDUFUgdXNhZ2UuCitzdGF0aWMgY29uc3QgdGltZV90IHNfc2Vjb25kc0JldHdlZW5N
ZW1vcnlDbGVhbnVwID0gNTsKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwo
KQogewotICAgIHN0YXRpYyBpbnQgbm90aWZ5VG9rZW47Ci0KICAgICBpZiAobV9pbnN0YWxsZWQp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChfdGltZXJfZXZlbnRfc291cmNlKSB7CisgICAg
ICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5jZWwoX3RpbWVyX2V2ZW50X3NvdXJjZSk7CisgICAgICAg
IF90aW1lcl9ldmVudF9zb3VyY2UgPSAwOworICAgIH0KKwogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIF9jYWNoZV9ldmVudF9zb3VyY2Ug
PSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1ZNLCAwLCBESVNQ
QVRDSF9WTV9QUkVTU1VSRSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAgICAgICAgIGlm
IChfY2FjaGVfZXZlbnRfc291cmNlKSB7CkBAIC02OSwxNCArNzksNDMgQEAgdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBub3Rp
ZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5IiwgJm5vdGlmeVRva2Vu
LAorICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAm
X25vdGlmeVRva2VuLAogICAgICAgICAgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQp
IHsgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkucmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKTt9KTsK
IAogICAgIG1faW5zdGFsbGVkID0gdHJ1ZTsKIH0KIAordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OnVuaW5zdGFsbCgpCit7CisgICAgaWYgKCFtX2luc3RhbGxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChfY2FjaGVfZXZlbnRfc291cmNlKTsKKyAg
ICBfY2FjaGVfZXZlbnRfc291cmNlID0gMDsKKyAgICBtX2luc3RhbGxlZCA9IGZhbHNlOworICAg
IAorICAgIG5vdGlmeV9jYW5jZWwoX25vdGlmeVRva2VuKTsKK30KKwordm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OmhvbGRPZmYodW5zaWduZWQgc2Vjb25kcykKK3sKKyAgICB1bmluc3RhbGwo
KTsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgICAgIF90aW1lcl9ldmVudF9zb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BB
VENIX1NPVVJDRV9UWVBFX1RJTUVSLCAwLCAwLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsK
KyAgICAgICAgaWYgKF90aW1lcl9ldmVudF9zb3VyY2UpIHsKKyAgICAgICAgICAgIGRpc3BhdGNo
X3NldF9jb250ZXh0KF90aW1lcl9ldmVudF9zb3VyY2UsIHRoaXMpOworICAgICAgICAgICAgZGlz
cGF0Y2hfc291cmNlX3NldF90aW1lcihfdGltZXJfZXZlbnRfc291cmNlLCBkaXNwYXRjaF90aW1l
KERJU1BBVENIX1RJTUVfTk9XLCBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSwgRElTUEFUQ0hfVElN
RV9GT1JFVkVSLCAxICogc19zZWNvbmRzQmV0d2Vlbk1lbW9yeUNsZWFudXApOworICAgICAgICAg
ICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKF90aW1lcl9ldmVudF9zb3VyY2Us
IF57IG1lbW9yeVByZXNzdXJlSGFuZGxlcigpLmluc3RhbGwoKTt9KTsKKyAgICAgICAgICAgIGRp
c3BhdGNoX3Jlc3VtZShfdGltZXJfZXZlbnRfc291cmNlKTsKKyAgICAgICAgfQorICAgIH0pOwor
fQorCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUo
KQogeworICAgIGhvbGRPZmYoc19zZWNvbmRzQmV0d2Vlbk1lbW9yeUNsZWFudXApOworCiAgICAg
aW50IHNhdmVkUGFnZUNhY2hlQ2FwYWNpdHkgPSBwYWdlQ2FjaGUoKS0+Y2FwYWNpdHkoKTsKICAg
ICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkocGFnZUNhY2hlKCktPnBhZ2VDb3VudCgpLzIpOwog
ICAgIHBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eShzYXZlZFBhZ2VDYWNoZUNhcGFjaXR5KTsK
</data>
<flag name="review"
          id="108381"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>