<?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>96459</bug_id>
          
          <creation_ts>2012-09-11 19:29:55 -0700</creation_ts>
          <short_desc>[V8] OOM in Workers due to external memory retention.</short_desc>
          <delta_ts>2012-09-12 17:51:08 -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>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="Dmitry Titov">dimich</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>717832</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-09-11 19:29:55 -0700</bug_when>
    <thetext>There are repeated cases when Workers processes crash in Chromium due to OOM. 
Here is an example: http://code.google.com/p/chromium/issues/detail?id=145982

This happens because we don&apos;t use the same technique that we use on the main thread for measuring the overall amount of memory allocated and hint the V8 GC to collect garbage in case it goes over certain threshold. Often quite a big memory areas are hanging on a relatively small V8 objects which V8 GC is not in a hurry to collect. For main thread, it was fixed (bug 31051), we need to do the same for Workers.

Patch is coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717835</commentid>
    <comment_count>1</comment_count>
      <attachid>163500</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-09-11 19:33:33 -0700</bug_when>
    <thetext>Created attachment 163500
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717850</commentid>
    <comment_count>2</comment_count>
      <attachid>163500</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-09-11 20:15:24 -0700</bug_when>
    <thetext>Comment on attachment 163500
Proposed patch.

Actually, how does the static &quot;workingSetEstimateMB&quot; function in the case of workers?


http://code.google.com/searchframe#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/bindings/v8/V8GCController.h&amp;exact_package=chromium&amp;q=workingSetEstimateMB&amp;type=cs&amp;l=84


And how does the supporting code in Chromium work in the case of threading? When I see caching on a static object like here (http://code.google.com/searchframe#OAMlx_jo-ck/src/webkit/glue/webkitplatformsupport_impl.cc&amp;exact_package=chromium&amp;q=memoryUsageMB&amp;type=cs&amp;l=728) it concerns me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717980</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-09-12 00:12:43 -0700</bug_when>
    <thetext>Thanks David! 

Here is what I think happens there:

The static MemoryUsageCache has locks in its implementation, and its usage looks technically valid. It caches the current overall process usage for 1 second, to reduce the frequency of querying. The rest of the memory usage code in webkitplatformsupport_impl.cc also looks workable in threading case except a non thread safe static initialization in here: http://code.google.com/searchframe#OAMlx_jo-ck/src/webkit/glue/webkitplatformsupport_impl.cc&amp;exact_package=chromium&amp;q=MemoryUsageCache&amp;l=687. I will need a Chrome-side patch as well.

Static workingSetEstimateMB works fine except in case when in-process dedicated workers also are present in the process. In this case, it&apos;ll capture somewhat random (higher) working set estimate because it can be captured for a GC happening in any of the dedicated workers. It can cause less-aggressive GCs when current usage is in range between lowMemoryUsageMb and highMemoryUsageMB. That seems ok given the very approximate behavior of the heuristic in that range: it uses memory values cached for a second, assumes non-v8 working set is stable and starts to aggressively GC if the v8 heap grows more then 2 times larger then the non-v8 one...

So I think it will work in multi-threaded sense, with heuristic causing less aggressive GCs when dedicated workers are present, which is probably ok.

I wasn&apos;t able to find the initial motivation for the specific heuristic, hopefully Anton or Adam can chime in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718377</commentid>
    <comment_count>4</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2012-09-12 08:21:26 -0700</bug_when>
    <thetext>Regarding heuristics.  No, it doesn&apos;t assume that no v8-heap is stable, on the contrary, it should kick in if allocation rate in v8 heap is too low to trigger major GC while non-v8 heap grew notably and hence there is a change that lots of &quot;C++&quot; memory is retained by thin v8 wrapper.

All that said, I don&apos;t see immediate problems with extending this heuristics to workers.

But most probably you need to ensure that reads and writes to workingSetEstimateMB are atomic.

(In reply to comment #3)
&gt; Thanks David! 
&gt; 
&gt; Here is what I think happens there:
&gt; 
&gt; The static MemoryUsageCache has locks in its implementation, and its usage looks technically valid. It caches the current overall process usage for 1 second, to reduce the frequency of querying. The rest of the memory usage code in webkitplatformsupport_impl.cc also looks workable in threading case except a non thread safe static initialization in here: http://code.google.com/searchframe#OAMlx_jo-ck/src/webkit/glue/webkitplatformsupport_impl.cc&amp;exact_package=chromium&amp;q=MemoryUsageCache&amp;l=687. I will need a Chrome-side patch as well.
&gt; 
&gt; Static workingSetEstimateMB works fine except in case when in-process dedicated workers also are present in the process. In this case, it&apos;ll capture somewhat random (higher) working set estimate because it can be captured for a GC happening in any of the dedicated workers. It can cause less-aggressive GCs when current usage is in range between lowMemoryUsageMb and highMemoryUsageMB. That seems ok given the very approximate behavior of the heuristic in that range: it uses memory values cached for a second, assumes non-v8 working set is stable and starts to aggressively GC if the v8 heap grows more then 2 times larger then the non-v8 one...
&gt; 
&gt; So I think it will work in multi-threaded sense, with heuristic causing less aggressive GCs when dedicated workers are present, which is probably ok.
&gt; 
&gt; I wasn&apos;t able to find the initial motivation for the specific heuristic, hopefully Anton or Adam can chime in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718691</commentid>
    <comment_count>5</comment_count>
      <attachid>163687</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-09-12 13:59:04 -0700</bug_when>
    <thetext>Created attachment 163687
Added a mutex in V8GCController

Updated the patch. It now has a mutex around setting/reading the shared workingSetEstimateMB variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718715</commentid>
    <comment_count>6</comment_count>
      <attachid>163687</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-12 14:18:46 -0700</bug_when>
    <thetext>Comment on attachment 163687
Added a mutex in V8GCController

Attachment 163687 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13835326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718720</commentid>
    <comment_count>7</comment_count>
      <attachid>163687</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-09-12 14:20:59 -0700</bug_when>
    <thetext>Comment on attachment 163687
Added a mutex in V8GCController

Looks good to me (with an android build fix).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718865</commentid>
    <comment_count>8</comment_count>
      <attachid>163730</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-09-12 16:30:34 -0700</bug_when>
    <thetext>Created attachment 163730
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718931</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-09-12 17:51:08 -0700</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/128390</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163500</attachid>
            <date>2012-09-11 19:33:33 -0700</date>
            <delta_ts>2012-09-12 13:59:04 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3410</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzODczOTVkLi5mZjFjMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDktMTEgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW1Y4XSBPT00gaW4gV29ya2VycyBkdWUgdG8gZXh0ZXJuYWwgbWVtb3J5IHJldGVudGlv
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
bWVtb3J5IGNoZWNrcyB0byB0aGUgbG9jYXRpb25zIGluIFdvcmtlcnMgY29kZSB0aGF0IGFyZSBh
Ym91dCB0byBpbnZva2UgdGhlIG5leHQgSlMgYmxvY2suCisKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5OjpldmFsdWF0ZSk6CisKIDIwMTItMDktMTEgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4ZWQgZm9yIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyODI0MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggY2M1MGM5NC4uOTY1MTQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOFJlY3Vy
c2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgpAQCAtMTEyLDYgKzExMyw4IEBAIHZvaWQgU2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckNvbnRleHQqIHdvcmtlcikKICAgICBWOFJlY3Vyc2lv
blNjb3BlIHJlY3Vyc2lvblNjb3BlKHdvcmtlcik7CiAKICAgICBpZiAoIW1fZnVuY3Rpb24uaXNF
bXB0eSgpKSB7CisgICAgICAgIFY4R0NDb250cm9sbGVyOjpjaGVja01lbW9yeVVzYWdlKCk7CisK
ICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogCiAgICAgICAgIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9j
b250ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMGJjODRkMy4uNjIxNDFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0
RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3Jr
ZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEV2ZW50
LmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOFJlY3Vyc2lvblNj
b3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5oIgpAQCAtODYsNiArODcsOCBAQCB2b2lkIFY4V29ya2VyQ29udGV4
dEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsCiAKIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6
OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50LCBFdmVudCogZXZlbnQpCiB7CisgICAgVjhHQ0Nv
bnRyb2xsZXI6OmNoZWNrTWVtb3J5VXNhZ2UoKTsKKwogICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b24+IGhhbmRsZXJGdW5jdGlvbiA9IGdldExpc3RlbmVyRnVuY3Rpb24oY29udGV4dCk7CiAgICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IHJlY2VpdmVyID0gZ2V0UmVjZWl2ZXJPYmplY3QoY29udGV4
dCwgZXZlbnQpOwogICAgIGlmIChoYW5kbGVyRnVuY3Rpb24uSXNFbXB0eSgpIHx8IHJlY2VpdmVy
LklzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDg3NDkzZjguLjY3NmZhZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMjA1LDYgKzIwNSw4IEBAIGJvb2wgV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5Ojpmb3JnZXRWOEV2ZW50T2JqZWN0KEV2ZW50KiBldmVudCkKIAogU2Ny
aXB0VmFsdWUgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpldmFsdWF0ZShjb25zdCBTdHJp
bmcmIHNjcmlwdCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
Y3JpcHRTdGFydFBvc2l0aW9uLCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uU3RhdGUqIHN0YXRlKQog
eworICAgIFY4R0NDb250cm9sbGVyOjpjaGVja01lbW9yeVVzYWdlKCk7CisKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaHM7CiAKICAgICBpZiAoIWluaXRpYWxpemVJZk5lZWRlZCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163687</attachid>
            <date>2012-09-12 13:59:04 -0700</date>
            <delta_ts>2012-09-12 16:30:34 -0700</delta_ts>
            <desc>Added a mutex in V8GCController</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5650</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzODczOTVkLi5mZjFjMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDktMTEgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW1Y4XSBPT00gaW4gV29ya2VycyBkdWUgdG8gZXh0ZXJuYWwgbWVtb3J5IHJldGVudGlv
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
bWVtb3J5IGNoZWNrcyB0byB0aGUgbG9jYXRpb25zIGluIFdvcmtlcnMgY29kZSB0aGF0IGFyZSBh
Ym91dCB0byBpbnZva2UgdGhlIG5leHQgSlMgYmxvY2suCisKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5OjpldmFsdWF0ZSk6CisKIDIwMTItMDktMTEgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4ZWQgZm9yIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyODI0MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggY2M1MGM5NC4uOTY1MTQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOFJlY3Vy
c2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgpAQCAtMTEyLDYgKzExMyw4IEBAIHZvaWQgU2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckNvbnRleHQqIHdvcmtlcikKICAgICBWOFJlY3Vyc2lv
blNjb3BlIHJlY3Vyc2lvblNjb3BlKHdvcmtlcik7CiAKICAgICBpZiAoIW1fZnVuY3Rpb24uaXNF
bXB0eSgpKSB7CisgICAgICAgIFY4R0NDb250cm9sbGVyOjpjaGVja01lbW9yeVVzYWdlKCk7CisK
ICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogCiAgICAgICAgIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9j
b250ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmNwcAppbmRleCBmOWQ2NzUzLi43NTgxYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC00MTYsNyArNDE2LDEzIEBAIHB1YmxpYzoK
ICAgICB9CiB9OwogCi1pbnQgVjhHQ0NvbnRyb2xsZXI6OndvcmtpbmdTZXRFc3RpbWF0ZU1CID0g
MDsKK3N0YXRpYyBpbnQgd29ya2luZ1NldEVzdGltYXRlTUIgPSAwOworCitzdGF0aWMgTXV0ZXgm
IHdvcmtpbmdTZXRFc3RpbWF0ZU1CTXV0ZXgoKQoreworICAgIEF0b21pY2FsbHlJbml0aWFsaXpl
ZFN0YXRpYyhNdXRleCYsIG11dGV4ID0gKm5ldyBNdXRleCk7CisgICAgcmV0dXJuIG11dGV4Owor
fQogCiB2b2lkIFY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKCkKIHsKQEAgLTQyOSw3ICs0MzUs
MTEgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NFcGlsb2d1ZSgpCiAgICAgR0NFcGlsb2d1ZVZp
c2l0b3I8Tm9kZSwgU3BlY2lhbENhc2VFcGlsb2d1ZU5vZGVIYW5kbGVyLCAmRE9NRGF0YVN0b3Jl
Ojp3ZWFrTm9kZUNhbGxiYWNrPiBlcGlsb2d1ZU5vZGVWaXNpdG9yOwogICAgIHZpc2l0QWN0aXZl
RE9NTm9kZXMoJmVwaWxvZ3VlTm9kZVZpc2l0b3IpOwogCi0gICAgd29ya2luZ1NldEVzdGltYXRl
TUIgPSBNZW1vcnlVc2FnZVN1cHBvcnQ6OmFjdHVhbE1lbW9yeVVzYWdlTUIoKTsKKyAgICAvLyBU
aGUgR0MgY2FuIGhhcHBlbiBvbiBtdWx0aXBsZSB0aHJlYWRzIGluIGNhc2Ugb2YgZGVkaWNhdGVk
IHdvcmtlcnMgd2hpY2ggcnVuIGluLXByb2Nlc3MuCisgICAgeworICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIod29ya2luZ1NldEVzdGltYXRlTUJNdXRleCgpKTsKKyAgICAgICAgd29ya2luZ1Nl
dEVzdGltYXRlTUIgPSBNZW1vcnlVc2FnZVN1cHBvcnQ6OmFjdHVhbE1lbW9yeVVzYWdlTUIoKTsK
KyAgICB9CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gQ2hlY2sgYWxsIHN1cnZpdmFscyBhcmUg
d2Vhay4KQEAgLTQ1Miw2ICs0NjIsMTIgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6Y2hlY2tNZW1v
cnlVc2FnZSgpCiAgICAgY29uc3QgaW50IGhpZ2hNZW1vcnlVc2FnZU1CID0gTWVtb3J5VXNhZ2VT
dXBwb3J0OjpoaWdoTWVtb3J5VXNhZ2VNQigpOwogICAgIGNvbnN0IGludCBoaWdoVXNhZ2VEZWx0
YU1CID0gTWVtb3J5VXNhZ2VTdXBwb3J0OjpoaWdoVXNhZ2VEZWx0YU1CKCk7CiAgICAgaW50IG1l
bW9yeVVzYWdlTUIgPSBNZW1vcnlVc2FnZVN1cHBvcnQ6Om1lbW9yeVVzYWdlTUIoKTsKKyAgICBp
bnQgd29ya2luZ1NldEVzdGltYXRlTUJDb3B5OworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKHdvcmtpbmdTZXRFc3RpbWF0ZU1CTXV0ZXgoKSk7CisgICAgICAgIHdvcmtpbmdTZXRF
c3RpbWF0ZU1CQ29weSA9IHdvcmtpbmdTZXRFc3RpbWF0ZU1COworICAgIH0KKwogICAgIGlmICgo
bWVtb3J5VXNhZ2VNQiA+IGxvd01lbW9yeVVzYWdlTUIgJiYgbWVtb3J5VXNhZ2VNQiA+IDIgKiB3
b3JraW5nU2V0RXN0aW1hdGVNQikgfHwgKG1lbW9yeVVzYWdlTUIgPiBoaWdoTWVtb3J5VXNhZ2VN
QiAmJiBtZW1vcnlVc2FnZU1CID4gd29ya2luZ1NldEVzdGltYXRlTUIgKyBoaWdoVXNhZ2VEZWx0
YU1CKSkKICAgICAgICAgdjg6OlY4OjpMb3dNZW1vcnlOb3RpZmljYXRpb24oKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKaW5kZXggYjA1MGRm
Yy4uZTJkNGQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5oCkBAIC00Myw5ICs0Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjaGVja01lbW9y
eVVzYWdlKCk7CiAgICAgc3RhdGljIHZvaWQgaGludEZvckNvbGxlY3RHYXJiYWdlKCk7CiAgICAg
c3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgaW50
IHdvcmtpbmdTZXRFc3RpbWF0ZU1COwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAppbmRl
eCAwYmM4NGQzLi42MjE0MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgog
I2luY2x1ZGUgIlY4RXZlbnQuaCIKKyNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCkBAIC04Niw2ICs4Nyw4IEBAIHZv
aWQgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwKIAogdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBldmVu
dCkKIHsKKyAgICBWOEdDQ29udHJvbGxlcjo6Y2hlY2tNZW1vcnlVc2FnZSgpOworCiAgICAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj4gaGFuZGxlckZ1bmN0aW9uID0gZ2V0TGlzdGVuZXJGdW5jdGlv
bihjb250ZXh0KTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gcmVjZWl2ZXIgPSBnZXRSZWNl
aXZlck9iamVjdChjb250ZXh0LCBldmVudCk7CiAgICAgaWYgKGhhbmRsZXJGdW5jdGlvbi5Jc0Vt
cHR5KCkgfHwgcmVjZWl2ZXIuSXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggODc0
OTNmOC4uNjc2ZmFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
a2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0yMDUsNiArMjA1LDggQEAg
Ym9vbCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmZvcmdldFY4RXZlbnRPYmplY3QoRXZl
bnQqIGV2ZW50KQogCiBTY3JpcHRWYWx1ZSBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmV2
YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24sIFdvcmtlckNvbnRleHRFeGVjdXRp
b25TdGF0ZSogc3RhdGUpCiB7CisgICAgVjhHQ0NvbnRyb2xsZXI6OmNoZWNrTWVtb3J5VXNhZ2Uo
KTsKKwogICAgIHY4OjpIYW5kbGVTY29wZSBoczsKIAogICAgIGlmICghaW5pdGlhbGl6ZUlmTmVl
ZGVkKCkpCg==
</data>
<flag name="review"
          id="175225"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="175234"
          type_id="3"
          status="-"
          setter="peter+ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163730</attachid>
            <date>2012-09-12 16:30:34 -0700</date>
            <delta_ts>2012-09-12 16:30:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5912</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzODczOTVkLi5mZjFjMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDktMTEgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW1Y4XSBPT00gaW4gV29ya2VycyBkdWUgdG8gZXh0ZXJuYWwgbWVtb3J5IHJldGVudGlv
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
bWVtb3J5IGNoZWNrcyB0byB0aGUgbG9jYXRpb25zIGluIFdvcmtlcnMgY29kZSB0aGF0IGFyZSBh
Ym91dCB0byBpbnZva2UgdGhlIG5leHQgSlMgYmxvY2suCisKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5OjpldmFsdWF0ZSk6CisKIDIwMTItMDktMTEgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4ZWQgZm9yIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyODI0MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggY2M1MGM5NC4uOTY1MTQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOFJlY3Vy
c2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgpAQCAtMTEyLDYgKzExMyw4IEBAIHZvaWQgU2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckNvbnRleHQqIHdvcmtlcikKICAgICBWOFJlY3Vyc2lv
blNjb3BlIHJlY3Vyc2lvblNjb3BlKHdvcmtlcik7CiAKICAgICBpZiAoIW1fZnVuY3Rpb24uaXNF
bXB0eSgpKSB7CisgICAgICAgIFY4R0NDb250cm9sbGVyOjpjaGVja01lbW9yeVVzYWdlKCk7CisK
ICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogCiAgICAgICAgIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9j
b250ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmNwcAppbmRleCBmOWQ2NzUzLi41ODc3MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC00MTYsNyArNDE2LDE1IEBAIHB1YmxpYzoK
ICAgICB9CiB9OwogCi1pbnQgVjhHQ0NvbnRyb2xsZXI6OndvcmtpbmdTZXRFc3RpbWF0ZU1CID0g
MDsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKK3N0YXRpYyBpbnQgd29ya2luZ1NldEVzdGltYXRl
TUIgPSAwOworCitzdGF0aWMgTXV0ZXgmIHdvcmtpbmdTZXRFc3RpbWF0ZU1CTXV0ZXgoKQorewor
ICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhNdXRleCYsIG11dGV4ID0gKm5ldyBNdXRl
eCk7CisgICAgcmV0dXJuIG11dGV4OworfQorI2VuZGlmCiAKIHZvaWQgVjhHQ0NvbnRyb2xsZXI6
OmdjRXBpbG9ndWUoKQogewpAQCAtNDI5LDcgKzQzNywxMyBAQCB2b2lkIFY4R0NDb250cm9sbGVy
OjpnY0VwaWxvZ3VlKCkKICAgICBHQ0VwaWxvZ3VlVmlzaXRvcjxOb2RlLCBTcGVjaWFsQ2FzZUVw
aWxvZ3VlTm9kZUhhbmRsZXIsICZET01EYXRhU3RvcmU6OndlYWtOb2RlQ2FsbGJhY2s+IGVwaWxv
Z3VlTm9kZVZpc2l0b3I7CiAgICAgdmlzaXRBY3RpdmVET01Ob2RlcygmZXBpbG9ndWVOb2RlVmlz
aXRvcik7CiAKLSAgICB3b3JraW5nU2V0RXN0aW1hdGVNQiA9IE1lbW9yeVVzYWdlU3VwcG9ydDo6
YWN0dWFsTWVtb3J5VXNhZ2VNQigpOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIC8vIFRo
ZSBHQyBjYW4gaGFwcGVuIG9uIG11bHRpcGxlIHRocmVhZHMgaW4gY2FzZSBvZiBkZWRpY2F0ZWQg
d29ya2VycyB3aGljaCBydW4gaW4tcHJvY2Vzcy4KKyAgICB7CisgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcih3b3JraW5nU2V0RXN0aW1hdGVNQk11dGV4KCkpOworICAgICAgICB3b3JraW5nU2V0
RXN0aW1hdGVNQiA9IE1lbW9yeVVzYWdlU3VwcG9ydDo6YWN0dWFsTWVtb3J5VXNhZ2VNQigpOwor
ICAgIH0KKyNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIENoZWNrIGFsbCBzdXJ2aXZh
bHMgYXJlIHdlYWsuCkBAIC00NTIsNyArNDY2LDEzIEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmNo
ZWNrTWVtb3J5VXNhZ2UoKQogICAgIGNvbnN0IGludCBoaWdoTWVtb3J5VXNhZ2VNQiA9IE1lbW9y
eVVzYWdlU3VwcG9ydDo6aGlnaE1lbW9yeVVzYWdlTUIoKTsKICAgICBjb25zdCBpbnQgaGlnaFVz
YWdlRGVsdGFNQiA9IE1lbW9yeVVzYWdlU3VwcG9ydDo6aGlnaFVzYWdlRGVsdGFNQigpOwogICAg
IGludCBtZW1vcnlVc2FnZU1CID0gTWVtb3J5VXNhZ2VTdXBwb3J0OjptZW1vcnlVc2FnZU1CKCk7
Ci0gICAgaWYgKChtZW1vcnlVc2FnZU1CID4gbG93TWVtb3J5VXNhZ2VNQiAmJiBtZW1vcnlVc2Fn
ZU1CID4gMiAqIHdvcmtpbmdTZXRFc3RpbWF0ZU1CKSB8fCAobWVtb3J5VXNhZ2VNQiA+IGhpZ2hN
ZW1vcnlVc2FnZU1CICYmIG1lbW9yeVVzYWdlTUIgPiB3b3JraW5nU2V0RXN0aW1hdGVNQiArIGhp
Z2hVc2FnZURlbHRhTUIpKQorICAgIGludCB3b3JraW5nU2V0RXN0aW1hdGVNQkNvcHk7CisgICAg
eworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIod29ya2luZ1NldEVzdGltYXRlTUJNdXRleCgp
KTsKKyAgICAgICAgd29ya2luZ1NldEVzdGltYXRlTUJDb3B5ID0gd29ya2luZ1NldEVzdGltYXRl
TUI7CisgICAgfQorCisgICAgaWYgKChtZW1vcnlVc2FnZU1CID4gbG93TWVtb3J5VXNhZ2VNQiAm
JiBtZW1vcnlVc2FnZU1CID4gMiAqIHdvcmtpbmdTZXRFc3RpbWF0ZU1CQ29weSkgfHwgKG1lbW9y
eVVzYWdlTUIgPiBoaWdoTWVtb3J5VXNhZ2VNQiAmJiBtZW1vcnlVc2FnZU1CID4gd29ya2luZ1Nl
dEVzdGltYXRlTUJDb3B5ICsgaGlnaFVzYWdlRGVsdGFNQikpCiAgICAgICAgIHY4OjpWODo6TG93
TWVtb3J5Tm90aWZpY2F0aW9uKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEdDQ29udHJvbGxlci5oCmluZGV4IGIwNTBkZmMuLmUyZDRkNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaApAQCAtNDMsOSArNDMsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2hlY2tNZW1vcnlVc2FnZSgpOwogICAgIHN0YXRpYyB2
b2lkIGhpbnRGb3JDb2xsZWN0R2FyYmFnZSgpOwogICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RHYXJi
YWdlKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGludCB3b3JraW5nU2V0RXN0aW1hdGVNQjsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2Vy
Q29udGV4dEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhX
b3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMGJjODRkMy4uNjIxNDFkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEV2ZW50LmgiCisj
aW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgi
CiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5oIgpAQCAtODYsNiArODcsOCBAQCB2b2lkIFY4V29ya2VyQ29udGV4dEV2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAK
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmNhbGxM
aXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBqc0V2ZW50LCBFdmVudCogZXZlbnQpCiB7CisgICAgVjhHQ0NvbnRyb2xs
ZXI6OmNoZWNrTWVtb3J5VXNhZ2UoKTsKKwogICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGhh
bmRsZXJGdW5jdGlvbiA9IGdldExpc3RlbmVyRnVuY3Rpb24oY29udGV4dCk7CiAgICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IHJlY2VpdmVyID0gZ2V0UmVjZWl2ZXJPYmplY3QoY29udGV4dCwgZXZl
bnQpOwogICAgIGlmIChoYW5kbGVyRnVuY3Rpb24uSXNFbXB0eSgpIHx8IHJlY2VpdmVyLklzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDg3NDkzZjguLjY3NmZhZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5LmNwcApAQCAtMjA1LDYgKzIwNSw4IEBAIGJvb2wgV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5Ojpmb3JnZXRWOEV2ZW50T2JqZWN0KEV2ZW50KiBldmVudCkKIAogU2NyaXB0VmFs
dWUgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNj
cmlwdCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRT
dGFydFBvc2l0aW9uLCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uU3RhdGUqIHN0YXRlKQogeworICAg
IFY4R0NDb250cm9sbGVyOjpjaGVja01lbW9yeVVzYWdlKCk7CisKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaHM7CiAKICAgICBpZiAoIWluaXRpYWxpemVJZk5lZWRlZCgpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>