<?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>171162</bug_id>
          
          <creation_ts>2017-04-22 09:00:25 -0700</creation_ts>
          <short_desc>[JSC] Get stack pointer without pthread attr</short_desc>
          <delta_ts>2017-04-22 11:08:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300197</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 09:00:25 -0700</bug_when>
    <thetext>pthread_ attr operations are not safe for calling it when the thread is suspended since it can invoke malloc / free.
We would like to retrieve stack pointer without using pthread attr operations, like,

NEVER_INLINES void* getPossibleStackPointer()
{
    volatile void* stackLocation = nullptr;
    return &amp;stackLocation;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300198</commentid>
    <comment_count>1</comment_count>
      <attachid>307909</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 09:33:18 -0700</bug_when>
    <thetext>Created attachment 307909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300199</commentid>
    <comment_count>2</comment_count>
      <attachid>307909</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 09:35:14 -0700</bug_when>
    <thetext>Comment on attachment 307909
Patch

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

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:101
&gt; +}

Now, we do not consider about alternative signal stack explicitly. Originally, it is not safe with conservative GC by nature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300200</commentid>
    <comment_count>3</comment_count>
      <attachid>307910</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 09:47:50 -0700</bug_when>
    <thetext>Created attachment 307910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300201</commentid>
    <comment_count>4</comment_count>
      <attachid>307911</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 10:09:12 -0700</bug_when>
    <thetext>Created attachment 307911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300202</commentid>
    <comment_count>5</comment_count>
      <attachid>307912</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 10:11:21 -0700</bug_when>
    <thetext>Created attachment 307912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300203</commentid>
    <comment_count>6</comment_count>
      <attachid>307912</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-22 10:15:26 -0700</bug_when>
    <thetext>Comment on attachment 307912
Patch

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

r=me with fixes.

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:115
&gt; +    int ret = sigaltstack(nullptr, &amp;stack);

typo: /sigaltstack/signaltstack/

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:136
&gt; +    ASSERT_WITH_MESSAGE(!isOnAlternativeSignalStack(), &quot;Do not support alternative signal stack. Consider disabling concurrent GC.&quot;);

Let&apos;s change the message to &quot;Using an alternative signal stack is not supported. Consider disabling the concurrent GC.&quot;

Also, I suggest making this a RELEASE_ASSERT.  I think this code is not performance critical, and this failure is critical and may be hard to detect if not asserted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300206</commentid>
    <comment_count>7</comment_count>
      <attachid>307912</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-22 10:30:25 -0700</bug_when>
    <thetext>Comment on attachment 307912
Patch

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

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:115
&gt;&gt; +    int ret = sigaltstack(nullptr, &amp;stack);
&gt; 
&gt; typo: /sigaltstack/signaltstack/

Yusuke pointed out that I was wrong.  sigaltstack is correct.

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:117
&gt; +    ASSERT_UNUSED(ret, ret);
&gt; +    return stack.ss_flags == SS_ONSTACK;

If this assert is critical, you can combine it with the return value instead:

    return ret &amp;&amp; stack.ss_flags == SS_ONSTACK;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300213</commentid>
    <comment_count>8</comment_count>
      <attachid>307912</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 10:53:56 -0700</bug_when>
    <thetext>Comment on attachment 307912
Patch

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

Thanks!

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:116
&gt; +    ASSERT_UNUSED(ret, ret);

This will be changed to RELEASE_ASSERT(!ret).

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:117
&gt;&gt; +    return stack.ss_flags == SS_ONSTACK;
&gt; 
&gt; If this assert is critical, you can combine it with the return value instead:
&gt; 
&gt;     return ret &amp;&amp; stack.ss_flags == SS_ONSTACK;

I think this |ret| never becomes non-zero. So, if it is non-zero, some crazy thing happens I think.
I would like to have two assertions for that to investigate what is wrong if the assertion is fired.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:136
&gt;&gt; +    ASSERT_WITH_MESSAGE(!isOnAlternativeSignalStack(), &quot;Do not support alternative signal stack. Consider disabling concurrent GC.&quot;);
&gt; 
&gt; Let&apos;s change the message to &quot;Using an alternative signal stack is not supported. Consider disabling the concurrent GC.&quot;
&gt; 
&gt; Also, I suggest making this a RELEASE_ASSERT.  I think this code is not performance critical, and this failure is critical and may be hard to detect if not asserted.

Yeah, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300215</commentid>
    <comment_count>9</comment_count>
      <attachid>307912</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 11:03:44 -0700</bug_when>
    <thetext>Comment on attachment 307912
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:136
&gt;&gt;&gt; +    ASSERT_WITH_MESSAGE(!isOnAlternativeSignalStack(), &quot;Do not support alternative signal stack. Consider disabling concurrent GC.&quot;);
&gt;&gt; 
&gt;&gt; Let&apos;s change the message to &quot;Using an alternative signal stack is not supported. Consider disabling the concurrent GC.&quot;
&gt;&gt; 
&gt;&gt; Also, I suggest making this a RELEASE_ASSERT.  I think this code is not performance critical, and this failure is critical and may be hard to detect if not asserted.
&gt; 
&gt; Yeah, changed.

I&apos;ve considered about it a bit more. This signal function is guarded by a global mutex, and GC / sampling profiler invokes it repeatedly. So, I think this function is a bit frequently called.
And sigaltstack is system call. I think it is not good.
Temporary, I would like to make it usual ASSERT for this reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300216</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-22 11:08:10 -0700</bug_when>
    <thetext>Committed r215667: &lt;http://trac.webkit.org/changeset/215667&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307909</attachid>
            <date>2017-04-22 09:33:18 -0700</date>
            <delta_ts>2017-04-22 09:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171162-20170423013317.patch</filename>
            <type>text/plain</type>
            <size>4686</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU3YTMyYTFhM2EwMjZjOWZmZTA4Yjg0
ZjZhM2NkZmNmNmI5MTI5MjYuLmQyNGIwMTVkZTllN2ZjYjBkZjZlNjI2OTI2ZjA2MTBjM2M2YmZm
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTctMDQtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0pTQ10gR2V0IHN0YWNrIHBvaW50ZXIgd2l0
aG91dCBwdGhyZWFkIGF0dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIEhBVkUoTUFDSElORV9DT05URVhUKSBpcyBub3QgZW5hYmxlZCwgd2UgZ2V0
IHN0YWNrIGJhc2UgYW5kIGJvdW5kYXJ5IGJ5IHVzaW5nCisgICAgICAgIHB0aHJlYWRfYXR0ciBm
dW5jdGlvbnMuIEhvd2V2ZXIsIGl0IGlzIHdyb25nIHNpbmNlIHRoaXMgZnVuY3Rpb24gY2FuIGJl
IGNhbGxlZAorICAgICAgICBhZnRlciB0aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4gSW4gdGhhdCBj
YXNlLCB3ZSBzaG91bGQgbm90IGNhbGwgYW55IGZ1bmN0aW9ucworICAgICAgICB0aGF0IGlzIG5v
dCBhc3luYyBzaWduYWwgc2FmZS4gRm9yIGV4YW1wbGUsIHB0aHJlYWRfZ2V0YXR0cl9ucCBjYWxs
cyBtYWxsb2MuCisKKyAgICAgICAgSW5zdGVhZCB3ZSB1c2UgZ2V0UG9zc2libGVTdGFja1BvaW50
ZXIoKSwgd2hpY2ggcmV0dXJucyBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyLgorCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6
CisgICAgICAgIChXVEY6OmdldFBvc3NpYmxlU3RhY2tQb2ludGVyKToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpzaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZSk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Z2V0UmVnaXN0ZXJzKToKKworMjAxNy0wNC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBSRUdSRVNTSU9OKHIyMTU2MzgpOiBbTGludXhdIFNl
dmVyYWwgd29ya2VyIHRlc3RzIGFyZSBjcmFzaGluZyBpbiBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJT
dXNwZW5kUmVzdW1lIGFmdGVyIHIyMTU2MzgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MTE1OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGMyMGE2NWUyMmJm
ZDUwM2Q2YjU2NTE1ZDk0ODQ2NzA2NjYyODExNmIuLmM1OTQ3ZWJjNzA2NDFiNzBiODFlMmQwYWU3
YTIyNTFhYmYyMWM5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC0xOTEsNyArMTkxLDcgQEAgY2xhc3Mg
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIG1hY2hf
cG9ydF90IG1fcGxhdGZvcm1UaHJlYWQ7CiAjZWxzZQogICAgIHNlbV90IG1fc2VtYXBob3JlRm9y
U3VzcGVuZFJlc3VtZTsKLSAgICBtY29udGV4dF90IG1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQ7
CisgICAgUGxhdGZvcm1SZWdpc3RlcnMgbV9wbGF0Zm9ybVJlZ2lzdGVyczsKICAgICB1bnNpZ25l
ZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3N1c3BlbmRl
ZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRl
eCAxMzc4NDNjZTM0MDIwMWJmYjg1ZjcwODYzNTc1Y2VkZTBhNzY5MDE5Li43MDcwN2U3Y2Q0NTQ1
ZDgwNmUwOTdmMGZmOTg5ZjU2NzdiYWEwMmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmdQdGhyZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwCkBAIC05NCw2ICs5NCwxMiBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IGludCBTaWdU
aHJlYWRTdXNwZW5kUmVzdW1lID0gU0lHVVNSMTsKIHN0YXRpYyBzdGQ6OmF0b21pYzxUaHJlYWQq
PiB0YXJnZXRUaHJlYWQgeyBudWxscHRyIH07CiBzdGF0aWMgU3RhdGljV29yZExvY2sgZ2xvYmFs
U3VzcGVuZExvY2s7CiAKK05FVkVSX0lOTElORSB2b2lkKiBnZXRQb3NzaWJsZVN0YWNrUG9pbnRl
cigpCit7CisgICAgdm9sYXRpbGUgdm9pZCogc3RhY2tMb2NhdGlvbiA9IG51bGxwdHI7CisgICAg
cmV0dXJuICZzdGFja0xvY2F0aW9uOworfQorCiB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1
c3BlbmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKIHsKICAgICAvLyBU
b3VjaGluZyB0aHJlYWQgbG9jYWwgYXRvbWljIHR5cGVzIGZyb20gc2lnbmFsIGhhbmRsZXJzIGlz
IGFsbG93ZWQuCkBAIC0xMTAsMTAgKzExNiwxNSBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxl
clN1c3BlbmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAgICB9CiAK
ICAgICB1Y29udGV4dF90KiB1c2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1
Y29udGV4dCk7CisKKyNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICNpZiBDUFUoUFBDKQotICAg
IHRocmVhZC0+bV9zdXNwZW5kZWRNYWNoaW5lQ29udGV4dCA9ICp1c2VyQ29udGV4dC0+dWNfbWNv
bnRleHQudWNfcmVnczsKKyAgICB0aHJlYWQtPm1fcGxhdGZvcm1SZWdpc3RlcnMgPSBQbGF0Zm9y
bVJlZ2lzdGVycyB7ICp1c2VyQ29udGV4dC0+dWNfbWNvbnRleHQudWNfcmVncyB9OwogI2Vsc2UK
LSAgICB0aHJlYWQtPm1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQgPSB1c2VyQ29udGV4dC0+dWNf
bWNvbnRleHQ7CisgICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdp
c3RlcnMgeyB1c2VyQ29udGV4dC0+dWNfbWNvbnRleHQgfTsKKyNlbmRpZgorI2Vsc2UKKyAgICB0
aHJlYWQtPm1fcGxhdGZvcm1SZWdpc3RlcnMgPSBQbGF0Zm9ybVJlZ2lzdGVycyB7IGdldFBvc3Np
YmxlU3RhY2tQb2ludGVyKCkgfTsKICNlbmRpZgogCiAgICAgLy8gQWxsb3cgc3VzcGVuZCBjYWxs
ZXIgdG8gc2VlIHRoYXQgdGhpcyB0aHJlYWQgaXMgc3VzcGVuZGVkLgpAQCAtMzk2LDM2ICs0MDcs
MTAgQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdp
c3RlcnMpCiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogICAgIHJldHVybiB1c2VyQ291bnQgKiBz
aXplb2YodWludHB0cl90KTsKLSNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgIHJlZ2lz
dGVycy5tYWNoaW5lQ29udGV4dCA9IG1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQ7Ci0gICAgcmV0
dXJuIHNpemVvZihQbGF0Zm9ybVJlZ2lzdGVycyk7Ci0jZWxpZiBPUyhPUEVOQlNEKQotICAgIC8v
IGh0dHA6Ly9tYW4ub3BlbmJzZC5vcmcvcHRocmVhZF9zdGFja3NlZ19ucC4zCi0gICAgc3RhY2tf
dCBzczsKLSAgICBpbnQgcmMgPSBwdGhyZWFkX3N0YWNrc2VnX25wKG1faGFuZGxlLCAmc3MpOwot
ICAgIHJlZ2lzdGVycy5zdGFja1BvaW50ZXIgPSBzcy5zc19zcDsKLSAgICByZXR1cm4gMDsKICNl
bHNlCi0gICAgcHRocmVhZF9hdHRyX3QgYXR0cmlidXRlOwotICAgIHB0aHJlYWRfYXR0cl9pbml0
KCZhdHRyaWJ1dGUpOwotI2lmIEhBVkUoUFRIUkVBRF9OUF9IKSB8fCBPUyhORVRCU0QpCi0gICAg
Ly8gZS5nLiBvbiBGcmVlQlNEIDUuNCwgbmV1bmRvcmZAa2RlLm9yZwotICAgIHB0aHJlYWRfYXR0
cl9nZXRfbnAobV9oYW5kbGUsICZhdHRyaWJ1dGUpOwotI2Vsc2UKLSAgICAvLyBGSVhNRTogdGhp
cyBmdW5jdGlvbiBpcyBub24tcG9ydGFibGU7IG90aGVyIFBPU0lYIHN5c3RlbXMgbWF5IGhhdmUg
ZGlmZmVyZW50IG5wIGFsdGVybmF0aXZlcwotICAgIHB0aHJlYWRfZ2V0YXR0cl9ucChtX2hhbmRs
ZSwgJmF0dHJpYnV0ZSk7Ci0jZW5kaWYKLQotICAgIHZvaWQqIHN0YWNrQmFzZSA9IDA7Ci0gICAg
c2l6ZV90IHN0YWNrU2l6ZSA9IDA7Ci0gICAgaW50IHJjID0gcHRocmVhZF9hdHRyX2dldHN0YWNr
KCZhdHRyaWJ1dGUsICZzdGFja0Jhc2UsICZzdGFja1NpemUpOwotICAgIEFTU0VSVF9VTlVTRUQo
cmMsICFyYyk7Ci0gICAgQVNTRVJUKHN0YWNrQmFzZSk7Ci0gICAgcmVnaXN0ZXJzLnN0YWNrUG9p
bnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihzdGFja0Jhc2UpICsgc3RhY2tTaXplOwotCi0gICAg
cHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHJpYnV0ZSk7Ci0KLSAgICByZXR1cm4gMDsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG1fc3VzcGVuZENvdW50LCAiV2UgY2FuIGdldCByZWdpc3RlcnMg
b25seSBpZiB0aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4iKTsKKyAgICByZWdpc3RlcnMgPSBtX3Bs
YXRmb3JtUmVnaXN0ZXJzOworICAgIHJldHVybiBzaXplb2YoUGxhdGZvcm1SZWdpc3RlcnMpOwog
I2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307910</attachid>
            <date>2017-04-22 09:47:50 -0700</date>
            <delta_ts>2017-04-22 10:09:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171162-20170423014749.patch</filename>
            <type>text/plain</type>
            <size>4990</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU3YTMyYTFhM2EwMjZjOWZmZTA4Yjg0
ZjZhM2NkZmNmNmI5MTI5MjYuLmQyNGIwMTVkZTllN2ZjYjBkZjZlNjI2OTI2ZjA2MTBjM2M2YmZm
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTctMDQtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0pTQ10gR2V0IHN0YWNrIHBvaW50ZXIgd2l0
aG91dCBwdGhyZWFkIGF0dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIEhBVkUoTUFDSElORV9DT05URVhUKSBpcyBub3QgZW5hYmxlZCwgd2UgZ2V0
IHN0YWNrIGJhc2UgYW5kIGJvdW5kYXJ5IGJ5IHVzaW5nCisgICAgICAgIHB0aHJlYWRfYXR0ciBm
dW5jdGlvbnMuIEhvd2V2ZXIsIGl0IGlzIHdyb25nIHNpbmNlIHRoaXMgZnVuY3Rpb24gY2FuIGJl
IGNhbGxlZAorICAgICAgICBhZnRlciB0aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4gSW4gdGhhdCBj
YXNlLCB3ZSBzaG91bGQgbm90IGNhbGwgYW55IGZ1bmN0aW9ucworICAgICAgICB0aGF0IGlzIG5v
dCBhc3luYyBzaWduYWwgc2FmZS4gRm9yIGV4YW1wbGUsIHB0aHJlYWRfZ2V0YXR0cl9ucCBjYWxs
cyBtYWxsb2MuCisKKyAgICAgICAgSW5zdGVhZCB3ZSB1c2UgZ2V0UG9zc2libGVTdGFja1BvaW50
ZXIoKSwgd2hpY2ggcmV0dXJucyBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyLgorCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6
CisgICAgICAgIChXVEY6OmdldFBvc3NpYmxlU3RhY2tQb2ludGVyKToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpzaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZSk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Z2V0UmVnaXN0ZXJzKToKKworMjAxNy0wNC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBSRUdSRVNTSU9OKHIyMTU2MzgpOiBbTGludXhdIFNl
dmVyYWwgd29ya2VyIHRlc3RzIGFyZSBjcmFzaGluZyBpbiBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJT
dXNwZW5kUmVzdW1lIGFmdGVyIHIyMTU2MzgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MTE1OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGMyMGE2NWUyMmJm
ZDUwM2Q2YjU2NTE1ZDk0ODQ2NzA2NjYyODExNmIuLmM1OTQ3ZWJjNzA2NDFiNzBiODFlMmQwYWU3
YTIyNTFhYmYyMWM5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC0xOTEsNyArMTkxLDcgQEAgY2xhc3Mg
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIG1hY2hf
cG9ydF90IG1fcGxhdGZvcm1UaHJlYWQ7CiAjZWxzZQogICAgIHNlbV90IG1fc2VtYXBob3JlRm9y
U3VzcGVuZFJlc3VtZTsKLSAgICBtY29udGV4dF90IG1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQ7
CisgICAgUGxhdGZvcm1SZWdpc3RlcnMgbV9wbGF0Zm9ybVJlZ2lzdGVyczsKICAgICB1bnNpZ25l
ZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3N1c3BlbmRl
ZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRl
eCAxMzc4NDNjZTM0MDIwMWJmYjg1ZjcwODYzNTc1Y2VkZTBhNzY5MDE5Li45YzBmNTQ4M2MyMWE2
NjkzN2Y3NTE2M2I3OWUzOTU5MDA1MmYyMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmdQdGhyZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwCkBAIC05NCw2ICs5NCwyMiBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IGludCBTaWdU
aHJlYWRTdXNwZW5kUmVzdW1lID0gU0lHVVNSMTsKIHN0YXRpYyBzdGQ6OmF0b21pYzxUaHJlYWQq
PiB0YXJnZXRUaHJlYWQgeyBudWxscHRyIH07CiBzdGF0aWMgU3RhdGljV29yZExvY2sgZ2xvYmFs
U3VzcGVuZExvY2s7CiAKKyNpZiBDT01QSUxFUihHQ0MpICYmIEFTU0VSVF9ESVNBQkxFRAorI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XcmV0dXJuLWxvY2FsLWFkZHIiCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKSAmJiBBU1NFUlRf
RElTQUJMRUQKKworc3RhdGljIFVOVVNFRF9GVU5DVElPTiBORVZFUl9JTkxJTkUgdm9pZCogZ2V0
UG9zc2libGVTdGFja1BvaW50ZXIoKQoreworICAgIHZvbGF0aWxlIHZvaWQqIHN0YWNrTG9jYXRp
b24gPSBudWxscHRyOworICAgIHJldHVybiAmc3RhY2tMb2NhdGlvbjsKK30KKworI2lmIENPTVBJ
TEVSKEdDQykgJiYgQVNTRVJUX0RJU0FCTEVECisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAor
I2VuZGlmIC8vIENPTVBJTEVSKEdDQykgJiYgQVNTRVJUX0RJU0FCTEVECisKKwogdm9pZCBUaHJl
YWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNv
bnRleHQpCiB7CiAgICAgLy8gVG91Y2hpbmcgdGhyZWFkIGxvY2FsIGF0b21pYyB0eXBlcyBmcm9t
IHNpZ25hbCBoYW5kbGVycyBpcyBhbGxvd2VkLgpAQCAtMTEwLDEwICsxMjYsMTUgQEAgdm9pZCBU
aHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCog
dWNvbnRleHQpCiAgICAgfQogCiAgICAgdWNvbnRleHRfdCogdXNlckNvbnRleHQgPSBzdGF0aWNf
Y2FzdDx1Y29udGV4dF90Kj4odWNvbnRleHQpOworCisjaWYgSEFWRShNQUNISU5FX0NPTlRFWFQp
CiAjaWYgQ1BVKFBQQykKLSAgICB0aHJlYWQtPm1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQgPSAq
dXNlckNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3M7CisgICAgdGhyZWFkLT5tX3BsYXRmb3Jt
UmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyAqdXNlckNvbnRleHQtPnVjX21jb250ZXh0
LnVjX3JlZ3MgfTsKKyNlbHNlCisgICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxh
dGZvcm1SZWdpc3RlcnMgeyB1c2VyQ29udGV4dC0+dWNfbWNvbnRleHQgfTsKKyNlbmRpZgogI2Vs
c2UKLSAgICB0aHJlYWQtPm1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQgPSB1c2VyQ29udGV4dC0+
dWNfbWNvbnRleHQ7CisgICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1S
ZWdpc3RlcnMgeyBnZXRQb3NzaWJsZVN0YWNrUG9pbnRlcigpIH07CiAjZW5kaWYKIAogICAgIC8v
IEFsbG93IHN1c3BlbmQgY2FsbGVyIHRvIHNlZSB0aGF0IHRoaXMgdGhyZWFkIGlzIHN1c3BlbmRl
ZC4KQEAgLTM5NiwzNiArNDE3LDEwIEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0
Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgICAgICBDUkFTSCgpOwogICAgIH0KICAgICBy
ZXR1cm4gdXNlckNvdW50ICogc2l6ZW9mKHVpbnRwdHJfdCk7Ci0jZWxpZiBIQVZFKE1BQ0hJTkVf
Q09OVEVYVCkKLSAgICByZWdpc3RlcnMubWFjaGluZUNvbnRleHQgPSBtX3N1c3BlbmRlZE1hY2hp
bmVDb250ZXh0OwotICAgIHJldHVybiBzaXplb2YoUGxhdGZvcm1SZWdpc3RlcnMpOwotI2VsaWYg
T1MoT1BFTkJTRCkKLSAgICAvLyBodHRwOi8vbWFuLm9wZW5ic2Qub3JnL3B0aHJlYWRfc3RhY2tz
ZWdfbnAuMwotICAgIHN0YWNrX3Qgc3M7Ci0gICAgaW50IHJjID0gcHRocmVhZF9zdGFja3NlZ19u
cChtX2hhbmRsZSwgJnNzKTsKLSAgICByZWdpc3RlcnMuc3RhY2tQb2ludGVyID0gc3Muc3Nfc3A7
Ci0gICAgcmV0dXJuIDA7CiAjZWxzZQotICAgIHB0aHJlYWRfYXR0cl90IGF0dHJpYnV0ZTsKLSAg
ICBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cmlidXRlKTsKLSNpZiBIQVZFKFBUSFJFQURfTlBfSCkg
fHwgT1MoTkVUQlNEKQotICAgIC8vIGUuZy4gb24gRnJlZUJTRCA1LjQsIG5ldW5kb3JmQGtkZS5v
cmcKLSAgICBwdGhyZWFkX2F0dHJfZ2V0X25wKG1faGFuZGxlLCAmYXR0cmlidXRlKTsKLSNlbHNl
Ci0gICAgLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbm9uLXBvcnRhYmxlOyBvdGhlciBQT1NJ
WCBzeXN0ZW1zIG1heSBoYXZlIGRpZmZlcmVudCBucCBhbHRlcm5hdGl2ZXMKLSAgICBwdGhyZWFk
X2dldGF0dHJfbnAobV9oYW5kbGUsICZhdHRyaWJ1dGUpOwotI2VuZGlmCi0KLSAgICB2b2lkKiBz
dGFja0Jhc2UgPSAwOwotICAgIHNpemVfdCBzdGFja1NpemUgPSAwOwotICAgIGludCByYyA9IHB0
aHJlYWRfYXR0cl9nZXRzdGFjaygmYXR0cmlidXRlLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXplKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJjLCAhcmMpOwotICAgIEFTU0VSVChzdGFja0Jhc2UpOwotICAg
IHJlZ2lzdGVycy5zdGFja1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2tCYXNlKSAr
IHN0YWNrU2l6ZTsKLQotICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyaWJ1dGUpOwotCi0g
ICAgcmV0dXJuIDA7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N1c3BlbmRDb3VudCwgIldl
IGNhbiBnZXQgcmVnaXN0ZXJzIG9ubHkgaWYgdGhlIHRocmVhZCBpcyBzdXNwZW5kZWQuIik7Cisg
ICAgcmVnaXN0ZXJzID0gbV9wbGF0Zm9ybVJlZ2lzdGVyczsKKyAgICByZXR1cm4gc2l6ZW9mKFBs
YXRmb3JtUmVnaXN0ZXJzKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307911</attachid>
            <date>2017-04-22 10:09:12 -0700</date>
            <delta_ts>2017-04-22 10:11:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171162-20170423020911.patch</filename>
            <type>text/plain</type>
            <size>5620</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU3YTMyYTFhM2EwMjZjOWZmZTA4Yjg0
ZjZhM2NkZmNmNmI5MTI5MjYuLjM3MzJhNDFiM2NiNDM4ZWNjMTI5ZDM0NTFkNzZiZmZjOTczZGQz
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTctMDQtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0pTQ10gR2V0IHN0YWNrIHBvaW50ZXIgd2l0
aG91dCBwdGhyZWFkIGF0dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIEhBVkUoTUFDSElORV9DT05URVhUKSBpcyBub3QgZW5hYmxlZCwgd2UgZ2V0
IHN0YWNrIGJhc2UgYW5kIGJvdW5kYXJ5IGJ5IHVzaW5nCisgICAgICAgIHB0aHJlYWRfYXR0ciBm
dW5jdGlvbnMuIEhvd2V2ZXIsIGl0IGlzIHdyb25nIHNpbmNlIHRoaXMgZnVuY3Rpb24gY2FuIGJl
IGNhbGxlZAorICAgICAgICBhZnRlciB0aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4gSW4gdGhhdCBj
YXNlLCB3ZSBzaG91bGQgbm90IGNhbGwgYW55IGZ1bmN0aW9ucworICAgICAgICB0aGF0IGlzIG5v
dCBhc3luYyBzaWduYWwgc2FmZS4gRm9yIGV4YW1wbGUsIHB0aHJlYWRfZ2V0YXR0cl9ucCBjYWxs
cyBtYWxsb2MuCisKKyAgICAgICAgSW5zdGVhZCB3ZSB1c2UgZ2V0QXBwcm94aW1hdGVTdGFja1Bv
aW50ZXIoKSwgd2hpY2ggcmV0dXJucyBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyLgorCisgICAg
ICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5j
cHA6CisgICAgICAgIChXVEY6OmdldEFwcHJveGltYXRlU3RhY2tQb2ludGVyKToKKyAgICAgICAg
KFdURjo6aXNPbkFsdGVybmF0aXZlU2lnbmFsU3RhY2spOgorICAgICAgICBXaGVuIGdhdGhlcmlu
ZyBjb25zZXJ2YXRpdmUgcm9vdHMsIHdlIHNob3VsZCBrZWVwIHN0YWNrIHBvaW50ZXIgcG9pbnRp
bmcgc3RhY2suCisgICAgICAgIEFuZCBpZiBjb25jdXJyZW50IEdDIGlzIGVuYWJsZWQsIHdlIGFs
d2F5cyBuZWVkIHRvIGtlZXAgdGhlIGFib3ZlIGludmFyaWFudC4KKyAgICAgICAgU28sIHdlIGRv
IG5vdCBzdXBwb3J0IGFsdGVybmF0aXZlIHNpZ25hbCBzdGFjay4KKworICAgICAgICAoV1RGOjpU
aHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjpnZXRSZWdpc3RlcnMpOgorCisyMDE3LTA0LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFJFR1JFU1NJT04ocjIxNTYzOCk6IFtMaW51eF0gU2V2
ZXJhbCB3b3JrZXIgdGVzdHMgYXJlIGNyYXNoaW5nIGluIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1
c3BlbmRSZXN1bWUgYWZ0ZXIgcjIxNTYzOAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTU5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggYzIwYTY1ZTIyYmZk
NTAzZDZiNTY1MTVkOTQ4NDY3MDY2NjI4MTE2Yi4uYzU5NDdlYmM3MDY0MWI3MGI4MWUyZDBhZTdh
MjI1MWFiZjIxYzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBU
aHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgbWFjaF9w
b3J0X3QgbV9wbGF0Zm9ybVRocmVhZDsKICNlbHNlCiAgICAgc2VtX3QgbV9zZW1hcGhvcmVGb3JT
dXNwZW5kUmVzdW1lOwotICAgIG1jb250ZXh0X3QgbV9zdXNwZW5kZWRNYWNoaW5lQ29udGV4dDsK
KyAgICBQbGF0Zm9ybVJlZ2lzdGVycyBtX3BsYXRmb3JtUmVnaXN0ZXJzOwogICAgIHVuc2lnbmVk
IG1fc3VzcGVuZENvdW50IHsgMCB9OwogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc3VzcGVuZGVk
IHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
UHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4
IDEzNzg0M2NlMzQwMjAxYmZiODVmNzA4NjM1NzVjZWRlMGE3NjkwMTkuLmI4NWYzOWMzM2FlNzcw
YzY5MzllZDI0YjM5Njc5ODU5M2I1M2Q2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAKQEAgLTk0LDYgKzk0LDMwIEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IFNpZ1Ro
cmVhZFN1c3BlbmRSZXN1bWUgPSBTSUdVU1IxOwogc3RhdGljIHN0ZDo6YXRvbWljPFRocmVhZCo+
IHRhcmdldFRocmVhZCB7IG51bGxwdHIgfTsKIHN0YXRpYyBTdGF0aWNXb3JkTG9jayBnbG9iYWxT
dXNwZW5kTG9jazsKIAorI2lmIENPTVBJTEVSKEdDQykgJiYgQVNTRVJUX0RJU0FCTEVECisjcHJh
Z21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdyZXR1cm4tbG9jYWwtYWRkciIKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpICYmIEFTU0VSVF9E
SVNBQkxFRAorCitzdGF0aWMgVU5VU0VEX0ZVTkNUSU9OIE5FVkVSX0lOTElORSB2b2lkKiBnZXRB
cHByb3hpbWF0ZVN0YWNrUG9pbnRlcigpCit7CisgICAgdm9sYXRpbGUgdm9pZCogc3RhY2tMb2Nh
dGlvbiA9IG51bGxwdHI7CisgICAgcmV0dXJuICZzdGFja0xvY2F0aW9uOworfQorCisjaWYgQ09N
UElMRVIoR0NDKSAmJiBBU1NFUlRfRElTQUJMRUQKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9w
CisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKSAmJiBBU1NFUlRfRElTQUJMRUQKKworc3RhdGljIFVO
VVNFRF9GVU5DVElPTiBib29sIGlzT25BbHRlcm5hdGl2ZVNpZ25hbFN0YWNrKCkKK3sKKyAgICBz
dGFja190IHN0YWNrIHsgfTsKKyAgICBpbnQgcmV0ID0gc2lnYWx0c3RhY2sobnVsbHB0ciwgJnN0
YWNrKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0KTsKKyAgICByZXR1cm4gc3RhY2suc3Nf
ZmxhZyA9PSBTQV9PTlNUQUNLOworfQorCisKIHZvaWQgVGhyZWFkOjpzaWduYWxIYW5kbGVyU3Vz
cGVuZFJlc3VtZShpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVjb250ZXh0KQogewogICAgIC8vIFRv
dWNoaW5nIHRocmVhZCBsb2NhbCBhdG9taWMgdHlwZXMgZnJvbSBzaWduYWwgaGFuZGxlcnMgaXMg
YWxsb3dlZC4KQEAgLTExMCwxMCArMTM0LDE2IEBAIHZvaWQgVGhyZWFkOjpzaWduYWxIYW5kbGVy
U3VzcGVuZFJlc3VtZShpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVjb250ZXh0KQogICAgIH0KIAog
ICAgIHVjb250ZXh0X3QqIHVzZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVj
b250ZXh0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFpc09uQWx0ZXJuYXRpdmVTaWduYWxT
dGFjaygpLCAiRG8gbm90IHN1cHBvcnQgYWx0ZXJuYXRpdmUgc2lnbmFsIHN0YWNrLiBDb25zaWRl
ciBkaXNhYmxpbmcgY29uY3VycmVudCBHQy4iKQorCisjaWYgSEFWRShNQUNISU5FX0NPTlRFWFQp
CiAjaWYgQ1BVKFBQQykKLSAgICB0aHJlYWQtPm1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQgPSAq
dXNlckNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3M7CisgICAgdGhyZWFkLT5tX3BsYXRmb3Jt
UmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyAqdXNlckNvbnRleHQtPnVjX21jb250ZXh0
LnVjX3JlZ3MgfTsKICNlbHNlCi0gICAgdGhyZWFkLT5tX3N1c3BlbmRlZE1hY2hpbmVDb250ZXh0
ID0gdXNlckNvbnRleHQtPnVjX21jb250ZXh0OworICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lz
dGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgdXNlckNvbnRleHQtPnVjX21jb250ZXh0IH07Cisj
ZW5kaWYKKyNlbHNlCisgICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1S
ZWdpc3RlcnMgeyBnZXRBcHByb3hpbWF0ZVN0YWNrUG9pbnRlcigpIH07CiAjZW5kaWYKIAogICAg
IC8vIEFsbG93IHN1c3BlbmQgY2FsbGVyIHRvIHNlZSB0aGF0IHRoaXMgdGhyZWFkIGlzIHN1c3Bl
bmRlZC4KQEAgLTM5NiwzNiArNDI2LDEwIEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgICAgICBDUkFTSCgpOwogICAgIH0KICAg
ICByZXR1cm4gdXNlckNvdW50ICogc2l6ZW9mKHVpbnRwdHJfdCk7Ci0jZWxpZiBIQVZFKE1BQ0hJ
TkVfQ09OVEVYVCkKLSAgICByZWdpc3RlcnMubWFjaGluZUNvbnRleHQgPSBtX3N1c3BlbmRlZE1h
Y2hpbmVDb250ZXh0OwotICAgIHJldHVybiBzaXplb2YoUGxhdGZvcm1SZWdpc3RlcnMpOwotI2Vs
aWYgT1MoT1BFTkJTRCkKLSAgICAvLyBodHRwOi8vbWFuLm9wZW5ic2Qub3JnL3B0aHJlYWRfc3Rh
Y2tzZWdfbnAuMwotICAgIHN0YWNrX3Qgc3M7Ci0gICAgaW50IHJjID0gcHRocmVhZF9zdGFja3Nl
Z19ucChtX2hhbmRsZSwgJnNzKTsKLSAgICByZWdpc3RlcnMuc3RhY2tQb2ludGVyID0gc3Muc3Nf
c3A7Ci0gICAgcmV0dXJuIDA7CiAjZWxzZQotICAgIHB0aHJlYWRfYXR0cl90IGF0dHJpYnV0ZTsK
LSAgICBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cmlidXRlKTsKLSNpZiBIQVZFKFBUSFJFQURfTlBf
SCkgfHwgT1MoTkVUQlNEKQotICAgIC8vIGUuZy4gb24gRnJlZUJTRCA1LjQsIG5ldW5kb3JmQGtk
ZS5vcmcKLSAgICBwdGhyZWFkX2F0dHJfZ2V0X25wKG1faGFuZGxlLCAmYXR0cmlidXRlKTsKLSNl
bHNlCi0gICAgLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbm9uLXBvcnRhYmxlOyBvdGhlciBQ
T1NJWCBzeXN0ZW1zIG1heSBoYXZlIGRpZmZlcmVudCBucCBhbHRlcm5hdGl2ZXMKLSAgICBwdGhy
ZWFkX2dldGF0dHJfbnAobV9oYW5kbGUsICZhdHRyaWJ1dGUpOwotI2VuZGlmCi0KLSAgICB2b2lk
KiBzdGFja0Jhc2UgPSAwOwotICAgIHNpemVfdCBzdGFja1NpemUgPSAwOwotICAgIGludCByYyA9
IHB0aHJlYWRfYXR0cl9nZXRzdGFjaygmYXR0cmlidXRlLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXpl
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJjLCAhcmMpOwotICAgIEFTU0VSVChzdGFja0Jhc2UpOwot
ICAgIHJlZ2lzdGVycy5zdGFja1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2tCYXNl
KSArIHN0YWNrU2l6ZTsKLQotICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyaWJ1dGUpOwot
Ci0gICAgcmV0dXJuIDA7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N1c3BlbmRDb3VudCwg
IldlIGNhbiBnZXQgcmVnaXN0ZXJzIG9ubHkgaWYgdGhlIHRocmVhZCBpcyBzdXNwZW5kZWQuIik7
CisgICAgcmVnaXN0ZXJzID0gbV9wbGF0Zm9ybVJlZ2lzdGVyczsKKyAgICByZXR1cm4gc2l6ZW9m
KFBsYXRmb3JtUmVnaXN0ZXJzKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307912</attachid>
            <date>2017-04-22 10:11:21 -0700</date>
            <delta_ts>2017-04-22 10:15:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171162-20170423021120.patch</filename>
            <type>text/plain</type>
            <size>5620</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU3YTMyYTFhM2EwMjZjOWZmZTA4Yjg0
ZjZhM2NkZmNmNmI5MTI5MjYuLjM3MzJhNDFiM2NiNDM4ZWNjMTI5ZDM0NTFkNzZiZmZjOTczZGQz
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTctMDQtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0pTQ10gR2V0IHN0YWNrIHBvaW50ZXIgd2l0
aG91dCBwdGhyZWFkIGF0dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIEhBVkUoTUFDSElORV9DT05URVhUKSBpcyBub3QgZW5hYmxlZCwgd2UgZ2V0
IHN0YWNrIGJhc2UgYW5kIGJvdW5kYXJ5IGJ5IHVzaW5nCisgICAgICAgIHB0aHJlYWRfYXR0ciBm
dW5jdGlvbnMuIEhvd2V2ZXIsIGl0IGlzIHdyb25nIHNpbmNlIHRoaXMgZnVuY3Rpb24gY2FuIGJl
IGNhbGxlZAorICAgICAgICBhZnRlciB0aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4gSW4gdGhhdCBj
YXNlLCB3ZSBzaG91bGQgbm90IGNhbGwgYW55IGZ1bmN0aW9ucworICAgICAgICB0aGF0IGlzIG5v
dCBhc3luYyBzaWduYWwgc2FmZS4gRm9yIGV4YW1wbGUsIHB0aHJlYWRfZ2V0YXR0cl9ucCBjYWxs
cyBtYWxsb2MuCisKKyAgICAgICAgSW5zdGVhZCB3ZSB1c2UgZ2V0QXBwcm94aW1hdGVTdGFja1Bv
aW50ZXIoKSwgd2hpY2ggcmV0dXJucyBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyLgorCisgICAg
ICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5j
cHA6CisgICAgICAgIChXVEY6OmdldEFwcHJveGltYXRlU3RhY2tQb2ludGVyKToKKyAgICAgICAg
KFdURjo6aXNPbkFsdGVybmF0aXZlU2lnbmFsU3RhY2spOgorICAgICAgICBXaGVuIGdhdGhlcmlu
ZyBjb25zZXJ2YXRpdmUgcm9vdHMsIHdlIHNob3VsZCBrZWVwIHN0YWNrIHBvaW50ZXIgcG9pbnRp
bmcgc3RhY2suCisgICAgICAgIEFuZCBpZiBjb25jdXJyZW50IEdDIGlzIGVuYWJsZWQsIHdlIGFs
d2F5cyBuZWVkIHRvIGtlZXAgdGhlIGFib3ZlIGludmFyaWFudC4KKyAgICAgICAgU28sIHdlIGRv
IG5vdCBzdXBwb3J0IGFsdGVybmF0aXZlIHNpZ25hbCBzdGFjay4KKworICAgICAgICAoV1RGOjpU
aHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjpnZXRSZWdpc3RlcnMpOgorCisyMDE3LTA0LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFJFR1JFU1NJT04ocjIxNTYzOCk6IFtMaW51eF0gU2V2
ZXJhbCB3b3JrZXIgdGVzdHMgYXJlIGNyYXNoaW5nIGluIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1
c3BlbmRSZXN1bWUgYWZ0ZXIgcjIxNTYzOAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTU5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggYzIwYTY1ZTIyYmZk
NTAzZDZiNTY1MTVkOTQ4NDY3MDY2NjI4MTE2Yi4uYzU5NDdlYmM3MDY0MWI3MGI4MWUyZDBhZTdh
MjI1MWFiZjIxYzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBU
aHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgbWFjaF9w
b3J0X3QgbV9wbGF0Zm9ybVRocmVhZDsKICNlbHNlCiAgICAgc2VtX3QgbV9zZW1hcGhvcmVGb3JT
dXNwZW5kUmVzdW1lOwotICAgIG1jb250ZXh0X3QgbV9zdXNwZW5kZWRNYWNoaW5lQ29udGV4dDsK
KyAgICBQbGF0Zm9ybVJlZ2lzdGVycyBtX3BsYXRmb3JtUmVnaXN0ZXJzOwogICAgIHVuc2lnbmVk
IG1fc3VzcGVuZENvdW50IHsgMCB9OwogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc3VzcGVuZGVk
IHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
UHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4
IDEzNzg0M2NlMzQwMjAxYmZiODVmNzA4NjM1NzVjZWRlMGE3NjkwMTkuLmU4Nzg4ZmFmZjY3MGJj
Zjg1OGNkZGM0ZjdhNDJkYWVlMzAwMmM1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAKQEAgLTk0LDYgKzk0LDI5IEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IFNpZ1Ro
cmVhZFN1c3BlbmRSZXN1bWUgPSBTSUdVU1IxOwogc3RhdGljIHN0ZDo6YXRvbWljPFRocmVhZCo+
IHRhcmdldFRocmVhZCB7IG51bGxwdHIgfTsKIHN0YXRpYyBTdGF0aWNXb3JkTG9jayBnbG9iYWxT
dXNwZW5kTG9jazsKIAorI2lmIENPTVBJTEVSKEdDQykgJiYgQVNTRVJUX0RJU0FCTEVECisjcHJh
Z21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdyZXR1cm4tbG9jYWwtYWRkciIKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpICYmIEFTU0VSVF9E
SVNBQkxFRAorCitzdGF0aWMgVU5VU0VEX0ZVTkNUSU9OIE5FVkVSX0lOTElORSB2b2lkKiBnZXRB
cHByb3hpbWF0ZVN0YWNrUG9pbnRlcigpCit7CisgICAgdm9sYXRpbGUgdm9pZCogc3RhY2tMb2Nh
dGlvbiA9IG51bGxwdHI7CisgICAgcmV0dXJuICZzdGFja0xvY2F0aW9uOworfQorCisjaWYgQ09N
UElMRVIoR0NDKSAmJiBBU1NFUlRfRElTQUJMRUQKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9w
CisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKSAmJiBBU1NFUlRfRElTQUJMRUQKKworc3RhdGljIFVO
VVNFRF9GVU5DVElPTiBib29sIGlzT25BbHRlcm5hdGl2ZVNpZ25hbFN0YWNrKCkKK3sKKyAgICBz
dGFja190IHN0YWNrIHsgfTsKKyAgICBpbnQgcmV0ID0gc2lnYWx0c3RhY2sobnVsbHB0ciwgJnN0
YWNrKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0KTsKKyAgICByZXR1cm4gc3RhY2suc3Nf
ZmxhZ3MgPT0gU1NfT05TVEFDSzsKK30KKwogdm9pZCBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNw
ZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiB7CiAgICAgLy8gVG91
Y2hpbmcgdGhyZWFkIGxvY2FsIGF0b21pYyB0eXBlcyBmcm9tIHNpZ25hbCBoYW5kbGVycyBpcyBh
bGxvd2VkLgpAQCAtMTEwLDEwICsxMzMsMTYgQEAgdm9pZCBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJT
dXNwZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiAgICAgfQogCiAg
ICAgdWNvbnRleHRfdCogdXNlckNvbnRleHQgPSBzdGF0aWNfY2FzdDx1Y29udGV4dF90Kj4odWNv
bnRleHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzT25BbHRlcm5hdGl2ZVNpZ25hbFN0
YWNrKCksICJEbyBub3Qgc3VwcG9ydCBhbHRlcm5hdGl2ZSBzaWduYWwgc3RhY2suIENvbnNpZGVy
IGRpc2FibGluZyBjb25jdXJyZW50IEdDLiIpOworCisjaWYgSEFWRShNQUNISU5FX0NPTlRFWFQp
CiAjaWYgQ1BVKFBQQykKLSAgICB0aHJlYWQtPm1fc3VzcGVuZGVkTWFjaGluZUNvbnRleHQgPSAq
dXNlckNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3M7CisgICAgdGhyZWFkLT5tX3BsYXRmb3Jt
UmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyAqdXNlckNvbnRleHQtPnVjX21jb250ZXh0
LnVjX3JlZ3MgfTsKICNlbHNlCi0gICAgdGhyZWFkLT5tX3N1c3BlbmRlZE1hY2hpbmVDb250ZXh0
ID0gdXNlckNvbnRleHQtPnVjX21jb250ZXh0OworICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lz
dGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgdXNlckNvbnRleHQtPnVjX21jb250ZXh0IH07Cisj
ZW5kaWYKKyNlbHNlCisgICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1S
ZWdpc3RlcnMgeyBnZXRBcHByb3hpbWF0ZVN0YWNrUG9pbnRlcigpIH07CiAjZW5kaWYKIAogICAg
IC8vIEFsbG93IHN1c3BlbmQgY2FsbGVyIHRvIHNlZSB0aGF0IHRoaXMgdGhyZWFkIGlzIHN1c3Bl
bmRlZC4KQEAgLTM5NiwzNiArNDI1LDEwIEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgICAgICBDUkFTSCgpOwogICAgIH0KICAg
ICByZXR1cm4gdXNlckNvdW50ICogc2l6ZW9mKHVpbnRwdHJfdCk7Ci0jZWxpZiBIQVZFKE1BQ0hJ
TkVfQ09OVEVYVCkKLSAgICByZWdpc3RlcnMubWFjaGluZUNvbnRleHQgPSBtX3N1c3BlbmRlZE1h
Y2hpbmVDb250ZXh0OwotICAgIHJldHVybiBzaXplb2YoUGxhdGZvcm1SZWdpc3RlcnMpOwotI2Vs
aWYgT1MoT1BFTkJTRCkKLSAgICAvLyBodHRwOi8vbWFuLm9wZW5ic2Qub3JnL3B0aHJlYWRfc3Rh
Y2tzZWdfbnAuMwotICAgIHN0YWNrX3Qgc3M7Ci0gICAgaW50IHJjID0gcHRocmVhZF9zdGFja3Nl
Z19ucChtX2hhbmRsZSwgJnNzKTsKLSAgICByZWdpc3RlcnMuc3RhY2tQb2ludGVyID0gc3Muc3Nf
c3A7Ci0gICAgcmV0dXJuIDA7CiAjZWxzZQotICAgIHB0aHJlYWRfYXR0cl90IGF0dHJpYnV0ZTsK
LSAgICBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cmlidXRlKTsKLSNpZiBIQVZFKFBUSFJFQURfTlBf
SCkgfHwgT1MoTkVUQlNEKQotICAgIC8vIGUuZy4gb24gRnJlZUJTRCA1LjQsIG5ldW5kb3JmQGtk
ZS5vcmcKLSAgICBwdGhyZWFkX2F0dHJfZ2V0X25wKG1faGFuZGxlLCAmYXR0cmlidXRlKTsKLSNl
bHNlCi0gICAgLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbm9uLXBvcnRhYmxlOyBvdGhlciBQ
T1NJWCBzeXN0ZW1zIG1heSBoYXZlIGRpZmZlcmVudCBucCBhbHRlcm5hdGl2ZXMKLSAgICBwdGhy
ZWFkX2dldGF0dHJfbnAobV9oYW5kbGUsICZhdHRyaWJ1dGUpOwotI2VuZGlmCi0KLSAgICB2b2lk
KiBzdGFja0Jhc2UgPSAwOwotICAgIHNpemVfdCBzdGFja1NpemUgPSAwOwotICAgIGludCByYyA9
IHB0aHJlYWRfYXR0cl9nZXRzdGFjaygmYXR0cmlidXRlLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXpl
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJjLCAhcmMpOwotICAgIEFTU0VSVChzdGFja0Jhc2UpOwot
ICAgIHJlZ2lzdGVycy5zdGFja1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2tCYXNl
KSArIHN0YWNrU2l6ZTsKLQotICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyaWJ1dGUpOwot
Ci0gICAgcmV0dXJuIDA7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N1c3BlbmRDb3VudCwg
IldlIGNhbiBnZXQgcmVnaXN0ZXJzIG9ubHkgaWYgdGhlIHRocmVhZCBpcyBzdXNwZW5kZWQuIik7
CisgICAgcmVnaXN0ZXJzID0gbV9wbGF0Zm9ybVJlZ2lzdGVyczsKKyAgICByZXR1cm4gc2l6ZW9m
KFBsYXRmb3JtUmVnaXN0ZXJzKTsKICNlbmRpZgogfQogCg==
</data>
<flag name="review"
          id="329116"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>