<?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>70468</bug_id>
          
          <creation_ts>2011-10-19 19:51:57 -0700</creation_ts>
          <short_desc>DFG call optimization handling will fail if the call had been unlinked due to the callee being optimized</short_desc>
          <delta_ts>2011-10-20 22:14:20 -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>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>69996</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487248</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-19 19:51:57 -0700</bug_when>
    <thetext>Since the optimization trigger is likely to fire at roughly the same time for multiple code blocks, this leads to an unfortunate outcome where the optimization of one code block leads the others to forget about its existence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487276</commentid>
    <comment_count>1</comment_count>
      <attachid>111720</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-19 20:43:47 -0700</bug_when>
    <thetext>Created attachment 111720
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487281</commentid>
    <comment_count>2</comment_count>
      <attachid>111720</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-19 20:51:12 -0700</bug_when>
    <thetext>Comment on attachment 111720
the patch

lastSeenCallee isn&apos;t marked so this isn&apos;t safe, but also this may result in dead functions being kept alive longer than is strictly necessary.  I would almost consider going with a Weak&lt;&gt; ref rather than WriteBarrier&lt;JSFunction&gt; if we can get do it without a perf impact</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487285</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-19 20:53:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 111720 [details])
&gt; lastSeenCallee isn&apos;t marked so this isn&apos;t safe, but also this may result in dead functions being kept alive longer than is strictly necessary.  I would almost consider going with a Weak&lt;&gt; ref rather than WriteBarrier&lt;JSFunction&gt; if we can get do it without a perf impact

I&apos;ll change it to use the WeakReferenceHarvester approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487303</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-19 21:20:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 111720 [details] [details])
&gt; &gt; lastSeenCallee isn&apos;t marked so this isn&apos;t safe, but also this may result in dead functions being kept alive longer than is strictly necessary.  I would almost consider going with a Weak&lt;&gt; ref rather than WriteBarrier&lt;JSFunction&gt; if we can get do it without a perf impact
&gt; 
&gt; I&apos;ll change it to use the WeakReferenceHarvester approach.

Righto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488143</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 21:29:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 111720 [details] [details])
&gt; &gt; lastSeenCallee isn&apos;t marked so this isn&apos;t safe, but also this may result in dead functions being kept alive longer than is strictly necessary.  I would almost consider going with a Weak&lt;&gt; ref rather than WriteBarrier&lt;JSFunction&gt; if we can get do it without a perf impact
&gt; 
&gt; I&apos;ll change it to use the WeakReferenceHarvester approach.

Changed my mind.  As per earlier discussions, using a strong reference would not be a regression.  We currently unlink calls when we blow away all code.  If we blow away all code, then this reference (lastSeenCallee) would disappear from the GC trace since its owned by CodeBlock.

It&apos;s definitely worthwhile to make all stubs into weak references, and when they go stale, blow away the stubs.  Or in the case of DFG optimized code, trigger recompilation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488146</commentid>
    <comment_count>6</comment_count>
      <attachid>111899</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 21:33:34 -0700</bug_when>
    <thetext>Created attachment 111899
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488151</commentid>
    <comment_count>7</comment_count>
      <attachid>111899</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-20 21:48:56 -0700</bug_when>
    <thetext>Comment on attachment 111899
the patch

r=me

Can we remove the callee field entirely now? It seems like it&apos;s a strict subset of lastSeenCallee.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488158</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 22:13:32 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/98065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488159</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 22:14:20 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 111899 [details])
&gt; r=me
&gt; 
&gt; Can we remove the callee field entirely now? It seems like it&apos;s a strict subset of lastSeenCallee.

callee is a magic field - it&apos;s really just a pointer to the machine code containing the callee immediate.  We don&apos;t want to remove that since then we wouldn&apos;t be able to do linking/unlinking.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111720</attachid>
            <date>2011-10-19 20:43:47 -0700</date>
            <delta_ts>2011-10-20 21:33:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixunlink_patch_1.diff</filename>
            <type>text/plain</type>
            <size>4811</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTc5MjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTEtMTAtMTkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgY2FsbCBvcHRpbWl6YXRpb24gaGFuZGxpbmcgd2lsbCBmYWlsIGlmIHRoZSBjYWxsIGhhZCBi
ZWVuIHVubGlua2VkIGR1ZQorICAgICAgICB0byB0aGUgY2FsbGVlIGJlaW5nIG9wdGltaXplZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIElm
IGEgY2FsbCBoYWQgZXZlciBiZWVuIGxpbmtlZCwgd2UgcmVtZW1iZXIgdGhpcyBmYWN0IGFzIHdl
bGwgYXMgdGhlIGZ1bmN0aW9uCisgICAgICAgIHRvIHdoaWNoIGl0IHdhcyBsaW5rZWQgZXZlbiBp
ZiB1bmxpbmtJbmNvbWluZ0NhbGxzKCkgb3IgdW5saW5rQ2FsbHMoKSBhcmUKKyAgICAgICAgY2Fs
bGVkLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
OjpERkc6OmRmZ0xpbmtGb3IpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmtGb3IpOgorCiAyMDExLTEwLTE5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJh
Y2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBQb2lzb25pbmcgb2Ygc3RyaWN0IGNhbGxlcixh
cmd1bWVudHMgaW5hcHByb3ByaWF0ZWx5IHBvaXNvbmluZyAiaW4iCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA5Nzg4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMTIxLDYgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb2RlTG9jYXRpb25E
YXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luOwogICAgICAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBo
b3RQYXRoT3RoZXI7CiAgICAgICAgIEpJVFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7
CisgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKICAgICAg
ICAgYm9vbCBoYXNTZWVuU2hvdWxkUmVwYXRjaCA6IDE7CiAgICAgICAgIGJvb2wgaXNDYWxsIDog
MTsKICAgICAgICAgYm9vbCBpc0RGRyA6IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTc4ODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY0Miw3ICsxNjQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc0Z1bmN0aW9u
Q29uc3RhbnQobV9jb2RlQmxvY2ssIGNhbGxUYXJnZXQpKQogICAgICAgICAgICAgICAgIGNhbGxU
eXBlID0gQ29uc3RhbnRGdW5jdGlvbjsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKG1fY3VycmVudEluZGV4KS5p
c0xpbmtlZCgpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmxpa2VseVRv
VGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEhbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8obV9jdXJyZW50
SW5kZXgpLmxhc3RTZWVuQ2FsbGVlICYmICFtX3Byb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNs
b3dDYXNlKG1fY3VycmVudEluZGV4KSkKICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IExpbmtl
ZEZ1bmN0aW9uOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNhbGxUeXBlID0g
VW5rbm93bkZ1bmN0aW9uOwpAQCAtMTY2Nyw3ICsxNjY3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICBpbnRyaW5zaWMgPSBt
X2dyYXBoLnZhbHVlT2ZGdW5jdGlvbkNvbnN0YW50KG1fY29kZUJsb2NrLCBjYWxsVGFyZ2V0KS0+
ZXhlY3V0YWJsZSgpLT5pbnRyaW5zaWMoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IExpbmtlZEZ1bmN0aW9uKTsKLSAgICAg
ICAgICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhtX2N1cnJlbnRJbmRleCkuY2FsbGVlLmdl
dCgpOworICAgICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKG1fY3VycmVudEluZGV4
KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgaW50cmluc2ljID0g
ZnVuY3Rpb24tPmV4ZWN1dGFibGUoKS0+aW50cmluc2ljKCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpCiAgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhmdW5jdGlvbiksIGNhbGxUYXJnZXQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiA5
Nzg4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzOCw2ICs2MzgsNyBAQCB2b2lkIGRmZ0xpbmtGb3IoRXhlY1N0YXRlKiBl
eGVjLCBDYWxsTGluCiAgICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgc3RhdGljX2Nhc3Q8aW50
PihleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKSA9PSBjYWxsZWVDb2RlQmxvY2st
Pm1fbnVtUGFyYW1ldGVycykgewogICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtl
ZCgpKTsKICAgICAgICAgY2FsbExpbmtJbmZvLmNhbGxlZS5zZXQoZXhlYy0+Y2FsbGVyRnJhbWUo
KS0+Z2xvYmFsRGF0YSgpLCBjYWxsTGlua0luZm8uaG90UGF0aEJlZ2luLCBjYWxsZXJDb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8ubGFz
dFNlZW5DYWxsZWUuc2V0KGV4ZWMtPmNhbGxlckZyYW1lKCktPmdsb2JhbERhdGEoKSwgY2FsbGVy
Q29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKICAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlciwgY29kZVB0cik7CiAgICAgICAg
IAogICAgICAgICBpZiAoY2FsbGVlQ29kZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkocmV2aXNpb24gOTc4ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNCw2ICs3MjQsNyBAQCB2b2lkIEpJVDo6bGlua0Zv
cihKU0Z1bmN0aW9uKiBjYWxsZWUsIENvCiAgICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgKGNh
bGxlckFyZ0NvdW50ID09IGNhbGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkgewogICAg
ICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby0+aXNMaW5rZWQoKSk7CiAgICAgICAgIGNhbGxMaW5r
SW5mby0+Y2FsbGVlLnNldCgqZ2xvYmFsRGF0YSwgY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVnaW4s
IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNh
bGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KCpnbG9iYWxEYXRhLCBjYWxsZXJDb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwogICAgICAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhjYWxsTGlua0luZm8tPmhvdFBhdGhPdGhlciwgY29kZSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoY2FsbGVlQ29kZUJsb2NrKQo=
</data>
<flag name="review"
          id="109622"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111899</attachid>
            <date>2011-10-20 21:33:34 -0700</date>
            <delta_ts>2011-10-20 21:48:56 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixunlink_patch_2.diff</filename>
            <type>text/plain</type>
            <size>5742</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTgwNjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTEtMTAtMjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgY2FsbCBvcHRpbWl6YXRpb24gaGFuZGxpbmcgd2lsbCBmYWlsIGlmIHRoZSBjYWxsIGhhZCBi
ZWVuIHVubGlua2VkIGR1ZQorICAgICAgICB0byB0aGUgY2FsbGVlIGJlaW5nIG9wdGltaXplZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIElm
IGEgY2FsbCBoYWQgZXZlciBiZWVuIGxpbmtlZCwgd2UgcmVtZW1iZXIgdGhpcyBmYWN0IGFzIHdl
bGwgYXMgdGhlIGZ1bmN0aW9uCisgICAgICAgIHRvIHdoaWNoIGl0IHdhcyBsaW5rZWQgZXZlbiBp
ZiB1bmxpbmtJbmNvbWluZ0NhbGxzKCkgb3IgdW5saW5rQ2FsbHMoKSBhcmUKKyAgICAgICAgY2Fs
bGVkLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR1JlcGF0
Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRmZ0xpbmtGb3IpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmtGb3IpOgorCiAyMDExLTEwLTIwICBZdXFp
YW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgogCiAgICAgICAgIERGRyBKSVQgMzJf
NjQgLSBGaXggQnl0ZUFycmF5IHNwZWN1bGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gOTc4ODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU0NSw5ICsxNTQ1LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90Vmlz
aXQKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsr
aSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5B
QkxFKEpJVCkKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDYWxsTGlua0lu
Zm9zKCk7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDYWxsTGlu
a0luZm9zKCk7ICsraSkgewogICAgICAgICBpZiAoY2FsbExpbmtJbmZvKGkpLmlzTGlua2VkKCkp
CiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmY2FsbExpbmtJbmZvKGkpLmNhbGxlZSk7Cisg
ICAgICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZSkKKyAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxsZWUpOworICAgIH0K
ICNlbmRpZgogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2
aXNpb24gOTc4ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbjsKICAgICAgICAgQ29k
ZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyOwogICAgICAgICBKSVRXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gY2FsbGVlOworICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbGFz
dFNlZW5DYWxsZWU7CiAgICAgICAgIGJvb2wgaGFzU2VlblNob3VsZFJlcGF0Y2ggOiAxOwogICAg
ICAgICBib29sIGlzQ2FsbCA6IDE7CiAgICAgICAgIGJvb2wgaXNERkcgOiAxOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlz
aW9uIDk3ODgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDIsNyArMTY0Miw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KG1fZ3JhcGguaXNGdW5jdGlvbkNvbnN0YW50KG1fY29kZUJsb2NrLCBjYWxsVGFyZ2V0KSkKICAg
ICAgICAgICAgICAgICBjYWxsVHlwZSA9IENvbnN0YW50RnVuY3Rpb247Ci0gICAgICAgICAgICBl
bHNlIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5m
byhtX2N1cnJlbnRJbmRleCkuaXNMaW5rZWQoKSAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkpCisgICAgICAg
ICAgICBlbHNlIGlmICghIW1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Z2V0Q2Fs
bExpbmtJbmZvKG1fY3VycmVudEluZGV4KS5sYXN0U2VlbkNhbGxlZSAmJiAhbV9wcm9maWxlZEJs
b2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkpCiAgICAgICAgICAgICAg
ICAgY2FsbFR5cGUgPSBMaW5rZWRGdW5jdGlvbjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBjYWxsVHlwZSA9IFVua25vd25GdW5jdGlvbjsKQEAgLTE2NjcsNyArMTY2Nyw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAg
ICAgICAgaW50cmluc2ljID0gbV9ncmFwaC52YWx1ZU9mRnVuY3Rpb25Db25zdGFudChtX2NvZGVC
bG9jaywgY2FsbFRhcmdldCktPmV4ZWN1dGFibGUoKS0+aW50cmluc2ljKCk7CiAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBMaW5r
ZWRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8obV9jdXJy
ZW50SW5kZXgpLmNhbGxlZS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmdldENhbGxMaW5r
SW5mbyhtX2N1cnJlbnRJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIGludHJpbnNpYyA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCktPmludHJpbnNpYygpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0Z1bmN0aW9uLCBPcEluZm8oZnVuY3Rp
b24pLCBjYWxsVGFyZ2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVw
YXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmNwcAkocmV2aXNpb24gOTc4ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzgsNiArNjM4LDcgQEAgdm9pZCBkZmdM
aW5rRm9yKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbgogICAgIGlmICghY2FsbGVlQ29kZUJsb2Nr
IHx8IHN0YXRpY19jYXN0PGludD4oZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSkg
PT0gY2FsbGVlQ29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpIHsKICAgICAgICAgQVNTRVJUKCFj
YWxsTGlua0luZm8uaXNMaW5rZWQoKSk7CiAgICAgICAgIGNhbGxMaW5rSW5mby5jYWxsZWUuc2V0
KGV4ZWMtPmNhbGxlckZyYW1lKCktPmdsb2JhbERhdGEoKSwgY2FsbExpbmtJbmZvLmhvdFBhdGhC
ZWdpbiwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAg
ICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLnNldChleGVjLT5jYWxsZXJGcmFtZSgpLT5n
bG9iYWxEYXRhKCksIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7
CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIs
IGNvZGVQdHIpOwogICAgICAgICAKICAgICAgICAgaWYgKGNhbGxlZUNvZGVCbG9jaykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDk3ODgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjQsNiArNzI0LDcg
QEAgdm9pZCBKSVQ6OmxpbmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDbwogICAgIGlmICghY2Fs
bGVlQ29kZUJsb2NrIHx8IChjYWxsZXJBcmdDb3VudCA9PSBjYWxsZWVDb2RlQmxvY2stPm1fbnVt
UGFyYW1ldGVycykpIHsKICAgICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8tPmlzTGlua2VkKCkp
OwogICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoKmdsb2JhbERhdGEsIGNhbGxMaW5r
SW5mby0+aG90UGF0aEJlZ2luLCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBj
YWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldCgqZ2xvYmFs
RGF0YSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKICAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLT5ob3RQYXRoT3RoZXIsIGNvZGUp
OwogICAgICAgICAKICAgICAgICAgaWYgKGNhbGxlZUNvZGVCbG9jaykK
</data>
<flag name="review"
          id="109835"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>