<?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>97569</bug_id>
          
          <creation_ts>2012-09-25 09:25:09 -0700</creation_ts>
          <short_desc>Assertion failure in non-JIT&apos;ed LLInt on ARM Thumb</short_desc>
          <delta_ts>2013-11-03 14:06:43 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108645</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cosmin Truta">ctruta</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mark.lam</cc>
    
    <cc>ossy</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727704</commentid>
    <comment_count>0</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2012-09-25 09:25:09 -0700</bug_when>
    <thetext>When the JIT mode is disabled, CLoop opcodes fail at ASSERT_VALID_CODE_POINTER.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727765</commentid>
    <comment_count>1</comment_count>
      <attachid>165638</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2012-09-25 10:19:48 -0700</bug_when>
    <thetext>Created attachment 165638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727976</commentid>
    <comment_count>2</comment_count>
      <attachid>165638</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-09-25 14:32:22 -0700</bug_when>
    <thetext>Comment on attachment 165638
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:39
&gt; +#if CPU(ARM_THUMB2) &amp;&amp; !ENABLE(COMPUTED_GOTO_OPCODES)

Your comment in the ChangeLog suggests that this issue only manifests when LLINT_C_LOOP is enabled.  I would be more comfortable if you change the above to the following instead:

#if CPU(ARM_THUMB2) &amp;&amp; !(ENABLE(LLINT_C_LOOP) &amp;&amp; ENABLE(COMPUTED_GOTO_OPCODES))

This way, the assertion is not disabled for the more common use case where the llint C++ backend is not in use.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:46
&gt; +// when we enable features that use labels-as-values.

I suggest &quot;... use labels-as-values e.g. ENABLE(LLINT_C_LOOP) with ENABLE(COMPUTED_GOTO_OPCODES).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727997</commentid>
    <comment_count>3</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2012-09-25 15:09:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Your comment in the ChangeLog suggests that this issue only manifests when LLINT_C_LOOP is enabled.  I would be more comfortable if you change the above to the following instead:
&gt; 
&gt; #if CPU(ARM_THUMB2) &amp;&amp; !(ENABLE(LLINT_C_LOOP) &amp;&amp; ENABLE(COMPUTED_GOTO_OPCODES))

While I noticed this while using LLINT_C_LOOP, I am not entirely sure that the failure only occurs in this case. I will look around for other possible failing scenarios (i.e. where else are labels-as-values being used).

&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:46
&gt; &gt; +// when we enable features that use labels-as-values.
&gt; 
&gt; I suggest &quot;... use labels-as-values e.g. ENABLE(LLINT_C_LOOP) with ENABLE(COMPUTED_GOTO_OPCODES).

Ok, I will make the comment more complete. Thank you very much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728002</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-09-25 15:14:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Your comment in the ChangeLog suggests that this issue only manifests when LLINT_C_LOOP is enabled.  I would be more comfortable if you change the above to the following instead:
&gt; &gt; 
&gt; &gt; #if CPU(ARM_THUMB2) &amp;&amp; !(ENABLE(LLINT_C_LOOP) &amp;&amp; ENABLE(COMPUTED_GOTO_OPCODES))
&gt; 
&gt; While I noticed this while using LLINT_C_LOOP, I am not entirely sure that the failure only occurs in this case. I will look around for other possible failing scenarios (i.e. where else are labels-as-values being used).

Here&apos;s an idea:
Can you confirm if the assertion you saw only came from &quot;static MacroAssemblerCodePtr createLLIntCodePtr(LLIntCode codeId)&quot; calling createFromExecutableAddress()?  If so, for testing purposes, you can hand inline createFromExecutableAddress(*) directly into createLLIntCodePtr() minus the assertion, and see if that makes your issues go away.  If so, then that shows that this is a LLINT_C_LOOP only issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728509</commentid>
    <comment_count>5</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2012-09-26 07:00:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Here&apos;s an idea:
&gt; Can you confirm if the assertion you saw only came from &quot;static MacroAssemblerCodePtr createLLIntCodePtr(LLIntCode codeId)&quot; calling createFromExecutableAddress()?  If so, for testing purposes, you can hand inline createFromExecutableAddress(*) directly into createLLIntCodePtr() minus the assertion, and see if that makes your issues go away.  If so, then that shows that this is a LLINT_C_LOOP only issue.

I like your idea, although I cannot confirm that it only comes from that place. I have also found other unrelated places (specifically, in the DFG JIT) where this assertion fails, and right now I am looking into whether the failure is diagnosing a real problem. Incidentally, the build that&apos;s failing on me right now has CLoop disabled.

If it eventually turns out that the failures I&apos;m currently seeing come from elsewhere, then I will go on and implement your suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735982</commentid>
    <comment_count>6</comment_count>
      <attachid>167385</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2012-10-05 14:48:11 -0700</bug_when>
    <thetext>Created attachment 167385
Patch

Since createFromExecutableAddress takes pointers from LLInt::getCodePtr() only, I think this the best place to isolate disabling the check for decorated code pointers.
(ASSERT_VALID_CODE_POINTER has also failed in other places on our machines, but we were able to resolve those failures without having to disable the decorated pointer check globally.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945636</commentid>
    <comment_count>7</comment_count>
      <attachid>167385</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-31 12:28:04 -0700</bug_when>
    <thetext>Comment on attachment 167385
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:291
&gt; +#if CPU(ARM_THUMB2) &amp;&amp; ENABLE(COMPUTED_GOTO_OPCODES)
&gt; +        // ASSERT_VALID_CODE_POINTER is not applicable to opcodes coming from
&gt; +        // addresses of labels, because they are not decorated on ARM Thumb.
&gt; +        ASSERT(value);
&gt; +#else

createFromExecutableAddress() is called from createLLIntCodePtr() amongst other places.  createLLIntCodePtr() takes a LLIntCode which gets casted to the void* arg passed to createFromExecutableAddress().  And LLintCode is always an OpcodeId when ENABLE(LLINT_C_LOOP).  Hence, LLIntCode can be an OpcodeId regardless of whether ENABLE(COMPUTED_GOTO_OPCODES) or not.  Since, OpcodeIds are not guaranteed to have the low bit set, you&apos;ll never want to use ASSERT_VALID_CODE_POINTER() when building for CPU(ARM_THUMB2).

Hence, you should omit the ENABLE(COMPUTED_GOTO_OPCODES) condition altogether.  Please fix and upload another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946177</commentid>
    <comment_count>8</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2013-11-01 22:50:36 -0700</bug_when>
    <thetext>Thank you, Mark. Essentially, ASSERT_VALID_CODE_POINTER becomes a mere ASSERT.

But since I filed this patch, many moons ago, I discovered other failures, similar in nature, but due to a different cause: thumb-interwork thunks. See the following backtrace snippet (collected a while ago on ARM Linux):

#1  0x76adda10 in JSC::FunctionPtr::FunctionPtr&lt;int, double&gt; (this=0x7effadb4, value=0xc6c0 &lt;JSC::toInt32(double)&gt;)
    at ~/WebKit/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:105
#2  0x76ad9bec in JSC::DFG::SpeculativeJIT::callOperation (this=0x7effd798, operation=0xc6c0 &lt;JSC::toInt32(double)&gt;, 
    result=JSC::ARMRegisters::r0, arg1=JSC::ARMRegisters::d0)
    at ~/WebKit/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1314
#3  0x76aca8b8 in JSC::DFG::SpeculativeJIT::compileValueToInt32 (this=0x7effd798, node=0x738e14f8)
    at ~/WebKit/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2311

This is happening because JSC::toInt32 is exported from libJavaScriptCore.so, and the exports are done via thunks.

So removing the check for decorated code pointers inside createFromExecutableAddress() isn&apos;t sufficient. It also needs to be removed from the FunctionPtr constructor. What do you think about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946384</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-02 21:53:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Thank you, Mark. Essentially, ASSERT_VALID_CODE_POINTER becomes a mere ASSERT.
&gt; 
&gt; But since I filed this patch, many moons ago, I discovered other failures, similar in nature, but due to a different cause: thumb-interwork thunks. See the following backtrace snippet (collected a while ago on ARM Linux):
&gt; 
&gt; #1  0x76adda10 in JSC::FunctionPtr::FunctionPtr&lt;int, double&gt; (this=0x7effadb4, value=0xc6c0 &lt;JSC::toInt32(double)&gt;)
&gt;     at ~/WebKit/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:105
&gt; #2  0x76ad9bec in JSC::DFG::SpeculativeJIT::callOperation (this=0x7effd798, operation=0xc6c0 &lt;JSC::toInt32(double)&gt;, 
&gt;     result=JSC::ARMRegisters::r0, arg1=JSC::ARMRegisters::d0)
&gt;     at ~/WebKit/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1314
&gt; #3  0x76aca8b8 in JSC::DFG::SpeculativeJIT::compileValueToInt32 (this=0x7effd798, node=0x738e14f8)
&gt;     at ~/WebKit/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2311
&gt; 
&gt; This is happening because JSC::toInt32 is exported from libJavaScriptCore.so, and the exports are done via thunks.
&gt; 
&gt; So removing the check for decorated code pointers inside createFromExecutableAddress() isn&apos;t sufficient. It also needs to be removed from the FunctionPtr constructor. What do you think about that?

Cosmin, I believe you filed this bug to deal with an &quot;assertion failure in non-JIT&apos;ed LLInt on ARM Thumb&quot;.  The stack trace you showed above is for a DFG build.  If there&apos;s a DFG issue, please file a separate bug.  

Anyway, while I was investigating this issue, I found more build issues in the current CLoop LLINT build on the ARM Thumb build.  It was just easier for me to go ahead and just fix it.  I&apos;ll upload a patch for the complete fix shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946394</commentid>
    <comment_count>10</comment_count>
      <attachid>215848</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-03 00:29:18 -0700</bug_when>
    <thetext>Created attachment 215848
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946451</commentid>
    <comment_count>11</comment_count>
      <attachid>215848</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-03 10:19:19 -0800</bug_when>
    <thetext>Comment on attachment 215848
the patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946488</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-03 13:55:01 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r158541: &lt;http://trac.webkit.org/r158541&gt;.

Cosmin, according to my testing, the non-JIT&apos;ed LLINT (aka. the C Loop LLINT) now builds and runs as expected on ARM Thumb2.  If you are still encountering issues with the C Loop LLINT with this fix, please feel free to reopen this bug or file another.  If you are encountering JIT issues, please file a separate bug for that.  Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165638</attachid>
            <date>2012-09-25 10:19:48 -0700</date>
            <delta_ts>2012-10-05 14:48:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>1939</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQwM2EzOGMuLjEzMzZhNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI1ICBDb3NtaW4gVHJ1dGEg
IDxjdHJ1dGFAcmltLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBpbiBub24tSklU
J2VkIExMSW50IG9uIEFSTSBUaHVtYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTc1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBUk0vVGh1bWIgaW5zdHJ1Y3Rpb24gY29kZSBwb2ludGVycyBhcmUgZGVj
b3JhdGVkIHdpdGggdGhlIGJvdHRvbSBiaXQgc2V0LAorICAgICAgICBidXQgYWRkcmVzc2VzIG9m
IGxhYmVscyAod2hpY2ggYXJlIHVzZWQgaW4gQ09NUFVURURfR09UT19PUENPREVTKSBhcmUgbm90
LgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorCiAyMDEy
LTA5LTI0ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1MzAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCmluZGV4IGMyYWYyNDAuLjRiMjQ0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaApAQCAtMzYsMTIg
KzM2LDE0IEBACiAKIC8vIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIgY2hlY2tzIHRoYXQgcHRy
IGlzIGEgbm9uLW51bGwgcG9pbnRlciwgYW5kIHRoYXQgaXQgaXMgYSB2YWxpZAogLy8gaW5zdHJ1
Y3Rpb24gYWRkcmVzcyBvbiB0aGUgcGxhdGZvcm0gKGZvciBleGFtcGxlLCBjaGVjayBhbnkgYWxp
Z25tZW50IHJlcXVpcmVtZW50cykuCi0jaWYgQ1BVKEFSTV9USFVNQjIpCisjaWYgQ1BVKEFSTV9U
SFVNQjIpICYmICFFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogLy8gQVJNL3RodW1iIGlu
c3RydWN0aW9ucyBtdXN0IGJlIDE2LWJpdCBhbGlnbmVkLCBidXQgYWxsIGNvZGUgcG9pbnRlcnMg
dG8gYmUgbG9hZGVkCiAvLyBpbnRvIHRoZSBwcm9jZXNzb3IgYXJlIGRlY29yYXRlZCB3aXRoIHRo
ZSBib3R0b20gYml0IHNldCwgaW5kaWNhdGluZyB0aGF0IHRoaXMgaXMKIC8vIHRodW1iIGNvZGUg
KGFzIG9wb3NlZCB0byAzMi1iaXQgdHJhZGl0aW9uYWwgQVJNKS4gIFRoZSBmaXJzdCB0ZXN0IGNo
ZWNrcyBmb3IgYm90aAogLy8gZGVjb3JhdGVkIGFuZCB1bmRlY3RvcmF0ZWQgbnVsbCwgYW5kIHRo
ZSBzZWNvbmQgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIHBvaW50ZXIgaXMKIC8vIGRlY29yYXRlZC4K
Ky8vIEFkZHJlc3NlcyBvZiBsYWJlbHMgZG8gbm90IGZvbGxvdyB0aGlzIHJ1bGUsIGhvd2V2ZXIs
IHNvIHdlIG11c3QgZm9yZWdvIHRoaXMgY2hlY2sKKy8vIHdoZW4gd2UgZW5hYmxlIGZlYXR1cmVz
IHRoYXQgdXNlIGxhYmVscy1hcy12YWx1ZXMuCiAjZGVmaW5lIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIocHRyKSBcCiAgICAgQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHB0cikg
JiB+MSk7IFwKICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocHRyKSAmIDEp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167385</attachid>
            <date>2012-10-05 14:48:11 -0700</date>
            <delta_ts>2013-11-03 00:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2094</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">Y29tbWl0IDcwNTcwNjdkNzE1NjUzMDJkODVhODI4NTdiNWNkNjMyMjQ1NWU2NDgKQXV0aG9yOiBD
b3NtaW4gVHJ1dGEgPGN0cnV0YUByaW0uY29tPgpEYXRlOiAgIEZyaSBPY3QgNSAxNjowNzo1MCAy
MDEyIC0wNDAwCgogICAgQXNzZXJ0aW9uIGZhaWx1cmUgaW4gbm9uLUpJVCdlZCBMTEludCBvbiBB
Uk0gVGh1bWIKICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU2
OQogICAgCiAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KICAgIAogICAgRG8gbm90IHVz
ZSBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSIHdoZW4gdGhlIHBvaW50ZXIgdmFsdWUgbWlnaHQg
YmUgYW4KICAgIGFkZHJlc3Mgb2YgYSBsYWJlbCAoZS5nLiBhIExMSW50IENMb29wIG9wY29kZSku
CiAgICAKICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgogICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGMwZWJlMzcuLmJjYzM4ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEwLTA1ICBDb3NtaW4gVHJ1dGEgIDxj
dHJ1dGFAcmltLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBpbiBub24tSklUJ2Vk
IExMSW50IG9uIEFSTSBUaHVtYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEbyBub3QgdXNlIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIgd2hlbiB0aGUg
cG9pbnRlciB2YWx1ZSBtaWdodCBiZSBhbgorICAgICAgICBhZGRyZXNzIG9mIGEgbGFiZWwgKGUu
Zy4gYSBMTEludCBDTG9vcCBvcGNvZGUpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNy
ZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyk6CisKIDIwMTItMTAtMDUgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgYSB3
YXkgdG8gZ2F0aGVyIGFuZCBsb2cgSGVhcCBtZW1vcnkgdXNlIGFuZCBwYXVzZSB0aW1lcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgKaW5kZXggYzJhZjI0MC4uMDBlYTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCkBAIC0yODQs
NyArMjg0LDEzIEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyh2b2lkKiB2YWx1ZSkKICAgICB7CisjaWYg
Q1BVKEFSTV9USFVNQjIpICYmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgICAg
IC8vIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIgaXMgbm90IGFwcGxpY2FibGUgdG8gb3Bjb2Rl
cyBjb21pbmcgZnJvbQorICAgICAgICAvLyBhZGRyZXNzZXMgb2YgbGFiZWxzLCBiZWNhdXNlIHRo
ZXkgYXJlIG5vdCBkZWNvcmF0ZWQgb24gQVJNIFRodW1iLgorICAgICAgICBBU1NFUlQodmFsdWUp
OworI2Vsc2UKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUih2YWx1ZSk7CisjZW5k
aWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
</data>
<flag name="review"
          id="180053"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215848</attachid>
            <date>2013-11-03 00:29:18 -0700</date>
            <delta_ts>2013-11-03 10:19:19 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-97569.patch</filename>
            <type>text/plain</type>
            <size>4512</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4NTI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEzLTExLTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
c3NlcnRpb24gZmFpbHVyZSBpbiBub24tSklUJ2VkIExMSW50IG9uIEFSTSBUaHVtYi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTY5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAtIFRodW1iMiBhbGlnbm1lbnQgYXNzZXJ0
aW9ucyBkbyBub3QgYXBwbHkgdG8gdGhlIEMgTG9vcCBMTElOVCBiZWNhdXNlCisgICAgICAgICAg
dGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhvc2UgYXNzZXJ0aW9ucyBhcmUgYWN0dWFsbHkgT3Bj
b2RlSURzCisgICAgICAgICAgbWFzcXVlcmFkaW5nIGFzIGFkZHJlc3Nlcy4KKyAgICAgICAgKiBs
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAgICAgLSBTb21lIG9mIHRoZSAjZGVm
aW5lcyBiZWxvbmcgaW4gdGhlICFFTkFCTEUoTExJTlRfQ19MT09QKSBzZWN0aW9uLgorICAgICAg
ICAgIE1vdmluZyB0aGVtIHRoZXJlLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAtIEtlZXAgdGhlIGNvbXBpbGVyIGhhcHB5IGZyb20gc29tZSB1bnJl
ZmVyZW5jZWQgQyBMb29wIGxhYmVscy4KKwogMjAxMy0xMS0wMiAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgbWlzc2luZyBnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKCkgZm9yIE1TVkMgQVJNCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDE1
ODQ5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogLy8gQVNTRVJUX1ZB
TElEX0NPREVfUE9JTlRFUiBjaGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVyLCBh
bmQgdGhhdCBpdCBpcyBhIHZhbGlkCiAvLyBpbnN0cnVjdGlvbiBhZGRyZXNzIG9uIHRoZSBwbGF0
Zm9ybSAoZm9yIGV4YW1wbGUsIGNoZWNrIGFueSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzKS4KLSNp
ZiBDUFUoQVJNX1RIVU1CMikKKyNpZiBDUFUoQVJNX1RIVU1CMikgJiYgIUVOQUJMRShMTElOVF9D
X0xPT1ApCiAvLyBBUk0vdGh1bWIgaW5zdHJ1Y3Rpb25zIG11c3QgYmUgMTYtYml0IGFsaWduZWQs
IGJ1dCBhbGwgY29kZSBwb2ludGVycyB0byBiZSBsb2FkZWQKIC8vIGludG8gdGhlIHByb2Nlc3Nv
ciBhcmUgZGVjb3JhdGVkIHdpdGggdGhlIGJvdHRvbSBiaXQgc2V0LCBpbmRpY2F0aW5nIHRoYXQg
dGhpcyBpcwogLy8gdGh1bWIgY29kZSAoYXMgb3Bvc2VkIHRvIDMyLWJpdCB0cmFkaXRpb25hbCBB
Uk0pLiAgVGhlIGZpcnN0IHRlc3QgY2hlY2tzIGZvciBib3RoCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lv
biAxNTg0OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNkZWZpbmUgT0ZGTElO
RV9BU01fQVJNIDAKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAogI2RlZmluZSBPRkZMSU5F
X0FTTV9BUk12N19UUkFESVRJT05BTCAwCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0IDAKICNk
ZWZpbmUgT0ZGTElORV9BU01fWDg2XzY0IDAKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdzIDAK
ICNkZWZpbmUgT0ZGTElORV9BU01fTUlQUyAwCkBAIC05NiwxNCArOTcsMjcgQEAKICNkZWZpbmUg
T0ZGTElORV9BU01fU0g0IDAKICNlbmRpZgogCi0jZW5kaWYgLy8gIUVOQUJMRShMTElOVF9DX0xP
T1ApCi0KICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0IDEKICNlbHNl
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0IDAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisj
aWZkZWYgV1RGX01JUFNfUElDCisjZGVmaW5lIFMoeCkgI3gKKyNkZWZpbmUgU1goeCkgUyh4KQor
I2RlZmluZSBPRkZMSU5FX0FTTV9DUExPQUQocmVnKSBcCisgICAgIi5zZXQgbm9yZW9yZGVyXG4i
IFwKKyAgICAiLmNwbG9hZCAiIFNYKHJlZykgIlxuIiBcCisgICAgIi5zZXQgcmVvcmRlclxuIgor
I2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQ1BMT0FEKHJlZykKKyNlbmRpZgorI2VuZGlmCisK
KyNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAj
ZGVmaW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAxCiAjZWxzZQpAQCAtMTQ2LDE3ICsxNjAsNCBA
QAogI2RlZmluZSBPRkZMSU5FX0FTTV9WQUxVRV9QUk9GSUxFUiAwCiAjZW5kaWYKIAotI2lmIENQ
VShNSVBTKQotI2lmZGVmIFdURl9NSVBTX1BJQwotI2RlZmluZSBTKHgpICN4Ci0jZGVmaW5lIFNY
KHgpIFMoeCkKLSNkZWZpbmUgT0ZGTElORV9BU01fQ1BMT0FEKHJlZykgXAotICAgICIuc2V0IG5v
cmVvcmRlclxuIiBcCi0gICAgIi5jcGxvYWQgIiBTWChyZWcpICJcbiIgXAotICAgICIuc2V0IHJl
b3JkZXJcbiIKLSNlbHNlCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0NQTE9BRChyZWcpCi0jZW5kaWYK
LSNlbmRpZgotCiAjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDE1ODQ5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsMTggKzkwLDIyIEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M6OkxMSW50OwogI2RlZmluZSBPRkZMSU5FX0FTTV9CRUdJTgogI2RlZmlu
ZSBPRkZMSU5FX0FTTV9FTkQKIAorLy8gVG8ga2VlcCBjb21waWxlcnMgaGFwcHkgaW4gY2FzZSBv
ZiB1bnVzZWQgbGFiZWxzLCBmb3JjZSB1c2FnZSBvZiB0aGUgbGFiZWw6CisjZGVmaW5lIFVTRV9M
QUJFTChsYWJlbCkgXAorICAgIGRvIHsgXAorICAgICAgICBpZiAoZmFsc2UpIFwKKyAgICAgICAg
ICAgIGdvdG8gbGFiZWw7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3Bjb2RlKSBERUZJTkVfT1BDT0RFKG9wY29kZSkgVVNFX0xBQkVM
KG9wY29kZSk7CiAKLSNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wY29kZSkgREVG
SU5FX09QQ09ERShvcGNvZGUpCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSAg
ICAjZGVmaW5lIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGFiZWwpICBsYWJlbDoKKyNkZWZpbmUg
T0ZGTElORV9BU01fR0xVRV9MQUJFTChsYWJlbCkgIGxhYmVsOiBVU0VfTEFCRUwobGFiZWwpOwog
I2Vsc2UKLSAgICAjZGVmaW5lIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGFiZWwpICBjYXNlIGxh
YmVsOiBsYWJlbDoKKyNkZWZpbmUgT0ZGTElORV9BU01fR0xVRV9MQUJFTChsYWJlbCkgIGNhc2Ug
bGFiZWw6IGxhYmVsOiBVU0VfTEFCRUwobGFiZWwpOwogI2VuZGlmCiAKLSNkZWZpbmUgT0ZGTElO
RV9BU01fTE9DQUxfTEFCRUwobGFiZWwpIFwKLSAgICBsYWJlbDogXAotICAgICAgICBpZiAoZmFs
c2UpIFwKLSAgICAgICAgICAgIGdvdG8gbGFiZWw7CisjZGVmaW5lIE9GRkxJTkVfQVNNX0xPQ0FM
X0xBQkVMKGxhYmVsKSBsYWJlbDogVVNFX0xBQkVMKGxhYmVsKTsKIAogCiAvLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0K
</data>
<flag name="review"
          id="238696"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>