<?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>140348</bug_id>
          
          <creation_ts>2015-01-12 00:10:40 -0800</creation_ts>
          <short_desc>Local JSArray* &quot;keys&quot; in objectConstructorKeys() is not marked during garbage collection</short_desc>
          <delta_ts>2015-01-13 11:12:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>312.x</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>140363</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jnlehner</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060515</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-12 00:10:40 -0800</bug_when>
    <thetext>When we mark objects, we conservatively mark the stack and live registers.  This is done by creating a local variable &quot;void *dummy&quot; in Heap::markRoots().  The address of dummy is passed as a parameter to Heap::gatherStackRoots(), which passes it to MachineThreads::gatherConservativeRoots() which in turn passes it to MachineThread::gatherFromCurrentThread().  The address of dummy is used to mark the &quot;top of the current stack&quot;.  In MachineThread::gatherFromCurrentThread(), we use setjmp() to get all the register values.

If a value we want to mark is in a callee save register and that register is saved and subsequently overwritten in either Heap::gatherStackRoots() or MachineThreads::gatherConservativeRoots(), then it won&apos;t show up as saved on the stack or in the register value we get from calling setjmp().

This can be fixed by having MachineThread::gatherFromCurrentThread() use one of its locals for the top of stack.

rdar://problem/19440752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060516</commentid>
    <comment_count>1</comment_count>
      <attachid>244433</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-12 00:20:47 -0800</bug_when>
    <thetext>Created attachment 244433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060558</commentid>
    <comment_count>2</comment_count>
      <attachid>244433</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-12 07:44:02 -0800</bug_when>
    <thetext>Comment on attachment 244433
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Move the address of the local variable that is used to mark the top of the stack for 

By “mark the top”, do you mean “demarcate the top&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060560</commentid>
    <comment_count>3</comment_count>
      <attachid>244433</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-12 07:46:54 -0800</bug_when>
    <thetext>Comment on attachment 244433
Patch

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

&gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:242
&gt; +    // We need to mark the stack top in this function so that callee saves are either already on the stack,

I think “mark” here should also be “demarcate”.  Marking the top of the stack in GC code has a different meaning then demarcating the top of the stack.  I think you meant &quot;indicating the top of the stack&quot; (demarcating) instead of &quot;recording as live” (marking).  Is that right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060561</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-12 07:50:27 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 244433 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244433&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:242
&gt; &gt; +    // We need to mark the stack top in this function so that callee saves are either already on the stack,
&gt; 
&gt; I think “mark” here should also be “demarcate”.  Marking the top of the
&gt; stack in GC code has a different meaning then demarcating the top of the
&gt; stack.  I think you meant &quot;indicating the top of the stack&quot; (demarcating)
&gt; instead of &quot;recording as live” (marking).  Is that right?

I&apos;ll change the comment to &quot;demarcate&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060567</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-12 08:29:20 -0800</bug_when>
    <thetext>Committed r178266: &lt;http://trac.webkit.org/changeset/178266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060585</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-01-12 10:16:53 -0800</bug_when>
    <thetext>This broke a JS test:

2015-01-12 09:21:06.385 testapi[45813:35152987] TEST: &quot;weak value == nil&quot;: FAILED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060587</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-12 10:22:00 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 140363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060591</commentid>
    <comment_count>8</comment_count>
      <attachid>244433</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-01-12 10:26:52 -0800</bug_when>
    <thetext>Comment on attachment 244433
Patch

Rolled out in &lt;https://trac.webkit.org/r178284&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060773</commentid>
    <comment_count>9</comment_count>
      <attachid>244499</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-13 00:00:22 -0800</bug_when>
    <thetext>Created attachment 244499
Updated patch that fixes broken API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060835</commentid>
    <comment_count>10</comment_count>
      <attachid>244499</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-13 09:07:03 -0800</bug_when>
    <thetext>Comment on attachment 244499
Updated patch that fixes broken API test

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        We now get the register contents at the same place that we demarcate the current top of
&gt; +        stack using the address of a local variable, in Heap::markRoots().  The register contents
&gt; +        buffer is passed along with the demarcation pointer.  These need to be done at this level 
&gt; +        in the call tree and no lower, as markRoots() calls various functions that visit object
&gt; +        pointers that may be latter proven dead.  Any of those pointers that are left on the
&gt; +        stack or in registers could be incorrectly marked as live if we scan the stack contents
&gt; +        from a called function or one of its callees.  The stack demarcation pointer and register
&gt; +        saving need to be done in the same function so that we have a consistent stack, active
&gt; +        and spilled registers.

I think you should also have a comment about the original bug and why this fix works i.e. that flushing in non-volatile registers in gatherFromCurrentThread() is too late because those registers may have been spilled on the stack and replaced with other values by the time the GC got to gatherFromCurrentThread(), and that this patch fixes it by ensuring that they are spilled into the MachineThreads::RegisterState where we demarcate the top of stack for GC scanning.  Hence, any root values are guaranteed to be either on the stack or in the captured RegisterState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060839</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-13 09:46:36 -0800</bug_when>
    <thetext>Committed r178364: &lt;http://trac.webkit.org/changeset/178364&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244433</attachid>
            <date>2015-01-12 00:20:47 -0800</date>
            <delta_ts>2015-01-13 00:00:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>140348.patch</filename>
            <type>text/plain</type>
            <size>6467</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MjUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE1LTAxLTEyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIExvY2FsIEpTQXJyYXkqICJrZXlzIiBpbiBvYmplY3RDb25zdHJ1Y3RvcktleXMoKSBpcyBu
b3QgbWFya2VkIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDM0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGFkZHJlc3Mgb2YgdGhlIGxvY2Fs
IHZhcmlhYmxlIHRoYXQgaXMgdXNlZCB0byBtYXJrIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGZvciAK
KyAgICAgICAgY29uc2VydmF0aXZlIHJvb3RzIGRvd24gdG8gTWFjaGluZVRocmVhZHM6OmdhdGhl
ckZyb21DdXJyZW50VGhyZWFkKCkgc2luY2UgaXQgYWxzbyBnZXRzCisgICAgICAgIHRoZSByZWdp
c3RlciB2YWx1ZXMgdXNpbmcgc2V0am1wKCkuICBUaGF0IHdheSB3ZSBkb24ndCBsb3NlIGFueSBj
YWxsZWUgc2F2ZSByZWdpc3RlcgorICAgICAgICBjb250ZW50cyBiZXR3ZWVuIEhlYXA6Om1hcmtS
b290cygpLCB3aGVyZSBpdCB3YXMgc2V0LCBhbmQgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoKS4K
KyAgICAgICAgSWYgd2UgbG9zZSBhbnkgSlNPYmplY3QqIHRoYXQgYXJlIG9ubHkgaW4gY2FsbGVl
IHNhdmUgcmVnaXN0ZXJzLCB0aGV5IHdpbGwgYmUgR0MnZWQKKyAgICAgICAgZXJyb25lb3VzbHku
CisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9v
dHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpnYXRoZXJTdGFja1Jvb3RzKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAg
ICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJGcm9tQ3VycmVudFRocmVhZCk6CisgICAg
ICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6CisgICAg
ICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKwogMjAxNS0wMS0xMSAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdHlwbyBpbiB0ZXN0
YXRlLmMgZXJyb3IgbWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CShyZXZpc2lvbiAxNzc5MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTA0LDkgKzUwNCw4IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3Rz
KGRvdWJsZSBnY1N0YXJ0VGltZSkKIAogICAgIC8vIFdlIGdhdGhlciBjb25zZXJ2YXRpdmUgcm9v
dHMgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNlIGNvbnNlcnZhdGl2ZQogICAgIC8v
IGdhdGhlcmluZyB1c2VzIHRoZSBtYXJrIGJpdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSByZWZl
cmVuY2UgaXMgdmFsaWQuCi0gICAgdm9pZCogZHVtbXk7CiAgICAgQ29uc2VydmF0aXZlUm9vdHMg
Y29uc2VydmF0aXZlUm9vdHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCksICZtX3N0b3JhZ2VTcGFj
ZSk7Ci0gICAgZ2F0aGVyU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgJmR1bW15KTsKKyAg
ICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKICAgICBnYXRoZXJKU1N0YWNr
Um9vdHMoY29uc2VydmF0aXZlUm9vdHMpOwogICAgIGdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhj
b25zZXJ2YXRpdmVSb290cyk7CiAKQEAgLTU2NiwxMSArNTY1LDExIEBAIHZvaWQgSGVhcDo6Y29w
eUJhY2tpbmdTdG9yZXMoKQogICAgICAgICBtX3N0b3JhZ2VTcGFjZS5kb25lQ29weWluZygpOwog
fQogCi12b2lkIEhlYXA6OmdhdGhlclN0YWNrUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIHJvb3Rz
LCB2b2lkKiogZHVtbXkpCit2b2lkIEhlYXA6OmdhdGhlclN0YWNrUm9vdHMoQ29uc2VydmF0aXZl
Um9vdHMmIHJvb3RzKQogewogICAgIEdDUEhBU0UoR2F0aGVyU3RhY2tSb290cyk7CiAgICAgbV9q
aXRTdHViUm91dGluZXMuY2xlYXJNYXJrcygpOwotICAgIG1fbWFjaGluZVRocmVhZHMuZ2F0aGVy
Q29uc2VydmF0aXZlUm9vdHMocm9vdHMsIG1faml0U3R1YlJvdXRpbmVzLCBtX2NvZGVCbG9ja3Ms
IGR1bW15KTsKKyAgICBtX21hY2hpbmVUaHJlYWRzLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJv
b3RzLCBtX2ppdFN0dWJSb3V0aW5lcywgbV9jb2RlQmxvY2tzKTsKIH0KIAogdm9pZCBIZWFwOjpn
YXRoZXJKU1N0YWNrUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIHJvb3RzKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTc3OTI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNyArMjc1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CiAKICAgICB2b2lkIG1hcmtSb290cyhk
b3VibGUgZ2NTdGFydFRpbWUpOwotICAgIHZvaWQgZ2F0aGVyU3RhY2tSb290cyhDb25zZXJ2YXRp
dmVSb290cyYsIHZvaWQqKiBkdW1teSk7CisgICAgdm9pZCBnYXRoZXJTdGFja1Jvb3RzKENvbnNl
cnZhdGl2ZVJvb3RzJik7CiAgICAgdm9pZCBnYXRoZXJKU1N0YWNrUm9vdHMoQ29uc2VydmF0aXZl
Um9vdHMmKTsKICAgICB2b2lkIGdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhDb25zZXJ2YXRpdmVS
b290cyYpOwogICAgIHZvaWQgY2xlYXJMaXZlbmVzc0RhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkocmV2aXNpb24g
MTc3OTI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDEwICsyMjEsMTEgQEAgdm9pZCBNYWNoaW5lVGhy
ZWFkczo6cmVtb3ZlQ3VycmVudFRocmVhZAogI2RlZmluZSBSRUdJU1RFUl9CVUZGRVJfQUxJR05N
RU5UCiAjZW5kaWYKIAotdm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVyRnJvbUN1cnJlbnRUaHJl
YWQoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3RzLCBKSVRTdHViUm91dGluZVNl
dCYgaml0U3R1YlJvdXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja3MsIHZvaWQqIHN0YWNr
Q3VycmVudCkKK3ZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21DdXJyZW50VGhyZWFkKENv
bnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cywgSklUU3R1YlJvdXRpbmVTZXQmIGpp
dFN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzKQogewogICAgIC8vIHNldGpt
cCBmb3JjZXMgdm9sYXRpbGUgcmVnaXN0ZXJzIG9udG8gdGhlIHN0YWNrCiAgICAgam1wX2J1ZiBy
ZWdpc3RlcnMgUkVHSVNURVJfQlVGRkVSX0FMSUdOTUVOVDsKKwogI2lmIENPTVBJTEVSKE1TVkMp
CiAjcHJhZ21hIHdhcm5pbmcocHVzaCkKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NjExKQpA
QCAtMjM4LDcgKzIzOSw5IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21DdXJyZW50
VGgKICAgICB2b2lkKiByZWdpc3RlcnNFbmQgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PigmcmVnaXN0ZXJzICsgMSkpKTsKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQocmVnaXN0ZXJz
QmVnaW4sIHJlZ2lzdGVyc0VuZCwgaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzKTsKIAotICAg
IHZvaWQqIHN0YWNrQmVnaW4gPSBzdGFja0N1cnJlbnQ7CisgICAgLy8gV2UgbmVlZCB0byBtYXJr
IHRoZSBzdGFjayB0b3AgaW4gdGhpcyBmdW5jdGlvbiBzbyB0aGF0IGNhbGxlZSBzYXZlcyBhcmUg
ZWl0aGVyIGFscmVhZHkgb24gdGhlIHN0YWNrLAorICAgIC8vIG9yIHdpbGwgYmUgc2F2ZWQgaW4g
cmVnaXN0ZXJzLgorICAgIHZvaWQqIHN0YWNrQmVnaW4gPSAmcmVnaXN0ZXJzOwogICAgIHZvaWQq
IHN0YWNrRW5kID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkub3JpZ2luKCk7CiAgICAgY29uc2Vy
dmF0aXZlUm9vdHMuYWRkKHN0YWNrQmVnaW4sIHN0YWNrRW5kLCBqaXRTdHViUm91dGluZXMsIGNv
ZGVCbG9ja3MpOwogfQpAQCAtNDQ1LDkgKzQ0OCw5IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6Omdh
dGhlckZyb21PdGhlclRocmUKICAgICBmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMocmVncyk7
CiB9CiAKLXZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNl
cnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cywgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0
dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzLCB2b2lkKiBzdGFja0N1cnJlbnQp
Cit2b2lkIE1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRp
dmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMsIEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91
dGluZXMsIENvZGVCbG9ja1NldCYgY29kZUJsb2NrcykKIHsKLSAgICBnYXRoZXJGcm9tQ3VycmVu
dFRocmVhZChjb25zZXJ2YXRpdmVSb290cywgaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzLCBz
dGFja0N1cnJlbnQpOworICAgIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKGNvbnNlcnZhdGl2ZVJv
b3RzLCBqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MpOwogCiAgICAgaWYgKG1fdGhyZWFkU3Bl
Y2lmaWMpIHsKICAgICAgICAgUGxhdGZvcm1UaHJlYWQgY3VycmVudFBsYXRmb3JtVGhyZWFkID0g
Z2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAkocmV2aXNpb24gMTc3OTI5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDEzICszOSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjaGluZVRo
cmVhZHMoSGVhcCopOwogICAgICAgICB+TWFjaGluZVRocmVhZHMoKTsKIAotICAgICAgICB2b2lk
IGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRp
bmVTZXQmLCBDb2RlQmxvY2tTZXQmLCB2b2lkKiBzdGFja0N1cnJlbnQpOworICAgICAgICB2b2lk
IGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRp
bmVTZXQmLCBDb2RlQmxvY2tTZXQmKTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IG1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgYWRkQ3VycmVudFRocmVhZCgpOyAvLyBPbmx5IG5lZWRzIHRvIGJlIGNhbGxlZCBi
eSBjbGllbnRzIHRoYXQgY2FuIHVzZSB0aGUgc2FtZSBoZWFwIGZyb20gbXVsdGlwbGUgdGhyZWFk
cy4KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQo
Q29uc2VydmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYsIHZv
aWQqIHN0YWNrQ3VycmVudCk7CisgICAgICAgIHZvaWQgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQo
Q29uc2VydmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYpOwog
CiAgICAgICAgIGNsYXNzIFRocmVhZDsKIAo=
</data>
<flag name="review"
          id="269368"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="269369"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244499</attachid>
            <date>2015-01-13 00:00:22 -0800</date>
            <delta_ts>2015-01-13 09:07:03 -0800</delta_ts>
            <desc>Updated patch that fixes broken API test</desc>
            <filename>140348-2.patch</filename>
            <type>text/plain</type>
            <size>8311</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE1LTAxLTEyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIExvY2FsIEpTQXJyYXkqICJrZXlzIiBpbiBvYmplY3RDb25zdHJ1Y3RvcktleXMoKSBpcyBu
b3QgbWFya2VkIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDM0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyBnZXQgdGhlIHJlZ2lzdGVyIGNvbnRl
bnRzIGF0IHRoZSBzYW1lIHBsYWNlIHRoYXQgd2UgZGVtYXJjYXRlIHRoZSBjdXJyZW50IHRvcCBv
ZgorICAgICAgICBzdGFjayB1c2luZyB0aGUgYWRkcmVzcyBvZiBhIGxvY2FsIHZhcmlhYmxlLCBp
biBIZWFwOjptYXJrUm9vdHMoKS4gIFRoZSByZWdpc3RlciBjb250ZW50cworICAgICAgICBidWZm
ZXIgaXMgcGFzc2VkIGFsb25nIHdpdGggdGhlIGRlbWFyY2F0aW9uIHBvaW50ZXIuICBUaGVzZSBu
ZWVkIHRvIGJlIGRvbmUgYXQgdGhpcyBsZXZlbCAKKyAgICAgICAgaW4gdGhlIGNhbGwgdHJlZSBh
bmQgbm8gbG93ZXIsIGFzIG1hcmtSb290cygpIGNhbGxzIHZhcmlvdXMgZnVuY3Rpb25zIHRoYXQg
dmlzaXQgb2JqZWN0CisgICAgICAgIHBvaW50ZXJzIHRoYXQgbWF5IGJlIGxhdHRlciBwcm92ZW4g
ZGVhZC4gIEFueSBvZiB0aG9zZSBwb2ludGVycyB0aGF0IGFyZSBsZWZ0IG9uIHRoZQorICAgICAg
ICBzdGFjayBvciBpbiByZWdpc3RlcnMgY291bGQgYmUgaW5jb3JyZWN0bHkgbWFya2VkIGFzIGxp
dmUgaWYgd2Ugc2NhbiB0aGUgc3RhY2sgY29udGVudHMKKyAgICAgICAgZnJvbSBhIGNhbGxlZCBm
dW5jdGlvbiBvciBvbmUgb2YgaXRzIGNhbGxlZXMuICBUaGUgc3RhY2sgZGVtYXJjYXRpb24gcG9p
bnRlciBhbmQgcmVnaXN0ZXIKKyAgICAgICAgc2F2aW5nIG5lZWQgdG8gYmUgZG9uZSBpbiB0aGUg
c2FtZSBmdW5jdGlvbiBzbyB0aGF0IHdlIGhhdmUgYSBjb25zaXN0ZW50IHN0YWNrLCBhY3RpdmUK
KyAgICAgICAgYW5kIHNwaWxsZWQgcmVnaXN0ZXJzLgorICAgICAgICBCZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gbWFrZSB1bm5lY2Vzc2FyeSBjYWxscyB0byBnZXQgdGhlIHJlZ2lzdGVyIGNvbnRl
bnRzLCB3ZSB1c2UKKyAgICAgICAgYSBtYWNybyB0byBhbGxvY2F0ZWQsIGFuZCBwb3NzaWJseSBh
bGlnbiwgdGhlIHJlZ2lzdGVyIHN0cnVjdHVyZSBhbmQgZ2V0IHRoZSBhY3R1YWwKKyAgICAgICAg
cmVnaXN0ZXIgY29udGVudHMuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpnYXRoZXJTdGFja1Jv
b3RzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJGcm9tQ3Vy
cmVudFRocmVhZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2
YXRpdmVSb290cyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKwogMjAx
NS0wMS0xMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIGJhc2ljIHBhdHRlcm4gbWF0Y2hpbmcgc3VwcG9ydCB0byB0aGUgdXJsIGZpbHRlcnMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNzgzMTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTA1LDggKzUwNSw5IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSkK
ICAgICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBjbGVhcmluZyBtYXJr
IGJpdHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKICAgICAvLyBnYXRoZXJpbmcgdXNlcyB0aGUgbWFy
ayBiaXRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZhbGlkLgogICAgIHZv
aWQqIGR1bW15OworICAgIEFMTE9DQVRFX0FORF9HRVRfUkVHSVNURVJfU1RBVEUocmVnaXN0ZXJz
KTsKICAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290cygmbV9vYmplY3RTcGFj
ZS5ibG9ja3MoKSwgJm1fc3RvcmFnZVNwYWNlKTsKLSAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNl
cnZhdGl2ZVJvb3RzLCAmZHVtbXkpOworICAgIGdhdGhlclN0YWNrUm9vdHMoY29uc2VydmF0aXZl
Um9vdHMsICZkdW1teSwgcmVnaXN0ZXJzKTsKICAgICBnYXRoZXJKU1N0YWNrUm9vdHMoY29uc2Vy
dmF0aXZlUm9vdHMpOwogICAgIGdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhjb25zZXJ2YXRpdmVS
b290cyk7CiAKQEAgLTU2NiwxMSArNTY3LDExIEBAIHZvaWQgSGVhcDo6Y29weUJhY2tpbmdTdG9y
ZXMoKQogICAgICAgICBtX3N0b3JhZ2VTcGFjZS5kb25lQ29weWluZygpOwogfQogCi12b2lkIEhl
YXA6OmdhdGhlclN0YWNrUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIHJvb3RzLCB2b2lkKiogZHVt
bXkpCit2b2lkIEhlYXA6OmdhdGhlclN0YWNrUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIHJvb3Rz
LCB2b2lkKiogZHVtbXksIE1hY2hpbmVUaHJlYWRzOjpSZWdpc3RlclN0YXRlJiByZWdpc3RlcnMp
CiB7CiAgICAgR0NQSEFTRShHYXRoZXJTdGFja1Jvb3RzKTsKICAgICBtX2ppdFN0dWJSb3V0aW5l
cy5jbGVhck1hcmtzKCk7Ci0gICAgbV9tYWNoaW5lVGhyZWFkcy5nYXRoZXJDb25zZXJ2YXRpdmVS
b290cyhyb290cywgbV9qaXRTdHViUm91dGluZXMsIG1fY29kZUJsb2NrcywgZHVtbXkpOworICAg
IG1fbWFjaGluZVRocmVhZHMuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMocm9vdHMsIG1faml0U3R1
YlJvdXRpbmVzLCBtX2NvZGVCbG9ja3MsIGR1bW15LCByZWdpc3RlcnMpOwogfQogCiB2b2lkIEhl
YXA6OmdhdGhlckpTU3RhY2tSb290cyhDb25zZXJ2YXRpdmVSb290cyYgcm9vdHMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNzgzMTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsyNzUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RvcEFsbG9jYXRpb24oKTsKIAogICAgIHZvaWQgbWFya1Jv
b3RzKGRvdWJsZSBnY1N0YXJ0VGltZSk7Ci0gICAgdm9pZCBnYXRoZXJTdGFja1Jvb3RzKENvbnNl
cnZhdGl2ZVJvb3RzJiwgdm9pZCoqIGR1bW15KTsKKyAgICB2b2lkIGdhdGhlclN0YWNrUm9vdHMo
Q29uc2VydmF0aXZlUm9vdHMmLCB2b2lkKiogZHVtbXksIE1hY2hpbmVUaHJlYWRzOjpSZWdpc3Rl
clN0YXRlJiByZWdpc3RlcnMpOwogICAgIHZvaWQgZ2F0aGVySlNTdGFja1Jvb3RzKENvbnNlcnZh
dGl2ZVJvb3RzJik7CiAgICAgdm9pZCBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoQ29uc2VydmF0
aXZlUm9vdHMmKTsKICAgICB2b2lkIGNsZWFyTGl2ZW5lc3NEYXRhKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAJKHJldmlz
aW9uIDE3ODMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01h
cmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSwyNSArMjE1LDggQEAgdm9pZCBNYWNoaW5l
VGhyZWFkczo6cmVtb3ZlQ3VycmVudFRocmVhZAogICAgIH0KIH0KIAotI2lmIENPTVBJTEVSKEdD
QykKLSNkZWZpbmUgUkVHSVNURVJfQlVGRkVSX0FMSUdOTUVOVCBfX2F0dHJpYnV0ZV9fICgoYWxp
Z25lZCAoc2l6ZW9mKHZvaWQqKSkpKQotI2Vsc2UKLSNkZWZpbmUgUkVHSVNURVJfQlVGRkVSX0FM
SUdOTUVOVAotI2VuZGlmCi0KLXZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21DdXJyZW50
VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cywgSklUU3R1YlJvdXRp
bmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzLCB2b2lkKiBz
dGFja0N1cnJlbnQpCit2b2lkIE1hY2hpbmVUaHJlYWRzOjpnYXRoZXJGcm9tQ3VycmVudFRocmVh
ZChDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMsIEpJVFN0dWJSb3V0aW5lU2V0
JiBqaXRTdHViUm91dGluZXMsIENvZGVCbG9ja1NldCYgY29kZUJsb2Nrcywgdm9pZCogc3RhY2tD
dXJyZW50LCBSZWdpc3RlclN0YXRlJiByZWdpc3RlcnMpCiB7Ci0gICAgLy8gc2V0am1wIGZvcmNl
cyB2b2xhdGlsZSByZWdpc3RlcnMgb250byB0aGUgc3RhY2sKLSAgICBqbXBfYnVmIHJlZ2lzdGVy
cyBSRUdJU1RFUl9CVUZGRVJfQUxJR05NRU5UOwotI2lmIENPTVBJTEVSKE1TVkMpCi0jcHJhZ21h
IHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NjExKQotI2VuZGlmCi0g
ICAgc2V0am1wKHJlZ2lzdGVycyk7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSNwcmFnbWEgd2Fybmlu
Zyhwb3ApCi0jZW5kaWYKLQogICAgIHZvaWQqIHJlZ2lzdGVyc0JlZ2luID0gJnJlZ2lzdGVyczsK
ICAgICB2b2lkKiByZWdpc3RlcnNFbmQgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigm
cmVnaXN0ZXJzICsgMSkpKTsKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQocmVnaXN0ZXJzQmVn
aW4sIHJlZ2lzdGVyc0VuZCwgaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzKTsKQEAgLTQ0NSw5
ICs0MjgsOSBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjpnYXRoZXJGcm9tT3RoZXJUaHJlCiAgICAg
ZnJlZVBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKHJlZ3MpOwogfQogCi12b2lkIE1hY2hpbmVUaHJl
YWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0
aXZlUm9vdHMsIEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMsIENvZGVCbG9ja1Nl
dCYgY29kZUJsb2Nrcywgdm9pZCogc3RhY2tDdXJyZW50KQordm9pZCBNYWNoaW5lVGhyZWFkczo6
Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJv
b3RzLCBKSVRTdHViUm91dGluZVNldCYgaml0U3R1YlJvdXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNv
ZGVCbG9ja3MsIHZvaWQqIHN0YWNrQ3VycmVudCwgUmVnaXN0ZXJTdGF0ZSYgcmVnaXN0ZXJzKQog
ewotICAgIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKGNvbnNlcnZhdGl2ZVJvb3RzLCBqaXRTdHVi
Um91dGluZXMsIGNvZGVCbG9ja3MsIHN0YWNrQ3VycmVudCk7CisgICAgZ2F0aGVyRnJvbUN1cnJl
bnRUaHJlYWQoY29uc2VydmF0aXZlUm9vdHMsIGppdFN0dWJSb3V0aW5lcywgY29kZUJsb2Nrcywg
c3RhY2tDdXJyZW50LCByZWdpc3RlcnMpOwogCiAgICAgaWYgKG1fdGhyZWFkU3BlY2lmaWMpIHsK
ICAgICAgICAgUGxhdGZvcm1UaHJlYWQgY3VycmVudFBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVu
dFBsYXRmb3JtVGhyZWFkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuaAkocmV2aXNpb24gMTc4MzE2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDYgKzIyLDcgQEAKICNpZm5kZWYgTWFjaGluZVRocmVhZHNfaAogI2RlZmluZSBNYWNoaW5lVGhy
ZWFkc19oCiAKKyNpbmNsdWRlIDxzZXRqbXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oPgpAQCAtMzYsMTYgKzM3LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIE1hY2hpbmVUaHJlYWRzIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFj
aGluZVRocmVhZHMpOwogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBqbXBfYnVmIFJlZ2lz
dGVyU3RhdGU7CisKICAgICAgICAgTWFjaGluZVRocmVhZHMoSGVhcCopOwogICAgICAgICB+TWFj
aGluZVRocmVhZHMoKTsKIAotICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENv
bnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxvY2tTZXQmLCB2b2lk
KiBzdGFja0N1cnJlbnQpOworICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENv
bnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxvY2tTZXQmLCB2b2lk
KiBzdGFja0N1cnJlbnQsIFJlZ2lzdGVyU3RhdGUmIHJlZ2lzdGVycyk7CiAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEN1cnJlbnRUaHJlYWQoKTsgLy8gT25seSBu
ZWVkcyB0byBiZSBjYWxsZWQgYnkgY2xpZW50cyB0aGF0IGNhbiB1c2UgdGhlIHNhbWUgaGVhcCBm
cm9tIG11bHRpcGxlIHRocmVhZHMuCiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGdhdGhl
ckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQm
LCBDb2RlQmxvY2tTZXQmLCB2b2lkKiBzdGFja0N1cnJlbnQpOworICAgICAgICB2b2lkIGdhdGhl
ckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQm
LCBDb2RlQmxvY2tTZXQmLCB2b2lkKiBzdGFja0N1cnJlbnQsIFJlZ2lzdGVyU3RhdGUmIHJlZ2lz
dGVycyk7CiAKICAgICAgICAgY2xhc3MgVGhyZWFkOwogCkBAIC02NCw0ICs2NywyNCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKKyNpZiBDT01QSUxFUihHQ0MpCisj
ZGVmaW5lIFJFR0lTVEVSX0JVRkZFUl9BTElHTk1FTlQgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQg
KHNpemVvZih2b2lkKikpKSkKKyNlbHNlCisjZGVmaW5lIFJFR0lTVEVSX0JVRkZFUl9BTElHTk1F
TlQKKyNlbmRpZgorCisvLyBBTExPQ0FURV9BTkRfR0VUX1JFR0lTVEVSX1NUQVRFKCkgaXMgYSBt
YWNybyBzbyB0aGF0IGl0IGlzIGFsd2F5cyAiaW5saW5lZCIgZXZlbiBpbiBkZWJ1ZyBidWlsZHMu
CisjaWYgQ09NUElMRVIoTVNWQykKKyNwcmFnbWEgd2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQ2MTEpCisjZGVmaW5lIEFMTE9DQVRFX0FORF9HRVRfUkVHSVNURVJfU1RB
VEUocmVnaXN0ZXJzKSBcCisgICAgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUgcmVnaXN0
ZXJzIFJFR0lTVEVSX0JVRkZFUl9BTElHTk1FTlQ7IFwKKyAgICBzZXRqbXAocmVnaXN0ZXJzKQor
I3ByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbHNlCisjZGVmaW5lIEFMTE9DQVRFX0FORF9HRVRfUkVH
SVNURVJfU1RBVEUocmVnaXN0ZXJzKSBcCisgICAgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3Rh
dGUgcmVnaXN0ZXJzIFJFR0lTVEVSX0JVRkZFUl9BTElHTk1FTlQ7IFwKKyAgICBzZXRqbXAocmVn
aXN0ZXJzKQorI2VuZGlmCisKICNlbmRpZiAvLyBNYWNoaW5lVGhyZWFkc19oCg==
</data>
<flag name="review"
          id="269436"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>