<?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>153186</bug_id>
          
          <creation_ts>2016-01-16 11:04:15 -0800</creation_ts>
          <short_desc>FTL doesn&apos;t do proper spilling for exception handling when GetById/Snippets go to slow path</short_desc>
          <delta_ts>2016-01-18 14:16:01 -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>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156191</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-16 11:04:15 -0800</bug_when>
    <thetext>Michael was investigating a bug he found while doing the new JSC calling convention work
and it turns out to be a latent bug in FTL try/catch machinery.
After I looked at the code again, I realized that what I had previously
written is wrong in a subtle way. The FTL callOperation machinery will remove
its result register from the set of registers it needs to spill. This is not
correct when we have try/catch. We may want to do value recovery on the value
of the result prior to the call. The case that we were solving before was
when the resultRegister == baseRegister in a GetById, or left/rightRegister == resultRegister
in a Snippet. This code is correct in wanting to spill in that case, but that case is
just a partial subset of the rule saying we should spill anytime the result is a register
we might do value recovery on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156197</commentid>
    <comment_count>1</comment_count>
      <attachid>269176</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-16 11:28:00 -0800</bug_when>
    <thetext>Created attachment 269176
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156199</commentid>
    <comment_count>2</comment_count>
      <attachid>269176</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-16 11:33:37 -0800</bug_when>
    <thetext>Comment on attachment 269176
patch

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

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:666
&gt; +                // on it in the OSR exit. This is because the callOperation(.) machinery doesn&apos;t
&gt; +                // ever spill the result value. It actually takes care to never spill the result
&gt; +                // because it overwrites it with the result of the call. But, with exceptions and
&gt; +                // OSR exits, we may need the result value during OSR exit, so we take care to spill
&gt; +                // it now.

changed this locally to:
                // We take care to always spill the result whenever we need to do value recovery
                // on it in the OSR exit. This is because the callOperation(.) machinery doesn&apos;t
                // ever spill the result value. It actually takes care to never spill the result
                // because it overwrites it with the result of the call. But, with exceptions and
                // OSR exits, we may need the result value prior to the call during OSR exit.
                // We take care to mark it for spillage now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156241</commentid>
    <comment_count>3</comment_count>
      <attachid>269176</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-01-16 17:16:19 -0800</bug_when>
    <thetext>Comment on attachment 269176
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156450</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-18 14:16:01 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/195238</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269176</attachid>
            <date>2016-01-16 11:28:00 -0800</date>
            <delta_ts>2016-01-16 17:16:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10667</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk1MTcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE2LTAxLTE2ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBkb2Vzbid0IGRvIHByb3BlciBzcGlsbGluZyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHdo
ZW4gR2V0QnlJZC9TbmlwcGV0cyBnbyB0byBzbG93IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzE4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pY2hhZWwgd2FzIGludmVzdGlnYXRpbmcgYSBi
dWcgaGUgZm91bmQgd2hpbGUgZG9pbmcgdGhlIG5ldyBKU0MgY2FsbGluZyAKKyAgICAgICAgY29u
dmVudGlvbiB3b3JrIGFuZCBpdCB0dXJucyBvdXQgdG8gYmUgYSBsYXRlbnQgYnVnIGluIEZUTCB0
cnkvY2F0Y2ggbWFjaGluZXJ5LgorICAgICAgICBBZnRlciBJIGxvb2tlZCBhdCB0aGUgY29kZSBh
Z2FpbiwgSSByZWFsaXplZCB0aGF0IHdoYXQgSSBoYWQgcHJldmlvdXNseQorICAgICAgICB3cml0
dGVuIGlzIHdyb25nIGluIGEgc3VidGxlIHdheS4gVGhlIEZUTCBjYWxsT3BlcmF0aW9uIG1hY2hp
bmVyeSB3aWxsIHJlbW92ZQorICAgICAgICBpdHMgcmVzdWx0IHJlZ2lzdGVyIGZyb20gdGhlIHNl
dCBvZiByZWdpc3RlcnMgaXQgbmVlZHMgdG8gc3BpbGwuIFRoaXMgaXMgbm90CisgICAgICAgIGNv
cnJlY3Qgd2hlbiB3ZSBoYXZlIHRyeS9jYXRjaC4gV2UgbWF5IHdhbnQgdG8gZG8gdmFsdWUgcmVj
b3Zlcnkgb24KKyAgICAgICAgdGhlIHZhbHVlIHRoYXQgdGhlIHJlc3VsdCByZWdpc3RlciBpcyBw
cmlvciB0byB0aGUgY2FsbCBhZnRlciB0aGUgY2FsbAorICAgICAgICB0aHJvd3MgYW4gZXhjZXB0
aW9uLiBUaGUgY2FzZSB0aGF0IHdlIHdlcmUgc29sdmluZyBiZWZvcmUgd2FzIHdoZW4gdGhlIAor
ICAgICAgICByZXN1bHRSZWdpc3RlciA9PSBiYXNlUmVnaXN0ZXIgaW4gYSBHZXRCeUlkLCBvciBs
ZWZ0L3JpZ2h0UmVnaXN0ZXIgPT0gcmVzdWx0UmVnaXN0ZXIgaW4gYSBTbmlwcGV0LgorICAgICAg
ICBUaGlzIGNvZGUgaXMgY29ycmVjdCBpbiB3YW50aW5nIHRvIHNwaWxsIGluIHRoYXQgY2FzZSwg
ZXZlbiB0aG91Z2ggaXQgbWlnaHQgc3BpbGwKKyAgICAgICAgd2hlbiB3ZSBkb24ndCBuZWVkIGl0
IHRvIChpLmUgdGhlIHJlc3VsdCBpcyBub3QgbmVlZGVkIGZvciB2YWx1ZSByZWNvdmVyeSkuIE9u
Y2UgSQorICAgICAgICBpbnZlc3RpZ2F0ZWQgdGhpcyBidWcgZnVydGhlciwgSSByZWFsaXplZCB0
aGF0IHRoZSBwcmV2aW91cyBydWxlIGlzIGp1c3QgYQorICAgICAgICBwYXJ0aWFsIHN1YnNldCBv
ZiB0aGUgcnVsZSB0aGF0IHNheXMgd2Ugc2hvdWxkIHNwaWxsIGFueXRpbWUgdGhlIHJlc3VsdCBp
cworICAgICAgICBhIHJlZ2lzdGVyIHdlIG1pZ2h0IGRvIHZhbHVlIHJlY292ZXJ5IG9uLiBUaGlz
IHBhdGNoIGltcGxlbWVudHMgdGhlIHJ1bGUgdGhhdAorICAgICAgICBzYXlzIHdlIGFsd2F5cyB3
YW50IHRvIHNwaWxsIHRoZSByZXN1bHQgd2hlbiB3ZSB3aWxsIGRvIHZhbHVlIHJlY292ZXJ5IG9u
IGl0IAorICAgICAgICBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duLgorCisgICAgICAgICogZnRs
L0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om1tQWxsb2NhdGVEYXRhU2VjdGlv
bik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Z0bC10cnktY2F0Y2gtZ2V0dGVyLXRocm93LWlu
dGVyZXN0aW5nLXZhbHVlLXJlY292ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6Cisg
ICAgICAgIChyYW5kb20pOgorICAgICAgICAoaWRlbnRpdHkpOgorICAgICAgICAobGV0Lm8yLmdl
dCBmKToKKyAgICAgICAgKGxldC5vMy5nZXQgZik6CisgICAgICAgIChmb28pOgorICAgICAgICAo
aS5lbHNlKToKKwogMjAxNi0wMS0xNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBMZWdhbGl6ZSBNZW1vcnkgT2Zmc2V0cyBmb3IgQVJNNjQg
YmVmb3JlIGxvd2VyaW5nIHRvIEFpcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCShyZXZpc2lvbiAxOTUxNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsMTYgKzU1NSwxMCBAQCBz
dGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAgICAgICAg
ICAgIC8vIGJlIHByZXNlcnZlZCB0byB0aGUgc3RhY2sgYmVmb3JlIHRoZSBjYWxsLCB0aGF0IHdh
eSB0aGUgT1NSIGV4aXQKICAgICAgICAgICAgICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIg
Y2FuIHJlY292ZXIgdGhlbSBpbnRvIHRoZSBwcm9wZXIgcmVnaXN0ZXJzLgogICAgICAgICAgICAg
ICAgICAgICBleGl0LmdhdGhlclJlZ2lzdGVyc1RvU3BpbGxGb3JDYWxsSWZFeGNlcHRpb24oc3Rh
Y2ttYXBzLCByZWNvcmQpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhpdERlc2NyaXB0
b3JJbXBsLm1fZXhjZXB0aW9uVHlwZSA9PSBFeGNlcHRpb25UeXBlOjpHZXRCeUlkKSB7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChleGl0RGVzY3JpcHRvckltcGwubV9leGNlcHRpb25UeXBl
ID09IEV4Y2VwdGlvblR5cGU6OkdldEJ5SWQgfHwgZXhpdERlc2NyaXB0b3JJbXBsLm1fZXhjZXB0
aW9uVHlwZSA9PSBFeGNlcHRpb25UeXBlOjpCaW5hcnlPcEdlbmVyYXRvcikgewogICAgICAgICAg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gcmVjb3JkLmxvY2F0aW9uc1swXS5kaXJlY3RHUFIo
KTsKLSAgICAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2UgPSByZWNvcmQubG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSByZXN1bHQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uRXhpdC0+cmVnaXN0ZXJzVG9QcmVz
ZXJ2ZUZvckNhbGxUaGF0TWlnaHRUaHJvdy5zZXQoYmFzZSk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChleGl0RGVzY3JpcHRvckltcGwubV9leGNlcHRpb25UeXBlID09IEV4Y2VwdGlvblR5
cGU6OkJpbmFyeU9wR2VuZXJhdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1
bHQgPSByZWNvcmQubG9jYXRpb25zWzBdLmRpcmVjdEdQUigpOwotICAgICAgICAgICAgICAgICAg
ICBHUFJSZWcgbGVmdCA9IHJlY29yZC5sb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIEdQUlJlZyByaWdodCA9IHJlY29yZC5sb2NhdGlvbnNbMl0uZGlyZWN0R1BS
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbGVmdCB8fCByZXN1bHQgPT0g
cmlnaHQpCisgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc05lZWRlZEZv
ck9TUkV4aXQgPSByZWNvcmQudXNlZFJlZ2lzdGVyU2V0KCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChyZWdpc3RlcnNOZWVkZWRGb3JPU1JFeGl0LmdldChyZXN1bHQpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbkV4aXQtPnJlZ2lzdGVyc1RvUHJlc2VydmVGb3JDYWxs
VGhhdE1pZ2h0VGhyb3cuc2V0KHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQpAQCAtNjY0LDE5ICs2NTgsMjQgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9u
U3RhY2tNYXBzKAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJvb2wgYWRkZWRV
bmlxdWVFeGNlcHRpb25KdW1wID0gYWRkTmV3RXhjZXB0aW9uSnVtcElmTmVjZXNzYXJ5KGl0ZXIt
PnZhbHVlW2ldLmluZGV4KTsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
YmVnaW4gPSBzbG93UGF0aEpJVC5sYWJlbCgpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gYmFzZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHNpdHVhdGlvbiBoYXMgYSBy
ZWFsbHkgaW50ZXJlc3Rpbmcgc3RvcnkuIFdlIG1heSBoYXZlIGEgR2V0QnlJZCBpbnNpZGUKLSAg
ICAgICAgICAgICAgICAgICAgLy8gYSB0cnkgYmxvY2sgd2hlcmUgTExWTSBhc3NpZ25zIHRoZSBy
ZXN1bHQgYW5kIHRoZSBiYXNlIHRvIHRoZSBzYW1lIHJlZ2lzdGVyLgotICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgaW5saW5lIGNhY2hlIG1heSBtaXNzIGFuZCB3ZSBtYXkgZW5kIHVwIGF0IHRo
aXMgc2xvdyBwYXRoIGNhbGxPcGVyYXRpb24uIAotICAgICAgICAgICAgICAgICAgICAvLyBUaGVu
LCBzdXBwb3NlIHRoZSBiYXNlIGFuZCB0aGUgcmVzdWx0IGFyZSBib3RoIHRoZSBzYW1lIHJlZ2lz
dGVyLCBzbyB0aGUgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIG9mIHRoZSBD
IGNhbGwgZ2V0cyBzdG9yZWQgaW50byB0aGUgb3JpZ2luYWwgYmFzZSByZWdpc3Rlci4gSWYgdGhl
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZQotICAgICAgICAgICAgICAgICAgICAvLyB0aHJvd3Ms
IGl0IHdpbGwgcmV0dXJuICJ1bmRlZmluZWQiIGFuZCB3ZSB3aWxsIGJlIHN0dWNrIHdpdGggInVu
ZGVmaW5lZCIgaW4gdGhlIGJhc2UKLSAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhh
dCB3ZSB3b3VsZCBsaWtlIHRvIGRvIHZhbHVlIHJlY292ZXJ5IG9uLiBXZSBjb21iYXQgdGhpcyBz
aXR1YXRpb24gZnJvbSBldmVyCi0gICAgICAgICAgICAgICAgICAgIC8vIHRha2luZyBwbGFjZSBi
eSBlbnN1cmluZyB3ZSBzcGlsbCB0aGUgb3JpZ2luYWwgYmFzZSB2YWx1ZSBhbmQgdGhlbiByZWNv
dmVyIGl0IGZyb20KLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHNwaWxsIHNsb3QgYXMgdGhl
IGZpcnN0IHN0ZXAgaW4gT1NSIGV4aXQuCi0gICAgICAgICAgICAgICAgICAgIGlmIChPU1JFeGl0
KiBleGl0ID0gZXhjZXB0aW9uSGFuZGxlck1hbmFnZXIuY2FsbE9wZXJhdGlvbk9TUkV4aXQoaXRl
ci0+dmFsdWVbaV0uaW5kZXgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhpdC0+c3BpbGxS
ZWdpc3RlcnNUb1NwaWxsU2xvdChzbG93UGF0aEpJVCwgb3NyRXhpdEZyb21HZW5lcmljVW53aW5k
U3RhY2tTcGlsbFNsb3QpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBX
ZSB0YWtlIGNhcmUgdG8gYWx3YXlzIHNwaWxsIHRoZSByZXN1bHQgd2hlbmV2ZXIgd2UgbmVlZCB0
byBkbyB2YWx1ZSByZWNvdmVyeQorICAgICAgICAgICAgICAgIC8vIG9uIGl0IGluIHRoZSBPU1Ig
ZXhpdC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjYWxsT3BlcmF0aW9uKC4pIG1hY2hpbmVyeSBkb2Vz
bid0CisgICAgICAgICAgICAgICAgLy8gZXZlciBzcGlsbCB0aGUgcmVzdWx0IHZhbHVlLiBJdCBh
Y3R1YWxseSB0YWtlcyBjYXJlIHRvIG5ldmVyIHNwaWxsIHRoZSByZXN1bHQKKyAgICAgICAgICAg
ICAgICAvLyBiZWNhdXNlIGl0IG92ZXJ3cml0ZXMgaXQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBj
YWxsLiBCdXQsIHdpdGggZXhjZXB0aW9ucyBhbmQKKyAgICAgICAgICAgICAgICAvLyBPU1IgZXhp
dHMsIHdlIG1heSBuZWVkIHRoZSByZXN1bHQgdmFsdWUgZHVyaW5nIE9TUiBleGl0LCBzbyB3ZSB0
YWtlIGNhcmUgdG8gc3BpbGwKKyAgICAgICAgICAgICAgICAvLyBpdCBub3cuCisgICAgICAgICAg
ICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGFsc28gaGFuZGxlcyBhbm90aGVyIHJl
YWxseSBpbnRlcmVzdGluZyByZWdpc3RlciBwcmVzZXJ2YXRpb24gc3Rvcnk6IAorICAgICAgICAg
ICAgICAgIC8vIFdlIG1heSBoYXZlIGEgR2V0QnlJZC9TbmlwcGV0IGluc2lkZSBhIHRyeSBibG9j
ayB3aGVyZSBMTFZNIGFzc2lnbnMgdGhlIHJlc3VsdAorICAgICAgICAgICAgICAgIC8vIGFuZCB0
aGUgYmFzZSB0byB0aGUgc2FtZSByZWdpc3Rlci4gVGhlIGlubGluZSBjYWNoZSBtYXkgbWlzcyBh
bmQgd2UgbWF5IGVuZCB1cAorICAgICAgICAgICAgICAgIC8vIGF0IHRoaXMgc2xvdyBwYXRoIGNh
bGxPcGVyYXRpb24uIFRoZW4sIGJlY2F1c2UgdGhlIGJhc2UgYW5kIHRoZSByZXN1bHQgYXJlIGJv
dGgKKyAgICAgICAgICAgICAgICAvLyB0aGUgc2FtZSByZWdpc3Rlciwgc28gdGhlIHJldHVybiB2
YWx1ZSBvZiB0aGUgQyBjYWxsIGdldHMgc3RvcmVkIGludG8gdGhlIG9yaWdpbmFsCisgICAgICAg
ICAgICAgICAgLy8gYmFzZSByZWdpc3Rlci4gSWYgdGhlIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZSB0aHJvd3MsIGl0IHdpbGwgcmV0dXJuICJ1bmRlZmluZWQiCisgICAgICAgICAgICAgICAgLy8g
YW5kIHdlIHdpbGwgYmUgc3R1Y2sgd2l0aCAidW5kZWZpbmVkIiBpbiB0aGUgYmFzZSByZWdpc3Rl
ciB0aGF0IHdlIHdvdWxkIGxpa2UgdG8gCisgICAgICAgICAgICAgICAgLy8gZG8gdmFsdWUgcmVj
b3Zlcnkgb24uIFdlIGNvbWJhdCB0aGlzIHNpdHVhdGlvbiBmcm9tIGV2ZXIgdGFraW5nIHBsYWNl
IGJ5IGVuc3VyaW5nCisgICAgICAgICAgICAgICAgLy8gd2Ugc3BpbGwgdGhlIG9yaWdpbmFsIGJh
c2UgdmFsdWUgKGkuZSB0aGUgcmVzdWx0IHJlZ2lzdGVyKS4KKyAgICAgICAgICAgICAgICBpZiAo
T1NSRXhpdCogZXhpdCA9IGV4Y2VwdGlvbkhhbmRsZXJNYW5hZ2VyLmNhbGxPcGVyYXRpb25PU1JF
eGl0KGl0ZXItPnZhbHVlW2ldLmluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgZXhpdC0+c3Bp
bGxSZWdpc3RlcnNUb1NwaWxsU2xvdChzbG93UGF0aEpJVCwgb3NyRXhpdEZyb21HZW5lcmljVW53
aW5kU3RhY2tTcGlsbFNsb3QpOwogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICBzdGF0ZSwgdXNlZFJl
Z2lzdGVycywgc2xvd1BhdGhKSVQsIGNvZGVPcmlnaW4sIGFkZGVkVW5pcXVlRXhjZXB0aW9uSnVt
cCA/ICZleGNlcHRpb25KdW1wc1RvTGluay5sYXN0KCkuZmlyc3QgOiAmZXhjZXB0aW9uVGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdCwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwKQEAgLTcxOCw2ICs3
MTcsOSBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgYmVnaW4gPSBzbG93UGF0aEpJVC5sYWJl
bCgpOwogCisgICAgICAgICAgICAgICAgaWYgKE9TUkV4aXQqIGV4aXQgPSBleGNlcHRpb25IYW5k
bGVyTWFuYWdlci5jYWxsT3BlcmF0aW9uT1NSRXhpdChpdGVyLT52YWx1ZVtpXS5pbmRleCkpCisg
ICAgICAgICAgICAgICAgICAgIGV4aXQtPnNwaWxsUmVnaXN0ZXJzVG9TcGlsbFNsb3Qoc2xvd1Bh
dGhKSVQsIG9zckV4aXRGcm9tR2VuZXJpY1Vud2luZFN0YWNrU3BpbGxTbG90KTsKKwogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSwgdXNlZFJlZ2lzdGVycywgc2xvd1BhdGhKSVQsIGNvZGVP
cmlnaW4sIGFkZGVkVW5pcXVlRXhjZXB0aW9uSnVtcCA/ICZleGNlcHRpb25KdW1wc1RvTGluay5s
YXN0KCkuZmlyc3QgOiAmZXhjZXB0aW9uVGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICBnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLApAQCAtNzkwLDEyICs3OTIsMTAgQEAg
c3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogCiAgICAgICAgICAgICAg
ICAgYmluYXJ5T3AubV9zbG93UGF0aFN0YXJ0cy5hcHBlbmQoc2xvd1BhdGhKSVQubGFiZWwoKSk7
CiAgICAgICAgICAgICAgICAgYm9vbCBhZGRlZFVuaXF1ZUV4Y2VwdGlvbkp1bXAgPSBhZGROZXdF
eGNlcHRpb25KdW1wSWZOZWNlc3NhcnkoaXRlci0+dmFsdWVbaV0uaW5kZXgpOwotICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0gbGVmdCB8fCByZXN1bHQgPT0gcmlnaHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBzaXR1YXRpb24gaGFzIGEgcmVhbGx5IGludGVyZXN0aW5nIHJl
Z2lzdGVyIHByZXNlcnZhdGlvbiBzdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGNv
bW1lbnQgYWJvdmUgZm9yIEdldEJ5SWRzLgotICAgICAgICAgICAgICAgICAgICBpZiAoT1NSRXhp
dCogZXhpdCA9IGV4Y2VwdGlvbkhhbmRsZXJNYW5hZ2VyLmNhbGxPcGVyYXRpb25PU1JFeGl0KGl0
ZXItPnZhbHVlW2ldLmluZGV4KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQtPnNwaWxs
UmVnaXN0ZXJzVG9TcGlsbFNsb3Qoc2xvd1BhdGhKSVQsIG9zckV4aXRGcm9tR2VuZXJpY1Vud2lu
ZFN0YWNrU3BpbGxTbG90KTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8g
VGhpcyBzaXR1YXRpb24gaGFzIGEgcmVhbGx5IGludGVyZXN0aW5nIHJlZ2lzdGVyIHByZXNlcnZh
dGlvbiBzdG9yeS4KKyAgICAgICAgICAgICAgICAvLyBTZWUgY29tbWVudCBhYm92ZSBmb3IgR2V0
QnlJZHMuCisgICAgICAgICAgICAgICAgaWYgKE9TUkV4aXQqIGV4aXQgPSBleGNlcHRpb25IYW5k
bGVyTWFuYWdlci5jYWxsT3BlcmF0aW9uT1NSRXhpdChpdGVyLT52YWx1ZVtpXS5pbmRleCkpCisg
ICAgICAgICAgICAgICAgICAgIGV4aXQtPnNwaWxsUmVnaXN0ZXJzVG9TcGlsbFNsb3Qoc2xvd1Bh
dGhKSVQsIG9zckV4aXRGcm9tR2VuZXJpY1Vud2luZFN0YWNrU3BpbGxTbG90KTsKIAogICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24oc3RhdGUsIHVzZWRSZWdpc3RlcnMsIHNsb3dQYXRoSklU
LCBjb2RlT3JpZ2luLCBhZGRlZFVuaXF1ZUV4Y2VwdGlvbkp1bXAgPyAmZXhjZXB0aW9uSnVtcHNU
b0xpbmsubGFzdCgpLmZpcnN0IDogJmV4Y2VwdGlvblRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgYmluYXJ5T3Auc2xvd1BhdGhGdW5jdGlvbigpLCByZXN1bHQsIGxlZnQsIHJpZ2h0KS5jYWxs
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC10cnktY2F0
Y2gtZ2V0dGVyLXRocm93LWludGVyZXN0aW5nLXZhbHVlLXJlY292ZXJ5LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLXRyeS1jYXRjaC1nZXR0
ZXItdGhyb3ctaW50ZXJlc3RpbmctdmFsdWUtcmVjb3ZlcnkuanMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC10cnktY2F0Y2gtZ2V0dGVyLXRo
cm93LWludGVyZXN0aW5nLXZhbHVlLXJlY292ZXJ5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNjUgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIpCit9Citub0lubGluZShhc3NlcnQpOworCitmdW5jdGlv
biByYW5kb20oKSB7IAorICAgIHJldHVybiAiYmxhaCI7Cit9Citub0lubGluZShyYW5kb20pOwor
CitmdW5jdGlvbiBpZGVudGl0eSh4KSB7IAorICAgIHJldHVybiB4OworfQorbm9JbmxpbmUoaWRl
bnRpdHkpOworCitsZXQgbzEgPSB7CisgICAgZzogMjAsCisgICAgeTogNDAsCisgICAgZjogImdl
dCBmIgorfTsKKworbGV0IG8yID0geworICAgIGc6ICJnIiwKKyAgICB5OiAieSIsCisgICAgZ2V0
IGYoKSB7IAorICAgICAgICByZXR1cm4gImdldCBmIjsKKyAgICB9Cit9CisKK2xldCBvNCA9IHt9
OworCitsZXQgbzMgPSB7CisgICAgZ2V0IGYoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmxhaCIpOyAKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZvbyhvLCBhKSB7CisgICAgbGV0IHggPSBv
Lmc7CisgICAgbGV0IHkgPSBvLnk7CisgICAgbGV0IG9vID0gaWRlbnRpdHkobyk7CisgICAgbGV0
IGogPSByYW5kb20oKTsKKyAgICB0cnkgeworICAgICAgICBqID0gby5mOworICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICBhc3NlcnQoaiA9PT0gImJsYWgiKTsKKyAgICAgICAgYXNzZXJ0KG9vID09
PSBvMyk7CisgICAgICAgIHJldHVybiB4ICsgeSArIDE7CisgICAgfQorICAgIHJldHVybiB4ICsg
eTsKK30KKworbm9JbmxpbmUoZm9vKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKysp
IHsKKyAgICBpZiAoaSAlIDMgPT0gMCkgeworICAgICAgICBhc3NlcnQoZm9vKG8xKSA9PT0gNjAp
OworICAgIH0gZWxzZSBpZiAoaSAlIDMgPT09IDEpIHsKKyAgICAgICAgYXNzZXJ0KGZvbyhvMikg
PT09ICJneSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvbyhvNCk7CisgICAgfQorfQorCitm
b28obzMpOwo=
</data>
<flag name="review"
          id="294108"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>