<?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>115147</bug_id>
          
          <creation_ts>2013-04-24 21:14:07 -0700</creation_ts>
          <short_desc>Stack guards are too conservative</short_desc>
          <delta_ts>2013-04-25 15:16:27 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>881071</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-24 21:14:07 -0700</bug_when>
    <thetext>Stack guards are too conservative</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881072</commentid>
    <comment_count>1</comment_count>
      <attachid>199616</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-24 21:15:39 -0700</bug_when>
    <thetext>Created attachment 199616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881074</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-24 21:17:56 -0700</bug_when>
    <thetext>Attachment 199616 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/interpreter/Interpreter.cpp:122:  DEFAULT_REQUIRED_STACK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:123:  DEFAULT_MINIMUM_USEABLE_STACK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 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>881079</commentid>
    <comment_count>3</comment_count>
      <attachid>199616</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-24 22:19:35 -0700</bug_when>
    <thetext>Comment on attachment 199616
Patch

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

Would be good to explain what motivated these new limits, so we don&apos;t make the same mistake twice.

&gt;&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:122
&gt;&gt; +    const size_t DEFAULT_REQUIRED_STACK = 256 * 1024;
&gt; 
&gt; DEFAULT_REQUIRED_STACK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]

I think we should just remove DEFAULT_REQUIRED_STACK entirely -- it&apos;s very weird to have two different minimum values. In truth, the smaller minimum is the bottom line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881099</commentid>
    <comment_count>4</comment_count>
      <attachid>199616</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-04-24 23:35:33 -0700</bug_when>
    <thetext>Comment on attachment 199616
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:122
&gt;&gt;&gt; +    const size_t DEFAULT_REQUIRED_STACK = 256 * 1024;
&gt;&gt; 
&gt;&gt; DEFAULT_REQUIRED_STACK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
&gt; 
&gt; I think we should just remove DEFAULT_REQUIRED_STACK entirely -- it&apos;s very weird to have two different minimum values. In truth, the smaller minimum is the bottom line.

Just to clarify, DEFAULT_REQUIRED_STACK was calculated based on an estimated worst case recursion in the rendering / layout path.  Unfortunately, I did not retain the details of that calculation, and the details have long been purged from my memory.  The purpose of DEFAULT_REQUIRED_STACK is so that JS code does not recurse so deeply that there isn’t room left for the native code to do its worst case recursion.  Hence, its value can be quite large because of the possible deep recursion in native code (WebCore side). 

And because DEFAULT_REQUIRED_STACK can be quite large, we need to make sure JS code gets at least some sane minimum amount of stack space it is allowed to run in ... this is in case the total physical stack size is not much bigger or even less than DEFAULT_REQUIRED_STACK.  Hence, DEFAULT_MINIMUM_USEABLE_STACK is there to provide for JS code’s needs.

Now, if we have stack checks in native code so that we can detect imminent stack overflows before it recurses too deep, then we can significantly reduce DEFAULT_REQUIRED_STACK at that time, and perhaps even get rid of it as Geoff suggested.  DEFAULT_REQUIRED_STACK only needs to be the worst case stack usage between 2 consecutive native stack checks (be it between 2 entries into the interpreter, between 2 stack check points in recursing native code, or between entry into the interpreter and the nearest stack check point in native code).

But for now, since we don’t have native stack checks in WebCore where deep recursion can occur, reducing DEFAULT_REQUIRED_STACK effectively increases the probability that native code can overflow the stack ... not that what we had a full proof guard against this before.  Anyway, just FYI, so you&apos;ll understand what these values mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881288</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-25 09:02:21 -0700</bug_when>
    <thetext>&gt; Just to clarify, DEFAULT_REQUIRED_STACK was calculated based on an estimated worst case recursion in the rendering / layout path.

Yes, I understand that.

My criticism is that, when DEFAULT_REQUIRED_STACK is larger than the stack&apos;s size, the code tries again at DEFAULT_MINIMUM_USEABLE_STACK. This means that DEFAULT_MINIMUM_USEABLE_STACK is the only true limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881296</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-04-25 09:20:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Just to clarify, DEFAULT_REQUIRED_STACK was calculated based on an estimated worst case recursion in the rendering / layout path.
&gt; 
&gt; Yes, I understand that.
&gt; 
&gt; My criticism is that, when DEFAULT_REQUIRED_STACK is larger than the stack&apos;s size, the code tries again at DEFAULT_MINIMUM_USEABLE_STACK. This means that DEFAULT_MINIMUM_USEABLE_STACK is the only true limit.

That’s only always true.  Let me illustrate with some specific examples:

Using the original values of DEFAULT_REQUIRED_STACK of 1M and DEFAULT_MINIMUM_USEABLE_STACK of 128K, here are some scenarios:


    Stack size  Stack Limit
1. 128K         128K           // DEFAULT_MINIMUM_USEABLE_STACK takes effect
2. 256K         128K           // DEFAULT_MINIMUM_USEABLE_STACK takes effect
3. 1M            128K           // DEFAULT_MINIMUM_USEABLE_STACK takes effect
4. 2M            1.875M       // DEFAULT_REQUIRED_STACK  takes effect
5. 3M            2.875M       // DEFAULT_REQUIRED_STACK  takes effect

DEFAULT_REQUIRED_STACK allows us to use more stack space if its available.  Are you suggesting that we should limit stack usage to only DEFAULT_MINIMUM_USEABLE_STACK even if we have more stack space available?  I don’t agree with that.  As a platform, if the user configures the stack size to be large, I think we should allow them to use it.  The minimum value is needed only because DEFAULT_REQUIRED_STACK is very conservative.

The ideal situation would be to have native stack check points in place, and being able to set a DEFAULT_REQUIRED_STACK that is more reasonable (presumably in 10s if Ks).  When we have that, then we can do away with DEFAULT_MINIMUM_USEABLE_STACK altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881328</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-25 10:03:26 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; &gt; Just to clarify, DEFAULT_REQUIRED_STACK was calculated based on an estimated worst case recursion in the rendering / layout path.
&gt; &gt; 
&gt; &gt; Yes, I understand that.
&gt; &gt; 
&gt; &gt; My criticism is that, when DEFAULT_REQUIRED_STACK is larger than the stack&apos;s size, the code tries again at DEFAULT_MINIMUM_USEABLE_STACK. This means that DEFAULT_MINIMUM_USEABLE_STACK is the only true limit.
&gt; 
&gt; That’s only always true.  Let me illustrate with some specific examples:
&gt; 
&gt; Using the original values of DEFAULT_REQUIRED_STACK of 1M and DEFAULT_MINIMUM_USEABLE_STACK of 128K, here are some scenarios:
&gt; 
&gt; 
&gt;     Stack size  Stack Limit
&gt; 1. 128K         128K           // DEFAULT_MINIMUM_USEABLE_STACK takes effect
&gt; 2. 256K         128K           // DEFAULT_MINIMUM_USEABLE_STACK takes effect
&gt; 3. 1M            128K           // DEFAULT_MINIMUM_USEABLE_STACK takes effect
&gt; 4. 2M            1.875M       // DEFAULT_REQUIRED_STACK  takes effect
&gt; 5. 3M            2.875M       // DEFAULT_REQUIRED_STACK  takes effect
&gt; 
&gt; DEFAULT_REQUIRED_STACK allows us to use more stack space if its available.  Are you suggesting that we should limit stack usage to only DEFAULT_MINIMUM_USEABLE_STACK even if we have more stack space available?  I don’t agree with that.  As a platform, if the user configures the stack size to be large, I think we should allow them to use it.  The minimum value is needed only because DEFAULT_REQUIRED_STACK is very conservative.
&gt; 
&gt; The ideal situation would be to have native stack check points in place, and being able to set a DEFAULT_REQUIRED_STACK that is more reasonable (presumably in 10s if Ks).  When we have that, then we can do away with DEFAULT_MINIMUM_USEABLE_STACK altogether.

Okay, i find this code incredibly hard to follow.

The _only_ thing that matters is the amount of stack left, nothing else.  The current terminology is inverted from what makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881482</commentid>
    <comment_count>8</comment_count>
      <attachid>199732</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-25 12:10:24 -0700</bug_when>
    <thetext>Created attachment 199732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881486</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-25 12:12:08 -0700</bug_when>
    <thetext>&lt;rdar://13098540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881491</commentid>
    <comment_count>10</comment_count>
      <attachid>199732</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-25 12:19:33 -0700</bug_when>
    <thetext>Comment on attachment 199732
Patch

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

r=me

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:128
&gt; +    // These sizes were derived from the stack usage of a number of sites when
&gt; +    // layout occurs when we&apos;ve already consumed most of the C stack.

I thought we just measured the stack usage of layout in WebCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881520</commentid>
    <comment_count>11</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-25 12:59:28 -0700</bug_when>
    <thetext>Committed r149136: &lt;http://trac.webkit.org/changeset/149136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881573</commentid>
    <comment_count>12</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-25 15:11:47 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881574</commentid>
    <comment_count>13</comment_count>
      <attachid>199753</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-25 15:11:48 -0700</bug_when>
    <thetext>Created attachment 199753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881576</commentid>
    <comment_count>14</comment_count>
      <attachid>199753</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-04-25 15:15:20 -0700</bug_when>
    <thetext>Comment on attachment 199753
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881577</commentid>
    <comment_count>15</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-25 15:16:27 -0700</bug_when>
    <thetext>Committed r149146: &lt;http://trac.webkit.org/changeset/149146&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199616</attachid>
            <date>2013-04-24 21:15:39 -0700</date>
            <delta_ts>2013-04-25 12:10:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115147-20130424211501.patch</filename>
            <type>text/plain</type>
            <size>1600</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MmE1ZjcyMzBiNWJjOTc2YjM5MDY3NDY3MzdjMDgzOTRlMTU1YzBkLi5hYmQ0NWRkMDk0YmIwMzM4
NDFlZjZhYmY3NDIwYzY4M2QzYjZmNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMy0wNC0yNCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YWNrIGd1YXJkcyBhcmUgdG9vIGNvbnNlcnZhdGl2ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MTQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmYXVsdCBzdGFjayBndWFyZHMg
YXJlIGN1cnJlbnRseSBmYXIgbW9yZSBjb25zZXJ2YXRpdmUgdGhhbgorICAgICAgICB0aGV5IG5l
ZWQgdG8gYmUuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpTdGFja1BvbGljeTo6U3RhY2tQb2xpY3kpOgorCiAyMDEz
LTA0LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY2lh
bCB0aHVua3MgZm9yIG1hdGggZnVuY3Rpb25zIHNob3VsZCB3b3JrIG9uIEFSTXY3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBk
ZjM4OTczZDRhNjNkZjdkNDljNWJiOWNiNjVhZDk3YWEyNGZkZDZkLi5jNTIwZjA2YTg3OTNiMDg0
MjE0MTBiY2Q1OWUxZjFjNzgzY2VlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTExOSw4ICsxMTksOCBAQCBJbnRlcnBy
ZXRlcjo6U3RhY2tQb2xpY3k6OlN0YWNrUG9saWN5KEludGVycHJldGVyJiBpbnRlcnByZXRlciwg
Y29uc3QgU3RhY2tCb3VuZAogewogICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RhY2suc2l6ZSgp
OwogCi0gICAgY29uc3Qgc2l6ZV90IERFRkFVTFRfUkVRVUlSRURfU1RBQ0sgPSAxMDI0ICogMTAy
NDsKLSAgICBjb25zdCBzaXplX3QgREVGQVVMVF9NSU5JTVVNX1VTRUFCTEVfU1RBQ0sgPSAxMjgg
KiAxMDI0OworICAgIGNvbnN0IHNpemVfdCBERUZBVUxUX1JFUVVJUkVEX1NUQUNLID0gMjU2ICog
MTAyNDsKKyAgICBjb25zdCBzaXplX3QgREVGQVVMVF9NSU5JTVVNX1VTRUFCTEVfU1RBQ0sgPSA2
NCAqIDEwMjQ7CiAgICAgY29uc3Qgc2l6ZV90IERFRkFVTFRfRVJST1JfTU9ERV9SRVFVSVJFRF9T
VEFDSyA9IDMyICogMTAyNDsKIAogICAgIC8vIEhlcmUncyB0aGUgcG9saWN5IGluIGEgbnV0c2hl
bGw6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199732</attachid>
            <date>2013-04-25 12:10:24 -0700</date>
            <delta_ts>2013-04-25 15:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115147-20130425120945.patch</filename>
            <type>text/plain</type>
            <size>5540</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODM0MzYxODBmOTM3YmE5N2QwZGJlNzVkMjhmMmM1NmRhN2ZlOGMyLi5hNGZhNTg4ZTE0YzcyZTJk
NThhODNhZmMwYjczMzFjMDZmYjlmMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxMy0wNC0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgog
CisgICAgICAgIFN0YWNrIGd1YXJkcyBhcmUgdG9vIGNvbnNlcnZhdGl2ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MTQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBsaW1pdHMgYW5k
IHNpbXBsaWZ5IHRoZSBkZWNpc2lvbiBtYWtpbmcuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpTdGFja1BvbGljeTo6
U3RhY2tQb2xpY3kpOgorCisyMDEzLTA0LTI1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5j
b20+CisKICAgICAgICAgTWFrZSBjaGVja1N5bnRheCB0YWtlIGEgVk0gaW5zdGVhZCBvZiBhbiBF
eGVjU3RhdGUKIAogICAgICAgICBSUz1UaW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGRmMzg5NzNkNGE2M2RmN2Q0OWM1YmI5
Y2I2NWFkOTdhYTI0ZmRkNmQuLjk0NzA1MTFiMzFkNzM1ZDgzZTg3MmY4NDc1YmMyYTc1YjI0OGQw
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtMTE5LDgyICsxMTksMjAgQEAgSW50ZXJwcmV0ZXI6OlN0YWNrUG9saWN5OjpT
dGFja1BvbGljeShJbnRlcnByZXRlciYgaW50ZXJwcmV0ZXIsIGNvbnN0IFN0YWNrQm91bmQKIHsK
ICAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IHN0YWNrLnNpemUoKTsKIAotICAgIGNvbnN0IHNpemVf
dCBERUZBVUxUX1JFUVVJUkVEX1NUQUNLID0gMTAyNCAqIDEwMjQ7Ci0gICAgY29uc3Qgc2l6ZV90
IERFRkFVTFRfTUlOSU1VTV9VU0VBQkxFX1NUQUNLID0gMTI4ICogMTAyNDsKLSAgICBjb25zdCBz
aXplX3QgREVGQVVMVF9FUlJPUl9NT0RFX1JFUVVJUkVEX1NUQUNLID0gMzIgKiAxMDI0OwotCi0g
ICAgLy8gSGVyZSdzIHRoZSBwb2xpY3kgaW4gYSBudXRzaGVsbDoKLSAgICAvLwotICAgIC8vIDEu
IElmIHdlIGhhdmUgYSBsYXJnZSBzdGFjaywgbGV0IEpTIHVzZSBhcyBtdWNoIHN0YWNrIGFzIHBv
c3NpYmxlCi0gICAgLy8gICAgYnV0IHJlcXVpcmUgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IERFRkFV
TFRfUkVRVUlSRURfU1RBQ0sgY2FwYWNpdHkKLSAgICAvLyAgICByZW1haW5pbmcgb24gdGhlIHN0
YWNrOgotICAgIC8vCi0gICAgLy8gICAgc3RhY2sgZ3Jvd3MgdGhpcyB3YXkgLS0+ICAgCi0gICAg
Ly8gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0gICAgLy8gICAgfCAgICAgICAgIC4uLiB8IDwtLSBERUZBVUxUX1JFUVVJUkVEX1NU
QUNLIC0tPiB8IC4uLgotICAgIC8vICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vICAgIF4gICAgICAgICAgICAgXgotICAg
IC8vICAgIHN0YXJ0ICAgICAgICAgY3VycmVudCBzcAotICAgIC8vCi0gICAgLy8gMi4gSW4gZXZl
bnQgdGhhdCB3ZSdyZSByZS1lbnRlcmluZyB0aGUgaW50ZXJwcmV0ZXIgdG8gaGFuZGxlCi0gICAg
Ly8gICAgZXhjZXB0aW9ucyAoaW4gZXJyb3IgbW9kZSksIHdlJ2xsIGJlIGEgbGl0dGxlIG1vcmUg
Z2VuZXJvdXMgYW5kCi0gICAgLy8gICAgcmVxdWlyZSBsZXNzIHN0YWNrIGNhcGFjaXR5IGZvciB0
aGUgaW50ZXJwcmV0ZXIgdG8gYmUgcmUtZW50ZXJlZC4KLSAgICAvLwotICAgIC8vICAgIFRoaXMg
aXMgbmVlZGVkIGJlY2F1c2Ugd2UgbWF5IGhhdmUganVzdCBkZXRlY3RlZCBhbiBlbWluZW50IHN0
YWNrCi0gICAgLy8gICAgb3ZlcmZsb3cgYmFzZWQgb24gdGhlIG5vcm1hbGx5IGNvbXB1dGVkIHJl
cXVpcmVkIHN0YWNrIGNhcGFjaXR5LgotICAgIC8vICAgIEhvd2V2ZXIsIHRoZSBub3JtYWwgcmVx
dWlyZWQgY2FwYWNpdHkgZmFyIGV4Y2VlZHMgd2hhdCBpcyBuZWVkZWQKLSAgICAvLyAgICBmb3Ig
ZXhjZXB0aW9uIGhhbmRsaW5nIHdvcmsuIEhlbmNlLCBpbiBlcnJvciBtb2RlLCB3ZSBvbmx5IHJl
cXVpcmUKLSAgICAvLyAgICBERUZBVUxUX0VSUk9SX01PREVfUkVRVUlSRURfU1RBQ0sgY2FwYWNp
dHkuCi0gICAgLy8KLSAgICAvLyAgICBzdGFjayBncm93cyB0aGlzIHdheSAtLT4gICAKLSAgICAv
LyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotICAgIC8vICAgIHwgICAgICAgICAuLi4gfCA8LS0gREVGQVVMVF9FUlJP
Ul9NT0RFX1JFUVVJUkVEX1NUQUNLIC0tPiB8IC4uLgotICAgIC8vICAgIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAg
Ly8gICAgXiAgICAgICAgICAgICBeCi0gICAgLy8gICAgc3RhcnQgICAgICAgICBjdXJyZW50IHNw
Ci0gICAgLy8KLSAgICAvLyAgICBUaGlzIHNtYWxsZXIgcmVxdWlyZWQgY2FwYWNpdHkgYWxzbyBt
ZWFucyB0aGF0IHdlIHdvbid0IHJlLXRyaWdnZXIKLSAgICAvLyAgICBhIHN0YWNrIG92ZXJmbG93
IGZvciBwcm9jZXNzaW5nIHRoZSBleGNlcHRpb24gY2F1c2VkIGJ5IHRoZSBvcmlnaW5hbAotICAg
IC8vICAgIFN0YWNrT3ZlcmZsb3dFcnJvci4KLSAgICAvLwotICAgIC8vIDMuIElmIHRoZSBzdGFj
ayBpcyBub3QgbGFyZ2UgZW5vdWdoLCBnaXZlIEpTIGF0IGxlYXN0IGEgbWluaW11bQotICAgIC8v
ICAgIGFtb3VudCBvZiB1c2VhYmxlIHN0YWNrOgorICAgIC8vIFdlIGhhdmUgdHdvIHNlcGFyYXRl
IHN0YWNrIGxpbWl0cywgb25lIGZvciByZWd1bGFyIEpTIGV4ZWN1dGlvbiwgYW5kIG9uZQorICAg
IC8vIGZvciB3aGVuIHdlJ3JlIGhhbmRsaW5nIGVycm9ycy4gV2UgbmVlZCB0aGUgZXJyb3Igc3Rh
Y2sgdG8gYmUgc21hbGxlcgorICAgIC8vIG90aGVyd2lzZSB0aGVyZSB3b3VsZCBvYnZpb3VzbHkg
bm90IGJlIGFueSBzdGFjayBsZWZ0IHRvIGV4ZWN1dGUgSlMgaW4gd2hlbgorICAgIC8vIHRoZXJl
J3MgYSBzdGFjayBvdmVyZmxvdy4KICAgICAvLwotICAgIC8vICAgIHN0YWNrIGdyb3dzIHRoaXMg
d2F5IC0tPiAgIAotICAgIC8vICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gICAgfCA8LS0gREVGQVVM
VF9NSU5JTVVNX1VTRUFCTEVfU1RBQ0sgLS0+IHwgPC0tIHJlcXVpcmVkQ2FwYWNpdHkgLS0+IHwK
LSAgICAvLyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vICAgIF4gICAgICAgICAgICAgXgotICAgIC8v
ICAgIHN0YXJ0ICAgICAgICAgY3VycmVudCBzcAotICAgIC8vCi0gICAgLy8gICAgVGhlIG1pbmlt
dW0gdXNlYWJsZSBjYXBhY2l0eSBpcyBERUZBVUxUX01JTklNVU1fVVNFQUJMRV9TVEFDSy4KLSAg
ICAvLyAgICBJbiB0aGlzIGNhc2UsIHRoZSByZXF1aXJlZENhcGFjaXR5IGlzIHdoYXRldmVyIGlz
IGxlZnQgb2YgdGhlCi0gICAgLy8gICAgdG90YWwgc3RhY2sgY2FwYWNpdHkgYWZ0ZXIgd2UgaGF2
ZSBnaXZlIEpTIGl0cyBtaW5pbXVtIHN0YWNrCi0gICAgLy8gICAgaS5lLiByZXF1aXJlZENhcGFj
aXR5IGNhbiBldmVuIGJlIDAgaWYgdGhlcmUncyBub3QgZW5vdWdoIHN0YWNrLgotCi0KLSAgICAv
LyBQb2xpY3kgMTogTm9ybWFsIG1vZGU6IHJlcXVpcmVkID0gREVGQVVMVF9SRVFVSVJFRF9TVEFD
Sy4KLSAgICAvLyBQb2xpY3kgMjogRXJyb3IgbW9kZTogcmVxdWlyZWQgPSBERUZBVUxUX0VSUk9S
X01PREVfUkVRVUlSRURfU1RBQ0suCi0gICAgc2l6ZV90IHJlcXVpcmVkQ2FwYWNpdHkgPSAhbV9p
bnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSA/Ci0gICAgICAgIERFRkFVTFRf
UkVRVUlSRURfU1RBQ0sgOiBERUZBVUxUX0VSUk9SX01PREVfUkVRVUlSRURfU1RBQ0s7Ci0KLSAg
ICBzaXplX3QgdXNlYWJsZVN0YWNrID0gKHJlcXVpcmVkQ2FwYWNpdHkgPD0gc2l6ZSkgPwotICAg
ICAgICBzaXplIC0gcmVxdWlyZWRDYXBhY2l0eSA6IERFRkFVTFRfTUlOSU1VTV9VU0VBQkxFX1NU
QUNLOworICAgIC8vIFRoZXNlIHNpemVzIHdlcmUgZGVyaXZlZCBmcm9tIHRoZSBzdGFjayB1c2Fn
ZSBvZiBhIG51bWJlciBvZiBzaXRlcyB3aGVuCisgICAgLy8gbGF5b3V0IG9jY3VycyB3aGVuIHdl
J3ZlIGFscmVhZHkgY29uc3VtZWQgbW9zdCBvZiB0aGUgQyBzdGFjay4KKyAgICBjb25zdCBzaXpl
X3QgcmVxdWlyZWRTdGFjayA9IDY0ICogS0I7CisgICAgY29uc3Qgc2l6ZV90IGVycm9yTW9kZVJl
cXVpcmVkU3RhY2sgPSAzMiAqIEtCOwogCi0gICAgLy8gUG9saWN5IDM6IEVuc3VyZSB0aGUgdXNl
YWJsZSBzdGFjayBpcyBub3QgdG9vIHNtYWxsOgotICAgIGlmICh1c2VhYmxlU3RhY2sgPCBERUZB
VUxUX01JTklNVU1fVVNFQUJMRV9TVEFDSykKLSAgICAgICAgdXNlYWJsZVN0YWNrID0gREVGQVVM
VF9NSU5JTVVNX1VTRUFCTEVfU1RBQ0s7Ci0KLSAgICAvLyBTYW5pdHkgY2hlY2s6IE1ha2Ugc3Vy
ZSB3ZSBkbyBub3QgdXNlIG1vcmUgc3BhY2UgdGhhbiB0aGUgc3RhY2sncwotICAgIC8vIHRvdGFs
IGNhcGFjaXR5OgotICAgIGlmICh1c2VhYmxlU3RhY2sgPiBzaXplKQotICAgICAgICB1c2VhYmxl
U3RhY2sgPSBzaXplOwotCi0gICAgLy8gUmUtY29tcHV0ZSB0aGUgcmVxdWlyZWRDYXBhY2l0eSBi
YXNlZCBvbiB0aGUgYWRqdXN0ZWQgdXNlYWJsZSBzdGFjawotICAgIC8vIHNpemU6Ci0gICAgcmVx
dWlyZWRDYXBhY2l0eSA9IHNpemUgLSB1c2VhYmxlU3RhY2s7Ci0gICAgQVNTRVJUKHJlcXVpcmVk
Q2FwYWNpdHkgPCBzaXplKTsKKyAgICBzaXplX3QgcmVxdWlyZWRDYXBhY2l0eSA9IG1faW50ZXJw
cmV0ZXIubV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnkgPyBlcnJvck1vZGVSZXF1aXJlZFN0YWNr
IDogcmVxdWlyZWRTdGFjazsKIAorICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPiByZXF1aXJlZENh
cGFjaXR5KTsKKyAgICAKICAgICBtX3JlcXVpcmVkQ2FwYWNpdHkgPSByZXF1aXJlZENhcGFjaXR5
OyAgICAKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199753</attachid>
            <date>2013-04-25 15:11:48 -0700</date>
            <delta_ts>2013-04-25 15:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115147-20130425151110.patch</filename>
            <type>text/plain</type>
            <size>3269</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
M2UwZGMzOWQyNDQ5MTM0Y2YxZTNlZGNlNTFlM2I5ZGM5MDI2NDFmLi5lODQxZmRkZjg5ZWMxYjJm
Y2U0N2UzNmRjNDY1OGFhNDJiOWZmZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTMs
NiArMywxOCBAQAogICAgICAgICBTdGFjayBndWFyZHMgYXJlIHRvbyBjb25zZXJ2YXRpdmUKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTE0NwogCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY3JlYXNlIHN0
YWNrIGd1YXJkIHRvIGNsb3NlciB0byBvbGQgc2l6ZS4KKworICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OlN0YWNrUG9saWN5
OjpTdGFja1BvbGljeSk6CisKKzIwMTMtMDQtMjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTdGFjayBndWFyZHMgYXJlIHRvbyBjb25zZXJ2YXRpdmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTE0NworCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgogCiAgICAgICAgIFJlZHVjZSB0aGUgbGlt
aXRzIGFuZCBzaW1wbGlmeSB0aGUgZGVjaXNpb24gbWFraW5nLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4ODFmNmNhM2UxNzkw
N2I4MjI1ODA4MjI0ODMwMjQwMjhhMTZkNGQ3Li5jMzUyNjU1NjRmMGUxZjBmN2EzZmVmMTk4M2Mz
NmNhMGM4MTBlZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA0LTI1ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RhY2sgZ3VhcmRzIGFyZSB0b28gY29u
c2VydmF0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTUxNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgZ2V0cmxpbWl0IG9uIGRhcndpbiB0byBnZXQgdGhlIHN0YWNrIHNpemUgZm9yIHRoZSBt
YWluIHRocmVhZC4KKworICAgICAgICAqIHd0Zi9TdGFja0JvdW5kcy5jcHA6CisgICAgICAgIChX
VEY6OlN0YWNrQm91bmRzOjppbml0aWFsaXplKToKKwogMjAxMy0wNC0yNSAgcGVhdm9Ab3V0bG9v
ay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQ29tcGlsZSBm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAppbmRleCBjOTFkM2Y3OTAzYjMyN2ViNmRlNGFmMmZlYWUwYjY3N2NkYTI1ZTlkLi5hNmIx
NjQ5N2Q5YTk4ODU5YzgxNjMxMDJiOTFiNjljMGI3ZmIyODJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTEyNiw4ICsxMjYs
OCBAQCBJbnRlcnByZXRlcjo6U3RhY2tQb2xpY3k6OlN0YWNrUG9saWN5KEludGVycHJldGVyJiBp
bnRlcnByZXRlciwgY29uc3QgU3RhY2tCb3VuZAogICAgIC8vCiAgICAgLy8gVGhlc2Ugc2l6ZXMg
d2VyZSBkZXJpdmVkIGZyb20gdGhlIHN0YWNrIHVzYWdlIG9mIGEgbnVtYmVyIG9mIHNpdGVzIHdo
ZW4KICAgICAvLyBsYXlvdXQgb2NjdXJzIHdoZW4gd2UndmUgYWxyZWFkeSBjb25zdW1lZCBtb3N0
IG9mIHRoZSBDIHN0YWNrLgotICAgIGNvbnN0IHNpemVfdCByZXF1aXJlZFN0YWNrID0gNjQgKiBL
QjsKLSAgICBjb25zdCBzaXplX3QgZXJyb3JNb2RlUmVxdWlyZWRTdGFjayA9IDMyICogS0I7Cisg
ICAgY29uc3Qgc2l6ZV90IHJlcXVpcmVkU3RhY2sgPSAyNTYgKiBLQjsKKyAgICBjb25zdCBzaXpl
X3QgZXJyb3JNb2RlUmVxdWlyZWRTdGFjayA9IDY0ICogS0I7CiAKICAgICBzaXplX3QgcmVxdWly
ZWRDYXBhY2l0eSA9IG1faW50ZXJwcmV0ZXIubV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnkgPyBl
cnJvck1vZGVSZXF1aXJlZFN0YWNrIDogcmVxdWlyZWRTdGFjazsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuY3BwIGIvU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMu
Y3BwCmluZGV4IGEyNzJjZTNkZTkwZDdjNGMzMThkMzY3NTBmZjllZGFjZTg5ZGUzMmYuLmM5ZDAw
YTAyNzNhMDI3MDdhNTRlYzg1ZTg4NzRkNjMyOTIwNGMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1N0YWNrQm91bmRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5j
cHAKQEAgLTc5LDcgKzc5LDE3IEBAIHZvaWQgU3RhY2tCb3VuZHM6OmluaXRpYWxpemUoKQogewog
ICAgIHB0aHJlYWRfdCB0aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKICAgICBtX29yaWdpbiA9IHB0
aHJlYWRfZ2V0X3N0YWNrYWRkcl9ucCh0aHJlYWQpOwotICAgIG1fYm91bmQgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4obV9vcmlnaW4pIC0gcHRocmVhZF9nZXRfc3RhY2tzaXplX25wKHRocmVhZCk7Cisg
ICAgc2l6ZV90IHNpemUgPSAwOworICAgIGlmIChwdGhyZWFkX21haW5fbnAoKSkgeworICAgICAg
ICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzEzNzQxMjA0PgorICAgICAgICAvLyBwdGhyZWFk
X2dldF9zaXplIGxpZXMgdG8gdXMgd2hlbiB3ZSdyZSB0aGUgbWFpbiB0aHJlYWQsIHVzZSBnZXRf
cmxpbWl0IGluc3RlYWQKKyAgICAgICAgcmxpbWl0IGxpbWl0OworICAgICAgICBnZXRybGltaXQo
UkxJTUlUX1NUQUNLLCAmbGltaXQpOworICAgICAgICBzaXplID0gbGltaXQucmxpbV9jdXI7Cisg
ICAgfSBlbHNlCisgICAgICAgIHNpemUgPSBwdGhyZWFkX2dldF9zdGFja3NpemVfbnAodGhyZWFk
KTsKKworICAgIG1fYm91bmQgPSBzdGF0aWNfY2FzdDxjaGFyKj4obV9vcmlnaW4pIC0gc2l6ZTsK
IH0KIAogI2VsaWYgT1MoUU5YKQo=
</data>
<flag name="review"
          id="221218"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>