<?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>131182</bug_id>
          
          <creation_ts>2014-04-03 14:03:25 -0700</creation_ts>
          <short_desc>Fix JSC Debug Regressions on Windows</short_desc>
          <delta_ts>2014-04-17 10:02:56 -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>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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>peavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997298</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-03 14:03:25 -0700</bug_when>
    <thetext>Windows debug builders on ToT show failing JavaScriptCore tests.  As of r166738, I&apos;m seeing the following test failures:

** The following Mozilla test failures have been introduced:
        ecma/Expressions/11.13.2-4.js
        ecma/Expressions/11.3.1.js
        ecma/Expressions/11.3.2.js
        ecma/Expressions/11.4.4.js
        ecma/Expressions/11.4.5.js
        ecma/Math/15.8.2.10.js
        ecma/Statements/12.10-1.js

Results for Mozilla tests:
    7 regressions found.
    0 tests fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997299</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-03 14:03:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/16505397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998417</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-07 21:34:27 -0700</bug_when>
    <thetext>This 7 JSC test failures started manifesting in r165128: &quot;[Win32][LLINT] Crash when running JSC stress tests.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998450</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-07 23:16:19 -0700</bug_when>
    <thetext>Testing with ToT r166909, the 7 failures only manifests on a debug build.  They do not manifest on a release build.  The Apple Win 7 Release test bot confirms this.  For example, http://build.webkit.org/builders/Apple%20Win%207%20Release%20%28Tests%29/builds/44267.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998794</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-08 14:41:18 -0700</bug_when>
    <thetext>If I disable the JIT using Options::useJIT() = false, the tests no longer fail.  So, this issue is not in the ASM LLINT, but in the baseline JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999397</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-09 19:26:39 -0700</bug_when>
    <thetext>It looks like, with the JIT, we’re overflowing the floating point stack.  However, the source of the bug and a fix is not available yet.  We’ll temporarily disable the JIT in https://bugs.webkit.org/show_bug.cgi?id=131470 until we have a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000874</commentid>
    <comment_count>6</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-04-15 10:00:05 -0700</bug_when>
    <thetext>I&apos;ve been debugging this one, and found that the failures are caused by floating point exceptions/errors.
The tests fail because the assertion ASSERT(multiplier &gt;= 1.0) in ExecutionCounter::applyMemoryUsageHeuristics fails.
The value of multiplier int this case is actually infinite.
This should never happen as ExecutableAllocator::memoryPressureMultiplier should always return 1.0 on Windows.
The disassembly shows that the last statement in ExecutableAllocator::memoryPressureMultiplier is
translated into a floating point load instruction:

    return result;
        10183746  fld         qword ptr [result]  

This instruction fails to load the contents of result (1.0) into register st(0), because the st floating point register tags
have not been cleared from a previous floating point error (clearing can be achieved by calling ffree st(x)).
Further debugging shows that the source of the floating point error in this case is the statement

    int64_t asInt64 = static_cast&lt;int64_t&gt;(number);

in the method JSValue::isMachineInt(). This generates an error, and sets the st register tag, because the value of number is infinite.
A possible fix for this is to avoid the floating point error, by checking for infinity before performing this cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000875</commentid>
    <comment_count>7</comment_count>
      <attachid>229374</attachid>
    <who name="">peavo</who>
    <bug_when>2014-04-15 10:01:07 -0700</bug_when>
    <thetext>Created attachment 229374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001180</commentid>
    <comment_count>8</comment_count>
      <attachid>229374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-16 10:11:28 -0700</bug_when>
    <thetext>Comment on attachment 229374
Patch

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

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:508
&gt;      if (number != number)
&gt;          return false;
&gt; +    if (!std::isfinite(number))
&gt; +        return false;

Adding this extra check is going to make the code slower. Do we need it on all platforms, or just on Windows? Why isn’t this a problem on Mac? If we only need it on some platforms perhaps it should be conditional.

The line before this is a check for NaN; not sure why it’s using &quot;x != x&quot; rather than std::isnan, maybe performance reasons?

The std::isfinite also checks for NaN. We don’t need both. If we do need the check for infinity we should either use std::isinf or remove the NaN check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001288</commentid>
    <comment_count>9</comment_count>
      <attachid>229472</attachid>
    <who name="">peavo</who>
    <bug_when>2014-04-16 13:03:58 -0700</bug_when>
    <thetext>Created attachment 229472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001291</commentid>
    <comment_count>10</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-04-16 13:09:26 -0700</bug_when>
    <thetext>(In reply to comment #8)

Thanks for having a look at this :)

&gt; (From update of attachment 229374 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=229374&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:508
&gt; &gt;      if (number != number)
&gt; &gt;          return false;
&gt; &gt; +    if (!std::isfinite(number))
&gt; &gt; +        return false;
&gt; 
&gt; Adding this extra check is going to make the code slower. Do we need it on all platforms, or just on Windows? Why isn’t this a problem on Mac? If we only need it on some platforms perhaps it should be conditional.
&gt; 
&gt; The line before this is a check for NaN; not sure why it’s using &quot;x != x&quot; rather than std::isnan, maybe performance reasons?
&gt; 
&gt; The std::isfinite also checks for NaN. We don’t need both. If we do need the check for infinity we should either use std::isinf or remove the NaN check.

It only seems to be needed on Windows, other platforms does not have this problem, AFAIK.
Maybe gcc and MSVC behaves differently when it comes to the != operator and infinite numbers?
Or maybe this function is not called with an infinite parameter on Mac?

I made the test conditional as you suggested, to avoid performance penalty on other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001299</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-16 13:20:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 229374 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=229374&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:508
&gt; &gt;      if (number != number)
&gt; &gt;          return false;
&gt; &gt; +    if (!std::isfinite(number))
&gt; &gt; +        return false;
&gt; 
&gt; Adding this extra check is going to make the code slower. Do we need it on all platforms, or just on Windows? Why isn’t this a problem on Mac? If we only need it on some platforms perhaps it should be conditional.
&gt; 
&gt; The line before this is a check for NaN; not sure why it’s using &quot;x != x&quot; rather than std::isnan, maybe performance reasons?
&gt; 
&gt; The std::isfinite also checks for NaN. We don’t need both. If we do need the check for infinity we should either use std::isinf or remove the NaN check.

darin: I just did a quick search, and we have lots of code like the following:

C:\Projects\WebKit\OpenSource\Source\WebCore\css\CSSCalculationValue.cpp(189):        if (std::isnan(value) || std::isinf(value))

Maybe this was not consistent in earlier C++ standards? Maybe we can clean up our code now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001301</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-16 13:22:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 229374 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=229374&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:508
&gt; &gt; &gt;      if (number != number)
&gt; &gt; &gt;          return false;
&gt; &gt; &gt; +    if (!std::isfinite(number))
&gt; &gt; &gt; +        return false;
&gt; &gt; 
&gt; &gt; Adding this extra check is going to make the code slower. Do we need it on all platforms, or just on Windows? Why isn’t this a problem on Mac? If we only need it on some platforms perhaps it should be conditional.
&gt; &gt; 
&gt; &gt; The line before this is a check for NaN; not sure why it’s using &quot;x != x&quot; rather than std::isnan, maybe performance reasons?
&gt; &gt; 
&gt; &gt; The std::isfinite also checks for NaN. We don’t need both. If we do need the check for infinity we should either use std::isinf or remove the NaN check.
&gt; 
&gt; darin: I just did a quick search, and we have lots of code like the following:
&gt; 
&gt; C:\Projects\WebKit\OpenSource\Source\WebCore\css\CSSCalculationValue.cpp(189):        if (std::isnan(value) || std::isinf(value))
&gt; 
&gt; Maybe this was not consistent in earlier C++ standards? Maybe we can clean up our code now?

Hmm. On Windows, it looks like &apos;isinf&apos; does not check for NaN:

template&lt;class _Ty&gt; inline __nothrow bool isinf(_Ty _X)
{
    return (fpclassify(_X) == FP_INFINITE);
}

template&lt;class _Ty&gt; inline __nothrow bool isnan(_Ty _X)
{
    return (fpclassify(_X) == FP_NAN);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001302</commentid>
    <comment_count>13</comment_count>
      <attachid>229472</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-16 13:22:55 -0700</bug_when>
    <thetext>Comment on attachment 229472
Patch

This looks good as-is. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001304</commentid>
    <comment_count>14</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-04-16 13:26:05 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 229472 [details])
&gt; This looks good as-is. r=me.

Thanks for reviewing, guys :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001318</commentid>
    <comment_count>15</comment_count>
      <attachid>229472</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-16 13:55:13 -0700</bug_when>
    <thetext>Comment on attachment 229472
Patch

Clearing flags on attachment: 229472

Committed r167382: &lt;http://trac.webkit.org/changeset/167382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001319</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-16 13:55:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001576</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-17 09:27:16 -0700</bug_when>
    <thetext>Note: I can confirm that with this patch in place, 32-bit Windows Debug runs properly:

Results for Mozilla tests:
    0 regression found.
    0 tests fixed.
    OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001580</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-17 09:36:26 -0700</bug_when>
    <thetext>It would be wonderful to understand why the behavior for this cast is so different on Mac and Windows. I did a bit of googling, but couldn&apos;t find much information, aside from some hand-waving about the IEEE standard leaving this behavior undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001596</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-17 10:02:56 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; The line before this is a check for NaN; not sure why it’s using &quot;x != x&quot; rather than std::isnan, maybe performance reasons?
&gt; &gt; 
&gt; &gt; The std::isfinite also checks for NaN. We don’t need both. If we do need the check for infinity we should either use std::isinf or remove the NaN check.
&gt; 
&gt; darin: I just did a quick search, and we have lots of code like the following:
&gt; 
&gt; C:\Projects\WebKit\OpenSource\Source\WebCore\css\CSSCalculationValue.cpp(189):        if (std::isnan(value) || std::isinf(value))
&gt; 
&gt; Maybe this was not consistent in earlier C++ standards? Maybe we can clean up our code now?

Just to be clear: isnan, isinf, and isfinite are three different functions.

And &quot;std::isnan(x) || std::isinf(x)&quot; is another way of writing &quot;!std::isfinite(x)&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229374</attachid>
            <date>2014-04-15 10:01:07 -0700</date>
            <delta_ts>2014-04-16 13:03:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131182-20140415190039.patch</filename>
            <type>text/plain</type>
            <size>2348</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA0LTE1ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIEZpeCBKU0MgRGVidWcgUmVncmVzc2lvbnMgb24gV2luZG93cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMTgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNhc3Qgc3RhdGljX2Nhc3Q8
aW50NjRfdD4obnVtYmVyKSBpbiBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjYW4gZ2VuZXJhdGUg
YSBmbG9hdGluZyBwb2ludCBlcnJvciwKKyAgICAgICAgYW5kIHNldCB0aGUgc3QgZmxvYXRpbmcg
cG9pbnQgcmVnaXN0ZXIgdGFncywgaWYgdGhlIHZhbHVlIG9mIHRoZSBudW1iZXIgcGFyYW1ldGVy
IGlzIGluZmluaXRlLgorICAgICAgICBJZiB0aGUgc3QgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIg
dGFncyBhcmUgbm90IGNsZWFyZWQsIHRoaXMgY2FuIGNhdXNlIHN0cmFuZ2UgZmxvYXRpbmcgcG9p
bnQgYmVoYXZpb3IgbGF0ZXIgb24uCisgICAgICAgIFRoaXMgY2FuIGJlIGF2b2lkZWQgYnkgY2hl
Y2tpbmcgZm9yIGluZmluaXR5IGZpcnN0LgorCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc01hY2hpbmVJbnQpOiBBdm9pZCBm
bG9hdGluZyBwb2ludCBlcnJvciBieSBjaGVja2luZyBmb3IgaW5maW5pdHkgZmlyc3QuCisgICAg
ICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlRGVwZW5k
ZW50T3B0aW9ucyk6IFJlLWVuYWJsZSBqaXQgZm9yIFdpbmRvd3MuCisKIDIwMTQtMDQtMTQgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxNjcyNzIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE2NzMwNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwNCw2ICs1MDQsOCBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJ
bnQoKSBjb25zCiAgICAgZG91YmxlIG51bWJlciA9IGFzRG91YmxlKCk7CiAgICAgaWYgKG51bWJl
ciAhPSBudW1iZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUobnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGludDY0X3QgYXNJbnQ2NCA9
IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7CiAgICAgaWYgKGFzSW50NjQgIT0gbnVtYmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTY3MzA2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxMSArMjI2LDYg
QEAgc3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAjaWYgIUVOQUJMRShG
VExfSklUKQogICAgIE9wdGlvbnM6OnVzZUZUTEpJVCgpID0gZmFsc2U7CiAjZW5kaWYKLSNpZiBP
UyhXSU5ET1dTKQotICAgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGUgdGhlIEpJVCBvbiBXaW5kb3dz
IHVudGlsIHdlIGhhdmUgYSBmaXggZm9yCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTMx
MTgyLgotICAgIE9wdGlvbnM6OnVzZUpJVCgpID0gZmFsc2U7Ci0jZW5kaWYKIAogICAgIGlmIChP
cHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKQogICAgICAgICB8fCBPcHRpb25zOjpzaG93REZHRGlz
YXNzZW1ibHkoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229472</attachid>
            <date>2014-04-16 13:03:58 -0700</date>
            <delta_ts>2014-04-16 13:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131182-20140416220327.patch</filename>
            <type>text/plain</type>
            <size>2522</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Mzc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA0LTE2ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIEZpeCBKU0MgRGVidWcgUmVncmVzc2lvbnMgb24gV2luZG93cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMTgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNhc3Qgc3RhdGljX2Nhc3Q8
aW50NjRfdD4obnVtYmVyKSBpbiBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjYW4gZ2VuZXJhdGUg
YSBmbG9hdGluZyBwb2ludCBlcnJvciwKKyAgICAgICAgYW5kIHNldCB0aGUgc3QgZmxvYXRpbmcg
cG9pbnQgcmVnaXN0ZXIgdGFncywgaWYgdGhlIHZhbHVlIG9mIHRoZSBudW1iZXIgcGFyYW1ldGVy
IGlzIGluZmluaXRlLgorICAgICAgICBJZiB0aGUgc3QgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIg
dGFncyBhcmUgbm90IGNsZWFyZWQsIHRoaXMgY2FuIGNhdXNlIHN0cmFuZ2UgZmxvYXRpbmcgcG9p
bnQgYmVoYXZpb3IgbGF0ZXIgb24uCisgICAgICAgIFRoaXMgY2FuIGJlIGF2b2lkZWQgYnkgY2hl
Y2tpbmcgZm9yIGluZmluaXR5IGZpcnN0LgorCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc01hY2hpbmVJbnQpOiBBdm9pZCBm
bG9hdGluZyBwb2ludCBlcnJvciBieSBjaGVja2luZyBmb3IgaW5maW5pdHkgZmlyc3QuCisgICAg
ICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlRGVwZW5k
ZW50T3B0aW9ucyk6IFJlLWVuYWJsZSBqaXQgZm9yIFdpbmRvd3MuCisKIDIwMTQtMDQtMTYgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0
XSBDbGVhbnVwIHRoZSBidWlsZCBmcm9tIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gSmF2YVNj
cmlwdENvcmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTY3MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTA0LDYg
KzUwNCwxMSBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25zCiAgICAg
ZG91YmxlIG51bWJlciA9IGFzRG91YmxlKCk7CiAgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBPUyhXSU5ET1dTKQorICAgIC8vIE5lZWQgdG8gY2hl
Y2sgZm9yIGluZmluaXR5IG9uIFdpbmRvd3MgdG8gYXZvaWQgZmxvYXRpbmcgcG9pbnQgZXJyb3Ig
b24gZm9sbG93aW5nIGNhc3QsIHNlZSBidWcgMTMxMTgyLgorICAgIGlmIChzdGQ6OmlzaW5mKG51
bWJlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIGludDY0X3QgYXNJbnQ2
NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7CiAgICAgaWYgKGFzSW50NjQgIT0gbnVt
YmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTY3MzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxMSArMjI2
LDYgQEAgc3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAjaWYgIUVOQUJM
RShGVExfSklUKQogICAgIE9wdGlvbnM6OnVzZUZUTEpJVCgpID0gZmFsc2U7CiAjZW5kaWYKLSNp
ZiBPUyhXSU5ET1dTKQotICAgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGUgdGhlIEpJVCBvbiBXaW5k
b3dzIHVudGlsIHdlIGhhdmUgYSBmaXggZm9yCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTMxMTgyLgotICAgIE9wdGlvbnM6OnVzZUpJVCgpID0gZmFsc2U7Ci0jZW5kaWYKIAogICAgIGlm
IChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKQogICAgICAgICB8fCBPcHRpb25zOjpzaG93REZH
RGlzYXNzZW1ibHkoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>