<?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>41507</bug_id>
          
          <creation_ts>2010-07-01 23:01:01 -0700</creation_ts>
          <short_desc>WebSocket: Crash caused by calling close() within onmessage handler</short_desc>
          <delta_ts>2010-07-12 19:42:54 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>245771</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-01 23:01:01 -0700</bug_when>
    <thetext>If you create a WebSocket object during onclose() handler of another WebSocket object, the browser will crash.

This crash may be related to http://crbug.com/44792.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245775</commentid>
    <comment_count>1</comment_count>
      <attachid>60341</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-01 23:16:13 -0700</bug_when>
    <thetext>Created attachment 60341
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245791</commentid>
    <comment_count>2</comment_count>
      <attachid>60341</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-07-02 00:35:41 -0700</bug_when>
    <thetext>Comment on attachment 60341
Fix

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245959</commentid>
    <comment_count>3</comment_count>
      <attachid>60341</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-02 10:29:58 -0700</bug_when>
    <thetext>Comment on attachment 60341
Fix

The code change looks reasonable, but there are some logical steps missing from the explanation. Why does creating a WebSocket object during onclose() handler of another WebSocket object cause this crash? They have separate channels and bridges.

+    while (m_workerContext &amp;&amp; clientWrapper &amp;&amp; !clientWrapper-&gt;syncMethodDone() &amp;&amp; result != MessageQueueTerminated) {
+        result = runLoop.runInMode(m_workerContext.get(), m_taskMode); // May dereference this bridge and m_workerContext.
         clientWrapper = m_workerClientWrapper.get();
     }

What is the exact mechanism that dereferences worker context while waiting here? Is this part of the change covered by the test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247324</commentid>
    <comment_count>4</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-06 22:52:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 60341 [details])
&gt; The code change looks reasonable, but there are some logical steps missing from the explanation. Why does creating a WebSocket object during onclose() handler of another WebSocket object cause this crash? They have separate channels and bridges.
&gt; 
&gt; +    while (m_workerContext &amp;&amp; clientWrapper &amp;&amp; !clientWrapper-&gt;syncMethodDone() &amp;&amp; result != MessageQueueTerminated) {
&gt; +        result = runLoop.runInMode(m_workerContext.get(), m_taskMode); // May dereference this bridge and m_workerContext.
&gt;          clientWrapper = m_workerClientWrapper.get();
&gt;      }
&gt; 
&gt; What is the exact mechanism that dereferences worker context while waiting here? Is this part of the change covered by the test?

I found the test case first, and then looked into the failure. So I&apos;m not sure about the exact mechanism of why this test causes the failure, but it is 100% reproducible with this test.

The source of the failure is that calling WorkerRunLoop::runInMode() may call WebSocket::didClose() (which frees everything). The stack trace is like the following:

    WebSocket::close() is called (in ws1.close())
 -&gt; WorkerThreadableWebSocketChannel::bufferedAmount()
 -&gt; WorkerThreadableWebSocketChannel::Bridge::bufferedAmount()
 -&gt; WorkerThreadableWebSocketChannel::Bridge::waitForMethodCompletion()
 -&gt; WorkerRunLoop::runInMode()
 -&gt; ... -&gt; workerContextDidClose()
 -&gt; ThreadableWebSocketChannelClientWrapper::didClose()
 -&gt; ThreadableWebSocketChannelClientWrapper::processPendingEvents()
 -&gt; WebSocket::didClose()

This causes the channel and other things to get closed, while WebSocket::close() does not think such thing should happen.

&gt; +        result = runLoop.runInMode(m_workerContext.get(), m_taskMode); // May dereference this bridge and m_workerContext.

This comment was a bit inaccurate. Since m_workerContext may become null in Bridge::disconnect(), the comment should be &quot;May causes the bridge to be disconnected, which makes m_workerContext become null.&quot; I will update the comment in a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247744</commentid>
    <comment_count>5</comment_count>
      <attachid>60776</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-07 14:09:45 -0700</bug_when>
    <thetext>Created attachment 60776
a simpler test

I&apos;ll need to think about this patch more deeply, we may be violating some more general ownership rules here. It&apos;s awesome that we have a reproducible test case!

&gt;     m_bufferedAmountAfterClose = m_channel-&gt;bufferedAmount(); // May dereference m_channel.
&gt;     if (m_channel)
&gt;         m_channel-&gt;close();

This comment at least is wrong - we don&apos;t care about m_channel being dereferenced - all we care about to make this call is m_channel being non-null. WebSocket holds its own reference to channel.

I have a simpler reproducible case, one that doesn&apos;t even need to create another WebSocket. It crashes in several different places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247871</commentid>
    <comment_count>6</comment_count>
      <attachid>60341</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-07 17:16:33 -0700</bug_when>
    <thetext>Comment on attachment 60341
Fix

The title of the bug isn&apos;t great - there are multiple crash locations being fixed, not just waitForMethodCompletion(). And this isn&apos;t about creating a WebSocket object from onclose(), as the original description said.

I think that this patch is fine, and just needs better comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248861</commentid>
    <comment_count>7</comment_count>
      <attachid>61023</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-09 02:44:40 -0700</bug_when>
    <thetext>Created attachment 61023
Fix v2 (Simplify test, add comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248864</commentid>
    <comment_count>8</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-09 02:47:42 -0700</bug_when>
    <thetext>Apologies for delay in response. In the new patch, I tried to:
- Add more comments and clarify the situation.
- Simplify the test according to Alexey&apos;s proposal.

Could you take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249090</commentid>
    <comment_count>9</comment_count>
      <attachid>61023</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-09 10:23:30 -0700</bug_when>
    <thetext>Comment on attachment 61023
Fix v2 (Simplify test, add comments)

 +      m_bufferedAmountAfterClose = m_channel-&gt;bufferedAmount(); // May dereference m_channel.

This comment is still misleading, we don&apos;t care about it being dereferenced. WebSocket holds its own reference to m_channel.

I thin that the real explanation is that a didClose notification may be already queued, which we will inadvertently process while waiting for bufferedAmount() to return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249803</commentid>
    <comment_count>10</comment_count>
      <attachid>61222</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-07-12 06:41:46 -0700</bug_when>
    <thetext>Created attachment 61222
Fix v3 (Improve comments as per Alexey&apos;s suggestion)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250245</commentid>
    <comment_count>11</comment_count>
      <attachid>61222</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-12 19:42:50 -0700</bug_when>
    <thetext>Comment on attachment 61222
Fix v3 (Improve comments as per Alexey&apos;s suggestion)

Clearing flags on attachment: 61222

Committed r63159: &lt;http://trac.webkit.org/changeset/63159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250246</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-12 19:42:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60341</attachid>
            <date>2010-07-01 23:16:13 -0700</date>
            <delta_ts>2010-07-09 02:44:35 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>bug-41507-20100702151611.patch</filename>
            <type>text/plain</type>
            <size>8631</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjNiM2M0NzI5ZmE0YTE5MDc2ZTc5ODMxMDMxZTQxZWE4YmZlMDI1Li41Yjg1ZDQ3
OTNlMWMxZWIzYjdlMjU0Zjc4MTU5MzAxNWE2ZjIxNjI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDctMDEgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiBDcmFz
aCBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6d2FpdEZvck1ldGhvZENvbXBs
ZXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
NTA3CisKKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9uZXN0ZWQtY3JlYXRpb24t
Y3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvd29y
a2Vycy9uZXN0ZWQtY3JlYXRpb24tY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vic29j
a2V0L3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL25lc3RlZC1jcmVhdGlvbi1jcmFzaC5qczogQWRk
ZWQuCisgICAgICAgIChydW5UZXN0cy50cnkud3MxLm9ub3Blbik6CisgICAgICAgIChydW5UZXN0
cy50cnkud3MxLm9ubWVzc2FnZSk6CisgICAgICAgIChydW5UZXN0cy50cnkud3MxLm9uY2xvc2Uu
d3MyLm9ub3Blbik6CisgICAgICAgIChydW5UZXN0cy50cnkud3MxLm9uY2xvc2Uud3MyLm9ubWVz
c2FnZSk6CisgICAgICAgIChydW5UZXN0cy50cnkud3MxLm9uY2xvc2Uud3MyLm9uY2xvc2UpOgor
ICAgICAgICAocnVuVGVzdHMudHJ5LndzMS5vbmNsb3NlKToKKyAgICAgICAgKHJ1blRlc3RzKToK
KwogMjAxMC0wNy0wMSAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9uZXN0ZWQtY3JlYXRpb24tY3Jhc2gtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dvcmtlcnMvbmVzdGVkLWNy
ZWF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2MyM2FhOTE5OTc4OGE2YmUz
OGVhYzVkM2VmMGQyMmNhYWM3Zjk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL3dvcmtlcnMvbmVzdGVkLWNyZWF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitOZXN0ZWQgY3JlYXRpb24gb2YgdHdvIFdlYlNvY2tldHMgc2hvdWxk
IG5vdCBjYXVzZSBhIGNyYXNoLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1M6
IHdvcmtlcjogUGFyc2VkIHN1Y2Nlc3NmdWxseS4KK1BBU1M6IHdvcmtlcjogd3MxIGNvbm5lY3Rl
ZC4KK1BBU1M6IHdvcmtlcjogd3MxIHJlY2VpdmVkIG1lc3NhZ2U6ICJIZWxsbyBmcm9tIFNpbXBs
ZSBXU0guIgorUEFTUzogd29ya2VyOiB3czEgY2xvc2VkLgorUEFTUzogd29ya2VyOiB3czIgY29u
bmVjdGVkLgorUEFTUzogd29ya2VyOiB3czIgcmVjZWl2ZWQgbWVzc2FnZTogIkhlbGxvIGZyb20g
U2ltcGxlIFdTSC4iCitQQVNTOiB3b3JrZXI6IHdzMiBjbG9zZWQuCitET05FCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL25l
c3RlZC1jcmVhdGlvbi1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dv
cmtlcnMvbmVzdGVkLWNyZWF0aW9uLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IxOTUzZDc1NTM0
OTk5NDJjMjFlNDdmYjUwNWZhMmIxMWNlMjgwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL25lc3RlZC1jcmVhdGlvbi1jcmFzaC5odG1sCkBA
IC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+PC9oZWFkPgorPGJvZHk+Cis8cD5OZXN0ZWQgY3JlYXRpb24g
b2YgdHdvIFdlYlNvY2tldHMgc2hvdWxkIG5vdCBjYXVzZSBhIGNyYXNoLjwvcD4KKzxwPjwvcD4K
KzxwPk9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi48L3A+Cis8cHJlIGlkPWxvZz4KKzwvcHJlPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQor
CitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICBsb2coIlRFU1QgQ09NUExFVEUiKTsKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9Cit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2Vz
L25lc3RlZC1jcmVhdGlvbi1jcmFzaC5qcycpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
IChldnQpIHsKKyAgICBsb2coZXZ0LmRhdGEpOworICAgIGlmIChldnQuZGF0YSA9PSAiRE9ORSIp
CisgICAgICAgIGVuZFRlc3QoKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9u
ZXN0ZWQtY3JlYXRpb24tY3Jhc2guanMgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd29y
a2Vycy9yZXNvdXJjZXMvbmVzdGVkLWNyZWF0aW9uLWNyYXNoLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmNmFi
ZjU5YmIxNTI4M2U0ZTY4ZGJkOGZlYzhjNTlmZTU3NmJkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvbmVzdGVkLWNyZWF0
aW9uLWNyYXNoLmpzCkBAIC0wLDAgKzEsNDkgQEAKK2Z1bmN0aW9uIHJ1blRlc3RzKCkKK3sKKyAg
ICB0cnkgeworICAgICAgICB2YXIgdXJsID0gJ3dzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0
L3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3NpbXBsZSc7CisgICAgICAgIHZhciB3czEgPSBuZXcg
V2ViU29ja2V0KHVybCk7CisgICAgICAgIHZhciB3czI7CisKKyAgICAgICAgd3MxLm9ub3BlbiA9
IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoJ1BBU1M6IHdv
cmtlcjogd3MxIGNvbm5lY3RlZC4nKTsKKyAgICAgICAgfTsKKworICAgICAgICB3czEub25tZXNz
YWdlID0gZnVuY3Rpb24obWVzc2FnZUV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBwb3N0
TWVzc2FnZSgnUEFTUzogd29ya2VyOiB3czEgcmVjZWl2ZWQgbWVzc2FnZTogIicgKyBtZXNzYWdl
RXZlbnQuZGF0YSArICciJyk7CisgICAgICAgICAgICB3czEuY2xvc2UoKTsKKyAgICAgICAgfTsK
KworICAgICAgICB3czEub25jbG9zZSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcG9zdE1lc3NhZ2UoJ1BBU1M6IHdvcmtlcjogd3MxIGNsb3NlZC4nKTsKKworICAgICAgICAg
ICAgd3MyID0gbmV3IFdlYlNvY2tldCh1cmwpOworCisgICAgICAgICAgICB3czIub25vcGVuID0g
ZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdQ
QVNTOiB3b3JrZXI6IHdzMiBjb25uZWN0ZWQuJyk7CisgICAgICAgICAgICB9OworCisgICAgICAg
ICAgICB3czIub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZUV2ZW50KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdQQVNTOiB3b3JrZXI6IHdzMiByZWNlaXZl
ZCBtZXNzYWdlOiAiJyArIG1lc3NhZ2VFdmVudC5kYXRhICsgJyInKTsKKyAgICAgICAgICAgICAg
ICB3czIuY2xvc2UoKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHdzMi5vbmNsb3Nl
ID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdl
KCdQQVNTOiB3b3JrZXI6IHdzMiBjbG9zZWQuJyk7CisgICAgICAgICAgICAgICAgcG9zdE1lc3Nh
Z2UoJ0RPTkUnKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBwb3N0TWVzc2FnZSgnRkFJTDogd29ya2VyOiBVbmV4cGVjdGVkIGV4Y2VwdGlv
bjogJyArIGUpOworICAgIH0gZmluYWxseSB7CisgICAgICAgIHBvc3RNZXNzYWdlKCdQQVNTOiB3
b3JrZXI6IFBhcnNlZCBzdWNjZXNzZnVsbHkuJyk7CisgICAgfQorfQorCitydW5UZXN0cygpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGQyZDJjZGVmMDUxMmZjZjRlMmY5MjZkOGRhODQzYmY5YjQxMjhjLi45MWIwMmQ1NGNmMzNlMDM3
NWE2ZjU1MWY3MjBjYTg5NmE0ODhjNmM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA3LTAxICBZdXRh
IEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldDogQ3Jhc2ggaW4gV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OndhaXRGb3JNZXRob2RDb21wbGV0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTUwNworCisgICAgICAgIFRl
c3Q6IHdlYnNvY2tldC90ZXN0cy93b3JrZXJzL25lc3RlZC1jcmVhdGlvbi1jcmFzaC5odG1sCisK
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6OmNsb3NlKTogQ2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBtX2NoYW5uZWwuCisgICAg
ICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdl
OjpzZW5kKTogQWRkIHJlZmVyZW5jZSB0byAidGhpcyIKKyAgICAgICAgdG8gcHJldmVudCB1bmV4
cGVjdGVkIGRlbGV0aW9uIG9mIHRoZSBicmlkZ2UuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZmZXJlZEFtb3VudCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24pOgorICAgICAgICBDaGVjayB0aGUgZXhpc3Rl
bmNlIG9mIG1fd29ya2VyQ29udGV4dC4KKwogMjAxMC0wNy0wMSAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBObyByZXZpZXcuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCmluZGV4IDU2MWI4MjE4MDgxMmYxZjBlOGRkMmEyYzg2N2ZiNWYzODMzYTg4NzQu
LjUyMjgyNzQzOWQ0ZTk2NWUyM2NmM2VhNjA5NjczNGZmOTU0NDc4ZjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCkBAIC0xNzgsOCArMTc4LDkgQEAgdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkK
ICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRl
ID0gQ0xPU0VEOwotICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gbV9jaGFubmVsLT5i
dWZmZXJlZEFtb3VudCgpOwotICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKKyAgICBtX2J1ZmZlcmVk
QW1vdW50QWZ0ZXJDbG9zZSA9IG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsgLy8gTWF5IGRl
cmVmZXJlbmNlIG1fY2hhbm5lbC4KKyAgICBpZiAobV9jaGFubmVsKQorICAgICAgICBtX2NoYW5u
ZWwtPmNsb3NlKCk7CiB9CiAKIGNvbnN0IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IGY4ZDEyMzAxYjg0NjY4MTVjMzk2ZGM1MWI4ZWExM2Q2MjEwMjc3YjEu
LjgyMmQyNGZkNDEyMDMyY2ZmZmUxYTljM2ZmYjdkMjU5MTc4OTBjMTEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtMzAwLDYgKzMwMCw3IEBAIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKG1fcGVl
cik7CiAgICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRTZW5kLCBtX3BlZXIsIG1lc3NhZ2UpKTsKKyAgICBSZWZQdHI8
QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAg
ICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwogICAgIHJldHVybiBjbGllbnRXcmFwcGVy
ICYmIGNsaWVudFdyYXBwZXItPnNlbnQoKTsKQEAgLTMyMSw2ICszMjIsNyBAQCB1bnNpZ25lZCBs
b25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVkQW1v
dW50KCkKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsK
ICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50
LCBtX3BlZXIpKTsKKyAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRG
b3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwog
ICAgIGlmIChjbGllbnRXcmFwcGVyKQpAQCAtNDExLDggKzQxMyw4IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24o
KQogICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSBtX3dvcmtlckNvbnRleHQtPnRocmVhZCgp
LT5ydW5Mb29wKCk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdl
UXVldWVNZXNzYWdlUmVjZWl2ZWQ7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwot
ICAgIHdoaWxlIChjbGllbnRXcmFwcGVyICYmICFjbGllbnRXcmFwcGVyLT5zeW5jTWV0aG9kRG9u
ZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7Ci0gICAgICAgIHJlc3Vs
dCA9IHJ1bkxvb3AucnVuSW5Nb2RlKG1fd29ya2VyQ29udGV4dC5nZXQoKSwgbV90YXNrTW9kZSk7
CisgICAgd2hpbGUgKG1fd29ya2VyQ29udGV4dCAmJiBjbGllbnRXcmFwcGVyICYmICFjbGllbnRX
cmFwcGVyLT5zeW5jTWV0aG9kRG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5h
dGVkKSB7CisgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKG1fd29ya2VyQ29udGV4
dC5nZXQoKSwgbV90YXNrTW9kZSk7IC8vIE1heSBkZXJlZmVyZW5jZSB0aGlzIGJyaWRnZSBhbmQg
bV93b3JrZXJDb250ZXh0LgogICAgICAgICBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLmdldCgpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>60776</attachid>
            <date>2010-07-07 14:09:45 -0700</date>
            <delta_ts>2010-07-07 14:09:45 -0700</delta_ts>
            <desc>a simpler test</desc>
            <filename>nested-creation-crash.js</filename>
            <type>application/x-javascript</type>
            <size>733</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gcnVuVGVzdHMoKQp7CiAgICB0cnkgewogICAgICAgIHZhciB1cmwgPSAnd3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvc2ltcGxlJzsK
ICAgICAgICB2YXIgd3MxID0gbmV3IFdlYlNvY2tldCh1cmwpOwogICAgICAgIHZhciB3czI7Cgog
ICAgICAgIHdzMS5vbm9wZW4gPSBmdW5jdGlvbigpCiAgICAgICAgewogICAgICAgICAgICBwb3N0
TWVzc2FnZSgnUEFTUzogd29ya2VyOiB3czEgY29ubmVjdGVkLicpOwogICAgICAgIH07CgogICAg
ICAgIHdzMS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQpCiAgICAgICAgewogICAg
ICAgICAgICBwb3N0TWVzc2FnZSgnUEFTUzogd29ya2VyOiB3czEgcmVjZWl2ZWQgbWVzc2FnZTog
IicgKyBtZXNzYWdlRXZlbnQuZGF0YSArICciJyk7CiAgICAgICAgICAgIHdzMS5jbG9zZSgpOwog
ICAgICAgIH07CgogICAgICAgIHdzMS5vbmNsb3NlID0gZnVuY3Rpb24oKQogICAgICAgIHsKICAg
ICAgICAgICAgcG9zdE1lc3NhZ2UoJ0RPTkUnKTsKICAgICAgICB9OwogICAgfSBjYXRjaCAoZSkg
ewogICAgICAgIHBvc3RNZXNzYWdlKCdGQUlMOiB3b3JrZXI6IFVuZXhwZWN0ZWQgZXhjZXB0aW9u
OiAnICsgZSk7CiAgICB9IGZpbmFsbHkgewogICAgICAgIHBvc3RNZXNzYWdlKCdQQVNTOiB3b3Jr
ZXI6IFBhcnNlZCBzdWNjZXNzZnVsbHkuJyk7CiAgICB9Cn0KCnJ1blRlc3RzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61023</attachid>
            <date>2010-07-09 02:44:40 -0700</date>
            <delta_ts>2010-07-12 06:41:41 -0700</delta_ts>
            <desc>Fix v2 (Simplify test, add comments)</desc>
            <filename>bug-41507-20100709184438.patch</filename>
            <type>text/plain</type>
            <size>8865</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTg5OTE1Y2MyZWVjNjFkODdiY2Q2YTM1M2E0ZmI5MmYxNzdlZDI1Li41MWE4NmEx
NGVjMDVjMWZhOGRhN2Y2YjdmNWMyNmM3MDAzYjZkMmFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDctMDkgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNyYXNoIGNhdXNl
ZCBieSB1bmludGVudGlvbmFsIGRlbGV0aW9uIG9mIHdvcmtlciBicmlkZ2UgYW5kIGNoYW5uZWwu
CisKKyAgICAgICAgV2ViU29ja2V0OiBDcmFzaCBjYXVzZWQgYnkgY2FsbGluZyBjbG9zZSgpIHdp
dGhpbiBvbm1lc3NhZ2UgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDE1MDcKKworICAgICAgICAqIHdlYnNvY2tldC90ZXN0cy93b3JrZXJz
L2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYnNvY2tldC90ZXN0cy93b3JrZXJzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2Ut
aW4tb25tZXNzYWdlLWNyYXNoLmpzOiBBZGRlZC4KKyAgICAgICAgKHJ1blRlc3RzLnRyeS53cy5v
bm9wZW4pOgorICAgICAgICAocnVuVGVzdHMudHJ5LndzLm9ubWVzc2FnZSk6IENhbGxpbmcgY2xv
c2UoKSBpbnNpZGUgdGhlIG9ubWVzc2FnZSBoYW5kbGVyCisgICAgICAgIGNhdXNlcyB0aGUgY3Jh
c2guCisgICAgICAgIChydW5UZXN0cy50cnkud3Mub25jbG9zZSk6CisgICAgICAgIChydW5UZXN0
cyk6CisKIDIwMTAtMDctMDggIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dvcmtlcnMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNo
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL2Nsb3Nl
LWluLW9ubWVzc2FnZS1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRhMjM4N2NkODgy
YTMxMjMzOTY5MzY2OTdmM2IzZTY3MDljODhmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorTmVzdGVkIGNyZWF0aW9uIG9mIHR3byBXZWJTb2Nr
ZXRzIHNob3VsZCBub3QgY2F1c2UgYSBjcmFzaC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitQQVNTOiB3b3JrZXI6IFBhcnNlZCBzdWNjZXNzZnVsbHkuCitQQVNTOiB3b3JrZXI6IENv
bm5lY3RlZC4KK1BBU1M6IHdvcmtlcjogUmVjZWl2ZWQgbWVzc2FnZTogIkhlbGxvIGZyb20gU2lt
cGxlIFdTSC4iCitQQVNTOiB3b3JrZXI6IENsb3NlZC4KK0RPTkUKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dvcmtlcnMvY2xvc2UtaW4t
b25tZXNzYWdlLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd29ya2Vy
cy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTVhMTdjNjQwYzNj
ZGYwNzA1YTE1OTEzNDAyYzM2NzBjNDQ5YjYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2Vic29ja2V0L3Rlc3RzL3dvcmtlcnMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmh0bWwK
QEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD48L2hlYWQ+Cis8Ym9keT4KKzxwPk5lc3RlZCBjcmVhdGlv
biBvZiB0d28gV2ViU29ja2V0cyBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2guPC9wPgorPHA+PC9w
PgorPHA+T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLjwvcD4KKzxwcmUgaWQ9bG9nPgorPC9wcmU+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7Cit9
CisKK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGxvZygiVEVTVCBDT01QTEVURSIpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJj
ZXMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmpzJyk7Cit3b3JrZXIub25tZXNzYWdlID0gZnVu
Y3Rpb24gKGV2dCkgeworICAgIGxvZyhldnQuZGF0YSk7CisgICAgaWYgKGV2dC5kYXRhID09ICJE
T05FIikKKyAgICAgICAgZW5kVGVzdCgpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dvcmtlcnMvcmVzb3Vy
Y2VzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC5qcyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90
ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzY5NGQwZjhhNTk2MWI5ZGU1ZmU5M2UyMWJlNmMzMWY1ODE1MzQwNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9j
bG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guanMKQEAgLTAsMCArMSwzMCBAQAorZnVuY3Rpb24gcnVu
VGVzdHMoKQoreworICAgIHRyeSB7CisgICAgICAgIHZhciB1cmwgPSAnd3M6Ly9sb2NhbGhvc3Q6
ODg4MC93ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvc2ltcGxlJzsKKyAgICAgICAg
dmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworCisgICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0
aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoJ1BBU1M6IHdvcmtlcjog
Q29ubmVjdGVkLicpOworICAgICAgICB9OworCisgICAgICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKG1lc3NhZ2VFdmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoJ1BB
U1M6IHdvcmtlcjogUmVjZWl2ZWQgbWVzc2FnZTogIicgKyBtZXNzYWdlRXZlbnQuZGF0YSArICci
Jyk7CisgICAgICAgICAgICB3cy5jbG9zZSgpOworICAgICAgICB9OworCisgICAgICAgIHdzLm9u
Y2xvc2UgPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdQ
QVNTOiB3b3JrZXI6IENsb3NlZC4nKTsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdET05FJyk7
CisgICAgICAgIH07CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBwb3N0TWVzc2FnZSgnRkFJ
TDogd29ya2VyOiBVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJyArIGUpOworICAgIH0gZmluYWxseSB7
CisgICAgICAgIHBvc3RNZXNzYWdlKCdQQVNTOiB3b3JrZXI6IFBhcnNlZCBzdWNjZXNzZnVsbHku
Jyk7CisgICAgfQorfQorCitydW5UZXN0cygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNmFlNmY2NDUwNDJjMDM4MTkwNGI0MThlODk4
Y2IxZTUxN2IxZTkyLi5jOTU5ZWExZGVjNDY3ZDEyNzRmNDI1YjlhZmRmMmQwMTk1NGQ4Y2NhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDEwLTA3LTA5ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBjcmFzaCBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbCBkZWxldGlvbiBvZiB3b3JrZXIgYnJpZGdl
IGFuZCBjaGFubmVsLgorCisgICAgICAgIFdlYlNvY2tldDogQ3Jhc2ggY2F1c2VkIGJ5IGNhbGxp
bmcgY2xvc2UoKSB3aXRoaW4gb25tZXNzYWdlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNTA3CisKKyAgICAgICAgVGVzdDogd2Vic29j
a2V0L3Rlc3RzL3dvcmtlcnMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmh0bWwKKworICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6Y2xvc2UpOiBidWZmZXJlZEFtb3VudCgpIG1heSBjYWxsIFdlYlNvY2tldDo6ZGlkQ2xvc2Uo
KSwKKyAgICAgICAgd2hpY2ggY2F1c2VzIG1fY2hhbm5lbCB0byBnZXQgZnJlZWQuCisgICAgICAg
ICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpz
ZW5kKTogQWRkIHJlZmVyZW5jZSB0bworICAgICAgICB0aGUgYnJpZGdlIGJlY2F1c2Ugd2FpdEZv
ck1ldGhvZENvbXBsZXRpb24oKSBtYXkgZGVyZWZlcmVuY2UgdGhlIGJyaWRnZS4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZl
cmVkQW1vdW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbik6CisgICAgICAg
IFRoZSByb290IGNhdXNlIGlzIGEgY2FsbCB0byBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUgaW4g
dGhpcyBmdW5jdGlvbi4KKyAgICAgICAgSXQgbWF5IGNhbGwgV2ViU29ja2V0OjpkaWRDbG9zZSgp
IGV2ZW4gaW5zaWRlIFdlYlNvY2tldDo6Y2xvc2UoKSwgd2hpY2ggZnJlZXMKKyAgICAgICAgZXZl
cnl0aGluZyBpbmNsdWRpbmcgdGhlIHdvcmtlciBicmlkZ2UgYW5kIHRoZSBjaGFubmVsLgorCiAy
MDEwLTA3LTA4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
aW5kZXggNTYxYjgyMTgwODEyZjFmMGU4ZGQyYTJjODY3ZmI1ZjM4MzNhODg3NC4uNTIyODI3NDM5
ZDRlOTY1ZTIzY2YzZWE2MDk2NzM0ZmY5NTQ0NzhmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKQEAgLTE3OCw4ICsxNzgsOSBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQogICAgIGlmICht
X3N0YXRlID09IENMT1NFRCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7
Ci0gICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBtX2NoYW5uZWwtPmJ1ZmZlcmVkQW1v
dW50KCk7Ci0gICAgbV9jaGFubmVsLT5jbG9zZSgpOworICAgIG1fYnVmZmVyZWRBbW91bnRBZnRl
ckNsb3NlID0gbV9jaGFubmVsLT5idWZmZXJlZEFtb3VudCgpOyAvLyBNYXkgZGVyZWZlcmVuY2Ug
bV9jaGFubmVsLgorICAgIGlmIChtX2NoYW5uZWwpCisgICAgICAgIG1fY2hhbm5lbC0+Y2xvc2Uo
KTsKIH0KIAogY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggZjhkMTIzMDFiODQ2NjgxNWMzOTZkYzUxYjhlYTEzZDYyMTAyNzdiMS4uZmQ4MjU5MTc1
ZmMwMjcxNWVjZDdmNzEzYjkyMTE2NTI2ODZlZjdiZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zMDAs
NiArMzAwLDcgQEAgYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdl
OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBz
ZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZFNlbmQsIG1fcGVlciwgbWVzc2FnZSkpOworICAgIFJlZlB0cjxCcmlkZ2U+IHBy
b3RlY3QodGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgcmV0dXJuIGNsaWVudFdyYXBwZXIgJiYgY2xpZW50
V3JhcHBlci0+c2VudCgpOwpAQCAtMzIxLDYgKzMyMiw3IEBAIHVuc2lnbmVkIGxvbmcgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQoKQogICAg
IEFTU0VSVChtX3BlZXIpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwogICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQnVmZmVyZWRBbW91bnQsIG1fcGVlcikp
OworICAgIFJlZlB0cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENv
bXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIq
IGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgaWYgKGNs
aWVudFdyYXBwZXIpCkBAIC00MDQsNiArNDA2LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZXRNZXRob2ROb3RDb21wbGV0ZWQoKQogICAgIG1fd29y
a2VyQ2xpZW50V3JhcHBlci0+Y2xlYXJTeW5jTWV0aG9kRG9uZSgpOwogfQogCisvLyBDYWxsZXIg
b2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgaG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgYnJpZGdlLCBi
ZWNhdXNlIHRoaXMgZnVuY3Rpb24gbWF5IGNhbGwgV2ViU29ja2V0OjpkaWRDbG9zZSgpIGluIHRo
ZSBlbmQsCisvLyB3aGljaCBjYXVzZXMgdGhlIGJyaWRnZSB0byBnZXQgZGlzY29ubmVjdGVkIGZy
b20gdGhlIFdlYlNvY2tldCBhbmQgZGVsZXRlZCBpZiB0aGVyZSBpcyBubyBvdGhlciByZWZlcmVu
Y2UuCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OndhaXRG
b3JNZXRob2RDb21wbGV0aW9uKCkKIHsKICAgICBpZiAoIW1fd29ya2VyQ29udGV4dCkKQEAgLTQx
MSw4ICs0MTUsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OndhaXRGb3JNZXRob2RDb21wbGV0aW9uKCkKICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29w
ID0gbV93b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwogICAgIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwogICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1f
d29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKLSAgICB3aGlsZSAoY2xpZW50V3JhcHBlciAmJiAh
Y2xpZW50V3JhcHBlci0+c3luY01ldGhvZERvbmUoKSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCkgewotICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZShtX3dvcmtl
ckNvbnRleHQuZ2V0KCksIG1fdGFza01vZGUpOworICAgIHdoaWxlIChtX3dvcmtlckNvbnRleHQg
JiYgY2xpZW50V3JhcHBlciAmJiAhY2xpZW50V3JhcHBlci0+c3luY01ldGhvZERvbmUoKSAmJiBy
ZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkgeworICAgICAgICByZXN1bHQgPSBydW5M
b29wLnJ1bkluTW9kZShtX3dvcmtlckNvbnRleHQuZ2V0KCksIG1fdGFza01vZGUpOyAvLyBNYXkg
Y2F1c2UgdGhpcyBicmlkZ2UgdG8gZ2V0IGRpc2Nvbm5lY3RlZCwgd2hpY2ggbWFrZXMgbV93b3Jr
ZXJDb250ZXh0IGJlY29tZSBudWxsLgogICAgICAgICBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJD
bGllbnRXcmFwcGVyLmdldCgpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61222</attachid>
            <date>2010-07-12 06:41:46 -0700</date>
            <delta_ts>2010-07-12 19:42:50 -0700</delta_ts>
            <desc>Fix v3 (Improve comments as per Alexey&apos;s suggestion)</desc>
            <filename>bug-41507-20100712224144.patch</filename>
            <type>text/plain</type>
            <size>8998</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNGIyNjc0ZDkxMTNhYTJlNWUyMWQ3MjJlMjJkZjIyYjcxODYxYzQ1Li42YmZhMWFj
MmE5MzQ1OGIzNWE0ZDQ3NjRlMzkxMjczYjM5MTU5OGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDctMTIgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNyYXNoIGNhdXNl
ZCBieSB1bmludGVudGlvbmFsIGRlbGV0aW9uIG9mIHdvcmtlciBicmlkZ2UgYW5kIGNoYW5uZWwu
CisKKyAgICAgICAgV2ViU29ja2V0OiBDcmFzaCBjYXVzZWQgYnkgY2FsbGluZyBjbG9zZSgpIHdp
dGhpbiBvbm1lc3NhZ2UgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDE1MDcKKworICAgICAgICAqIHdlYnNvY2tldC90ZXN0cy93b3JrZXJz
L2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYnNvY2tldC90ZXN0cy93b3JrZXJzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2Ut
aW4tb25tZXNzYWdlLWNyYXNoLmpzOiBBZGRlZC4KKyAgICAgICAgKHJ1blRlc3RzLnRyeS53cy5v
bm9wZW4pOgorICAgICAgICAocnVuVGVzdHMudHJ5LndzLm9ubWVzc2FnZSk6IENhbGxpbmcgY2xv
c2UoKSBpbnNpZGUgdGhlIG9ubWVzc2FnZSBoYW5kbGVyCisgICAgICAgIGNhdXNlcyB0aGUgY3Jh
c2guCisgICAgICAgIChydW5UZXN0cy50cnkud3Mub25jbG9zZSk6CisgICAgICAgIChydW5UZXN0
cyk6CisKIDIwMTAtMDctMTIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFz
aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9jbG9z
ZS1pbi1vbm1lc3NhZ2UtY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYTIzODdjZDg4
MmEzMTIzMzk2OTM2Njk3ZjNiM2U2NzA5Yzg4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2gtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK05lc3RlZCBjcmVhdGlvbiBvZiB0d28gV2ViU29j
a2V0cyBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2guCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworUEFTUzogd29ya2VyOiBQYXJzZWQgc3VjY2Vzc2Z1bGx5LgorUEFTUzogd29ya2VyOiBD
b25uZWN0ZWQuCitQQVNTOiB3b3JrZXI6IFJlY2VpdmVkIG1lc3NhZ2U6ICJIZWxsbyBmcm9tIFNp
bXBsZSBXU0guIgorUEFTUzogd29ya2VyOiBDbG9zZWQuCitET05FCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL2Nsb3NlLWlu
LW9ubWVzc2FnZS1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dvcmtl
cnMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk1YTE3YzY0MGMz
Y2RmMDcwNWExNTkxMzQwMmMzNjcwYzQ0OWI2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC5odG1s
CkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+PC9oZWFkPgorPGJvZHk+Cis8cD5OZXN0ZWQgY3JlYXRp
b24gb2YgdHdvIFdlYlNvY2tldHMgc2hvdWxkIG5vdCBjYXVzZSBhIGNyYXNoLjwvcD4KKzxwPjwv
cD4KKzxwPk9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi48L3A+Cis8cHJlIGlkPWxvZz4KKzwvcHJl
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOwor
fQorCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICBsb2coIlRFU1QgQ09NUExFVEUiKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3Vy
Y2VzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC5qcycpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uIChldnQpIHsKKyAgICBsb2coZXZ0LmRhdGEpOworICAgIGlmIChldnQuZGF0YSA9PSAi
RE9ORSIpCisgICAgICAgIGVuZFRlc3QoKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL3Jlc291
cmNlcy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guanMgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQv
dGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM2OTRkMGY4YTU5NjFiOWRlNWZlOTNlMjFiZTZjMzFmNTgxNTM0MDQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMv
Y2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmpzCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIHJ1
blRlc3RzKCkKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgdXJsID0gJ3dzOi8vbG9jYWxob3N0
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3NpbXBsZSc7CisgICAgICAg
IHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAgICAgICB3cy5vbm9wZW4gPSBmdW5j
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdQQVNTOiB3b3JrZXI6
IENvbm5lY3RlZC4nKTsKKyAgICAgICAgfTsKKworICAgICAgICB3cy5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihtZXNzYWdlRXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdQ
QVNTOiB3b3JrZXI6IFJlY2VpdmVkIG1lc3NhZ2U6ICInICsgbWVzc2FnZUV2ZW50LmRhdGEgKyAn
IicpOworICAgICAgICAgICAgd3MuY2xvc2UoKTsKKyAgICAgICAgfTsKKworICAgICAgICB3cy5v
bmNsb3NlID0gZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgn
UEFTUzogd29ya2VyOiBDbG9zZWQuJyk7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgnRE9ORScp
OworICAgICAgICB9OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoJ0ZB
SUw6IHdvcmtlcjogVW5leHBlY3RlZCBleGNlcHRpb246ICcgKyBlKTsKKyAgICB9IGZpbmFsbHkg
eworICAgICAgICBwb3N0TWVzc2FnZSgnUEFTUzogd29ya2VyOiBQYXJzZWQgc3VjY2Vzc2Z1bGx5
LicpOworICAgIH0KK30KKworcnVuVGVzdHMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA5ZTQzOGE1ZDZhNmM1OTI4YmNmOGUzN2I2
OWVkOTJiMzA5ZDUyYi4uODUwNTFmMzE3M2RmYzA2NWQxOWQwZmY4Nzk2NmM1ZjczZjE0Zjk3ZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxMC0wNy0xMiAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggY3Jhc2ggY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWwgZGVsZXRpb24gb2Ygd29ya2VyIGJyaWRn
ZSBhbmQgY2hhbm5lbC4KKworICAgICAgICBXZWJTb2NrZXQ6IENyYXNoIGNhdXNlZCBieSBjYWxs
aW5nIGNsb3NlKCkgd2l0aGluIG9ubWVzc2FnZSBoYW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTUwNworCisgICAgICAgIFRlc3Q6IHdlYnNv
Y2tldC90ZXN0cy93b3JrZXJzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC5odG1sCisKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmNsb3NlKTogYnVmZmVyZWRBbW91bnQoKSBtYXkgY2FsbCBXZWJTb2NrZXQ6OmRpZENsb3Nl
KCksCisgICAgICAgIHdoaWNoIGNhdXNlcyBtX2NoYW5uZWwgdG8gZ2V0IGZyZWVkLgorICAgICAg
ICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
c2VuZCk6IEFkZCByZWZlcmVuY2UgdG8KKyAgICAgICAgdGhlIGJyaWRnZSBiZWNhdXNlIHdhaXRG
b3JNZXRob2RDb21wbGV0aW9uKCkgbWF5IGRlcmVmZXJlbmNlIHRoZSBicmlkZ2UuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZm
ZXJlZEFtb3VudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24pOgorICAgICAg
ICBUaGUgcm9vdCBjYXVzZSBpcyBhIGNhbGwgdG8gV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlIGlu
IHRoaXMgZnVuY3Rpb24uCisgICAgICAgIEl0IG1heSBjYWxsIFdlYlNvY2tldDo6ZGlkQ2xvc2Uo
KSBldmVuIGluc2lkZSBXZWJTb2NrZXQ6OmNsb3NlKCksIHdoaWNoIGZyZWVzCisgICAgICAgIGV2
ZXJ5dGhpbmcgaW5jbHVkaW5nIHRoZSB3b3JrZXIgYnJpZGdlIGFuZCB0aGUgY2hhbm5lbC4KKwog
MjAxMC0wNy0xMiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA1
NjFiODIxODA4MTJmMWYwZThkZDJhMmM4NjdmYjVmMzgzM2E4ODc0Li45MTc2MWZiYTc2NjAzYzRm
ZjhmZjIxYzIwMTVlNjhjYzA3ZDgxNjZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAt
MTc5LDcgKzE3OSwxMCBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQogICAgICAgICByZXR1cm47
CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9
IG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKLSAgICBtX2NoYW5uZWwtPmNsb3NlKCk7Cisg
ICAgLy8gZGlkQ2xvc2Ugbm90aWZpY2F0aW9uIG1heSBiZSBhbHJlYWR5IHF1ZXVlZCwgd2hpY2gg
d2Ugd2lsbCBpbmFkdmVydGVudGx5IHByb2Nlc3Mgd2hpbGUgd2FpdGluZyBmb3IgYnVmZmVyZWRB
bW91bnQoKSB0byByZXR1cm4uCisgICAgLy8gSW4gdGhpcyBjYXNlIG1fY2hhbm5lbCB3aWxsIGJl
IHNldCB0byBudWxsIGR1cmluZyBkaWRDbG9zZSgpIGNhbGwsIHRodXMgd2UgbmVlZCB0byB0ZXN0
IHZhbGlkbmVzcyBvZiBtX2NoYW5uZWwgaGVyZS4KKyAgICBpZiAobV9jaGFubmVsKQorICAgICAg
ICBtX2NoYW5uZWwtPmNsb3NlKCk7CiB9CiAKIGNvbnN0IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGY4ZDEyMzAxYjg0NjY4MTVjMzk2ZGM1MWI4ZWExM2Q2
MjEwMjc3YjEuLmZkODI1OTE3NWZjMDI3MTVlY2Q3ZjcxM2I5MjExNjUyNjg2ZWY3YmUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtMzAwLDYgKzMwMCw3IEBAIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNT
RVJUKG1fcGVlcik7CiAgICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7CiAgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kLCBtX3BlZXIsIG1lc3NhZ2UpKTsKKyAg
ICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0
aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGll
bnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwogICAgIHJldHVybiBjbGll
bnRXcmFwcGVyICYmIGNsaWVudFdyYXBwZXItPnNlbnQoKTsKQEAgLTMyMSw2ICszMjIsNyBAQCB1
bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1
ZmZlcmVkQW1vdW50KCkKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBzZXRNZXRob2ROb3RDb21w
bGV0ZWQoKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEJ1ZmZl
cmVkQW1vdW50LCBtX3BlZXIpKTsKKyAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwog
ICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVy
LmdldCgpOwogICAgIGlmIChjbGllbnRXcmFwcGVyKQpAQCAtNDA0LDYgKzQwNiw4IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2V0TWV0aG9kTm90Q29t
cGxldGVkKCkKICAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmNsZWFyU3luY01ldGhvZERvbmUo
KTsKIH0KIAorLy8gQ2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGhvbGQgYSByZWZlcmVu
Y2UgdG8gdGhlIGJyaWRnZSwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIG1heSBjYWxsIFdlYlNvY2tl
dDo6ZGlkQ2xvc2UoKSBpbiB0aGUgZW5kLAorLy8gd2hpY2ggY2F1c2VzIHRoZSBicmlkZ2UgdG8g
Z2V0IGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBXZWJTb2NrZXQgYW5kIGRlbGV0ZWQgaWYgdGhlcmUg
aXMgbm8gb3RoZXIgcmVmZXJlbmNlLgogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjp3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpCiB7CiAgICAgaWYgKCFtX3dv
cmtlckNvbnRleHQpCkBAIC00MTEsOCArNDE1LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpCiAgICAgV29y
a2VyUnVuTG9vcCYgcnVuTG9vcCA9IG1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnJ1bkxvb3Ao
KTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3Nh
Z2VSZWNlaXZlZDsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIq
IGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7Ci0gICAgd2hpbGUg
KGNsaWVudFdyYXBwZXIgJiYgIWNsaWVudFdyYXBwZXItPnN5bmNNZXRob2REb25lKCkgJiYgcmVz
dWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKLSAgICAgICAgcmVzdWx0ID0gcnVuTG9v
cC5ydW5Jbk1vZGUobV93b3JrZXJDb250ZXh0LmdldCgpLCBtX3Rhc2tNb2RlKTsKKyAgICB3aGls
ZSAobV93b3JrZXJDb250ZXh0ICYmIGNsaWVudFdyYXBwZXIgJiYgIWNsaWVudFdyYXBwZXItPnN5
bmNNZXRob2REb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKKyAg
ICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUobV93b3JrZXJDb250ZXh0LmdldCgpLCBt
X3Rhc2tNb2RlKTsgLy8gTWF5IGNhdXNlIHRoaXMgYnJpZGdlIHRvIGdldCBkaXNjb25uZWN0ZWQs
IHdoaWNoIG1ha2VzIG1fd29ya2VyQ29udGV4dCBiZWNvbWUgbnVsbC4KICAgICAgICAgY2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKICAgICB9CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>