<?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>183053</bug_id>
          
          <creation_ts>2018-02-22 12:20:37 -0800</creation_ts>
          <short_desc>MessagePort is not always destroyed in the right thread</short_desc>
          <delta_ts>2018-02-26 10:01:18 -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>Service Workers</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1401503</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-22 12:20:37 -0800</bug_when>
    <thetext>Ran into the following crash when running WPT service worker tests:
ASSERTION FAILED: (is&lt;Document&gt;(*this) &amp;&amp; isMainThread()) || (is&lt;WorkerGlobalScope&gt;(*this) &amp;&amp; downcast&lt;WorkerGlobalScope&gt;(*this).thread().thread() == &amp;Thread::current())
./dom/ScriptExecutionContext.cpp(174) : void WebCore::ScriptExecutionContext::destroyedMessagePort(WebCore::MessagePort &amp;)
1   0x395bf54ad WTFCrash
2   0x3870f9304 WebCore::ScriptExecutionContext::destroyedMessagePort(WebCore::MessagePort&amp;)
3   0x3870770ad WebCore::MessagePort::~MessagePort()
4   0x387077145 WebCore::MessagePort::~MessagePort()
5   0x387077189 WebCore::MessagePort::~MessagePort()
6   0x3870769f2 WebCore::MessagePort::deref() const
7   0x380a0dd6e void WTF::derefIfNotNull&lt;WebCore::MessagePort&gt;(WebCore::MessagePort*)
8   0x380a0dd39 WTF::RefPtr&lt;WebCore::MessagePort, WTF::DumbPtrTraits&lt;WebCore::MessagePort&gt; &gt;::~RefPtr()
9   0x380a06395 WTF::RefPtr&lt;WebCore::MessagePort, WTF::DumbPtrTraits&lt;WebCore::MessagePort&gt; &gt;::~RefPtr()
10  0x380a05d3f WebKit::WebMessagePortChannelProvider::checkProcessLocalPortForActivity(WebCore::MessagePortIdentifier const&amp;, unsigned long long)
11  0x380c9cea9 WebKit::WebProcess::checkProcessLocalPortForActivity(WebCore::MessagePortIdentifier const&amp;, unsigned long long)
12  0x380cf6890 void IPC::callMemberFunctionImpl&lt;WebKit::WebProcess, void (WebKit::WebProcess::*)(WebCore::MessagePortIdentifier const&amp;, unsigned long long), std::__1::tuple&lt;WebCore::MessagePortIdentifier, unsigned long long&gt;, 0ul, 1ul&gt;(WebKit::WebProcess*, void (WebKit::WebProcess::*)(WebCore::MessagePortIdentifier const&amp;, unsigned long long), std::__1::tuple&lt;WebCore::MessagePortIdentifier, unsigned long long&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;)
13  0x380cf65b0 void IPC::callMemberFunction&lt;WebKit::WebProcess, void (WebKit::WebProcess::*)(WebCore::MessagePortIdentifier const&amp;, unsigned long long), std::__1::tuple&lt;WebCore::MessagePortIdentifier, unsigned long long&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(std::__1::tuple&lt;WebCore::MessagePortIdentifier, unsigned long long&gt;&amp;&amp;, WebKit::WebProcess*, void (WebKit::WebProcess::*)(WebCore::MessagePortIdentifier const&amp;, unsigned long long))
14  0x380ceb9b5 void IPC::handleMessage&lt;Messages::WebProcess::CheckProcessLocalPortForActivity, WebKit::WebProcess, void (WebKit::WebProcess::*)(WebCore::MessagePortIdentifier const&amp;, unsigned long long)&gt;(IPC::Decoder&amp;, WebKit::WebProcess*, void (WebKit::WebProcess::*)(WebCore::MessagePortIdentifier const&amp;, unsigned long long))
15  0x380ce6c36 WebKit::WebProcess::didReceiveWebProcessMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
16  0x380c9757b WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
17  0x3801468b3 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
18  0x38013be98 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
19  0x380146eba IPC::Connection::dispatchOneMessage()
20  0x38015f37d IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
21  0x38015f2d9 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14&gt;::call()
22  0x395c115cb WTF::Function&lt;void ()&gt;::operator()() const
23  0x395c56473 WTF::RunLoop::performWork()
24  0x395c56d14 WTF::RunLoop::performWork(void*)
25  0x7fff36d102d1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
26  0x7fff36dc9c9c __CFRunLoopDoSource0
27  0x7fff36cf2e60 __CFRunLoopDoSources0
28  0x7fff36cf22dd __CFRunLoopRun
29  0x7fff36cf1b43 CFRunLoopRunSpecific
30  0x7fff35fe2f16 RunCurrentEventLoopInMode
31  0x7fff35fe2c86 ReceiveNextEventCommon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401507</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-22 12:22:23 -0800</bug_when>
    <thetext>Looking at MessagePort::existingMessagePortForIdentifier implementation, it returns a RefPtr&lt;MessagePort&gt;.
Since it can be called from any thread, we could for instance retain the lock until the MessagePort is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401509</commentid>
    <comment_count>2</comment_count>
      <attachid>334467</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-22 12:27:58 -0800</bug_when>
    <thetext>Created attachment 334467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401510</commentid>
    <comment_count>3</comment_count>
      <attachid>334467</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-02-22 12:34:03 -0800</bug_when>
    <thetext>Comment on attachment 334467
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        MessagePort is not always destroyed in the right thread

Shouldn&apos;t we fix this? The patch does not seem address this particular issue.

It seems bad that a MessagePort would be used on one thread but could be destroyed on another thread while being used. Brady is more familiar with this code however.

&gt; Source/WebCore/dom/MessagePort.cpp:80
&gt; +    callback(allMessagePorts().get(identifier));

This could in theory cause deadlocks if the callback calls existingMessagePortForIdentifier().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401515</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-22 12:45:11 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 334467 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334467&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        MessagePort is not always destroyed in the right thread
&gt; 
&gt; Shouldn&apos;t we fix this? The patch does not seem address this particular issue.

As I read the code, as long as we hold the lock, no MessagePort can be destroyed.
Since existingMessagePortForIdentifier() is not refing anymore a MessagePort, it cannot cause it to be destroyed in the wrong thread.

&gt; It seems bad that a MessagePort would be used on one thread but could be
&gt; destroyed on another thread while being used. Brady is more familiar with
&gt; this code however.

A MessagePort has no thread-safe members.
But we would be touching ScriptExecutionContext message port hashset from various threads which probably has implications.

&gt; &gt; Source/WebCore/dom/MessagePort.cpp:80
&gt; &gt; +    callback(allMessagePorts().get(identifier));
&gt; 
&gt; This could in theory cause deadlocks if the callback calls
&gt; existingMessagePortForIdentifier().

Yes, the other approach would be to somehow take the lock from the caller site.
Not a problem right now but might be in the future.
Maybe there is a better way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401582</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-22 15:48:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/37805437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401719</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-23 07:22:13 -0800</bug_when>
    <thetext>I will update the patch to add the various getters/setter methods with a lock and remove the need for the existingXX method.
Will do that tonight</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401949</commentid>
    <comment_count>7</comment_count>
      <attachid>334586</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-25 16:08:47 -0800</bug_when>
    <thetext>Created attachment 334586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401950</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-25 16:18:28 -0800</bug_when>
    <thetext>I added two methods isExistingMessagePortLocallyReachable and notifyMessageAvailable.
I wonder whether we could simplify the MessagePort model a bit.

Maybe something like having a MainThread map that allows getting from a message port identifier the context identifier and whether it is locally reachable.
That may allow removing the need of the lock and making MessagePort a regular RefCounted object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402071</commentid>
    <comment_count>9</comment_count>
      <attachid>334586</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-02-26 09:22:01 -0800</bug_when>
    <thetext>Comment on attachment 334586
Patch

r=me, nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402085</commentid>
    <comment_count>10</comment_count>
      <attachid>334586</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-26 10:01:16 -0800</bug_when>
    <thetext>Comment on attachment 334586
Patch

Clearing flags on attachment: 334586

Committed r229028: &lt;https://trac.webkit.org/changeset/229028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402086</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-26 10:01:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334467</attachid>
            <date>2018-02-22 12:27:58 -0800</date>
            <delta_ts>2018-02-25 16:08:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183053-20180222122757.patch</filename>
            <type>text/plain</type>
            <size>8085</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY5YTE3YzBjOWJlM2Fh
NzM0MjY1NTZiMTcwNGIzZDcxNzBiMjExNy4uMGFkY2ZhYThlOTk3M2U0YjczZmUyMWI3ZDkyYjQ3
MjhhNzg4Nzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTAyLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZXNzYWdlUG9ydCBpcyBu
b3QgYWx3YXlzIGRlc3Ryb3llZCBpbiB0aGUgcmlnaHQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMwNTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGV4aXN0aW5nTWVzc2FnZVBvcnRG
b3JJZGVudGlmaWVyIHRha2UgYSBsYW1iZGEgc28gdGhhdCB3ZSBob2xkIHRoZSBsb2NrIHVudGls
IHRoZXJlCisgICAgICAgIGlzIG5vIGxvbmdlciBhIG5lZWQgdG8ga2VlcCB0aGUgTWVzc2FnZVBv
cnQgYXJvdW5kLgorICAgICAgICBUaGlzIGlzIHZlcnkgdGltZSBzZW5zaXRpdmUgYW5kIGRvZXMg
bm90IGhhcHBlbiBhIGxvdCB3aGVuIHJ1bm5pbmcgV1BUIHRlc3RzLgorCisgICAgICAgIFVwZGF0
ZSBleGlzdGluZyBjYWxsIHNpdGVzIHRvIHBhc3MgYSBsYW1iZGEuCisKKyAgICAgICAgKiBkb20v
TWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmV4aXN0aW5n
TWVzc2FnZVBvcnRGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoK
KyAgICAgICAgKiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6
OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXJJbXBsOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSk6CisKIDIw
MTgtMDItMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlIGNhbiBhc3NlcnQgaW4gY2FzZSB0
d28gZnJhbWVzIHRyeSB0byBkZWxldGUgdGhlIHNhbWUgY2FjaGUgYXQgdGhlIHNhbWUgdGltZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1ZWUxMWMyNmYwODg5ZDdkNTNkMmUzMTFjOWQ0YThiOGYzODQ2YTIxLi5mNWUx
YjRlMTgwNzgwMmIxOTA1NTA2OThmNGJkY2M3YzJiZTMxY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE4LTAyLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNZXNzYWdlUG9ydCBpcyBub3QgYWx3YXlzIGRlc3Ryb3llZCBpbiB0aGUgcmlnaHQg
dGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODMwNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29kZSB0byBwYXNzIGEgbGFtYmRhIHRvIE1lc3NhZ2VQb3J0OjpleGlzdGluZ01lc3Nh
Z2VQb3J0Rm9ySWRlbnRpZmllci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0
aXZpdHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydCk6CisKIDIwMTgtMDIt
MjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZldGNoIGV2
ZW50IHJlbGVhc2UgYXNzZXJ0IHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGUgZmV0Y2ggbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggMzI1NjlhYmFhN2EyNGFlMWVkYTYx
OTNlOWFmYzQ5MzcxZWY3MGRhOS4uYzAyZGZhMmQxOTJmOGM4YzFhYTcyNWVkMGExZTZjM2Q5Yzc3
MjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC03NCwxMSArNzQsMTAgQEAg
dm9pZCBNZXNzYWdlUG9ydDo6ZGVyZWYoKSBjb25zdAogICAgIH0KIH0KIAotUmVmUHRyPE1lc3Nh
Z2VQb3J0PiBNZXNzYWdlUG9ydDo6ZXhpc3RpbmdNZXNzYWdlUG9ydEZvcklkZW50aWZpZXIoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVudGlmaWVyKQordm9pZCBNZXNzYWdlUG9ydDo6
ZXhpc3RpbmdNZXNzYWdlUG9ydEZvcklkZW50aWZpZXIoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0Kik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxNZXNzYWdlUG9ydHNMb2Nr
KCkpOwotCi0gICAgcmV0dXJuIGFsbE1lc3NhZ2VQb3J0cygpLmdldChpZGVudGlmaWVyKTsKKyAg
ICBjYWxsYmFjayhhbGxNZXNzYWdlUG9ydHMoKS5nZXQoaWRlbnRpZmllcikpOwogfQogCiBSZWY8
TWVzc2FnZVBvcnQ+IE1lc3NhZ2VQb3J0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2Nh
bCwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5oCmluZGV4IGQ4MzU4MTY0OWRlZTc5ZWMzNzI4ODYyMzk1YWMyN2Y0MjhkNjVkNGIuLmMz
ZjExOTE0YmY4YWYzZTU2OWRlODdhZDQ5OWQ0NTE1NzBkODgxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVs
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC01Nyw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgdGhlIHBhc3NlZC1pbiB2ZWN0b3IgaXMg
ZW1wdHkuCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFRyYW5zZmVycmVkTWVzc2FnZVBvcnRBcnJh
eT4gZGlzZW50YW5nbGVQb3J0cyhWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CiAgICAg
c3RhdGljIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBlbnRhbmdsZVBvcnRzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0QXJyYXkmJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxNZXNzYWdlUG9ydD4gZXhpc3RpbmdNZXNzYWdlUG9y
dEZvcklkZW50aWZpZXIoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZXhpc3RpbmdNZXNzYWdlUG9ydEZvcklkZW50aWZpZXIoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdl
UG9ydCopPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWVzc2FnZUF2YWlsYWJsZSgp
OwogICAgIGJvb2wgc3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRlZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlckltcGwuY3BwCmluZGV4IGVmYjgzZmQwZGE5NDE3NGQwNDY0ZTZl
ZTc1NmZlMmI3ODgxMWNkMjMuLjg3NDMxNjhlYTYzNGMyMWRkMTBjZmY0ZDVjYzQwNzBhM2ViMjcy
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2Fn
ZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHAKQEAgLTg0LDggKzg0LDEw
IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjpwb3N0TWVzc2FnZVRvUmVt
b3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzCiAgICAgcGVyZm9ybUFjdGlvbk9uTWFpblRocmVh
ZChbcmVnaXN0cnkgPSAmbV9yZWdpc3RyeSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHJl
bW90ZVRhcmdldF0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCB3YXNGaXJzdE1lc3NhZ2VJblF1
ZXVlID0gcmVnaXN0cnktPmRpZFBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdlKSwg
cmVtb3RlVGFyZ2V0KTsKICAgICAgICAgaWYgKHdhc0ZpcnN0TWVzc2FnZUluUXVldWUpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHJlbW90ZVBvcnQgPSBNZXNzYWdlUG9ydDo6ZXhpc3RpbmdNZXNz
YWdlUG9ydEZvcklkZW50aWZpZXIocmVtb3RlVGFyZ2V0KSkKLSAgICAgICAgICAgICAgICByZW1v
dGVQb3J0LT5tZXNzYWdlQXZhaWxhYmxlKCk7CisgICAgICAgICAgICBNZXNzYWdlUG9ydDo6ZXhp
c3RpbmdNZXNzYWdlUG9ydEZvcklkZW50aWZpZXIocmVtb3RlVGFyZ2V0LCBbXSAoYXV0byogcmVt
b3RlUG9ydCkgeworICAgICAgICAgICAgICAgIGlmIChyZW1vdGVQb3J0KQorICAgICAgICAgICAg
ICAgICAgICByZW1vdGVQb3J0LT5tZXNzYWdlQXZhaWxhYmxlKCk7CisgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQogICAgIH0pOwogfQpAQCAtMTE5LDEzICsxMjEsOSBAQCB2b2lkIE1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHko
Y29uc3QgTWVzcwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIHBv
cnQgPSBNZXNzYWdlUG9ydDo6ZXhpc3RpbmdNZXNzYWdlUG9ydEZvcklkZW50aWZpZXIoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFwb3J0KSB7Ci0gICAgICAgIGNhbGxiYWNrKE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6Tm8pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY2FsbGJhY2socG9ydC0+aXNMb2NhbGx5UmVhY2hhYmxlKCkgPyBIYXNBY3Rpdml0eTo6
WWVzIDogSGFzQWN0aXZpdHk6Ok5vKTsKKyAgICBNZXNzYWdlUG9ydDo6ZXhpc3RpbmdNZXNzYWdl
UG9ydEZvcklkZW50aWZpZXIoaWRlbnRpZmllciwgWyZjYWxsYmFja10gKGF1dG8qIHBvcnQpIHsK
KyAgICAgICAgY2FsbGJhY2socG9ydCAmJiBwb3J0LT5pc0xvY2FsbHlSZWFjaGFibGUoKSA/IEhh
c0FjdGl2aXR5OjpZZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOworICAgIH0pOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmluZGV4IGZjYTE4OGEx
NmJiNGM2M2JmOTZjOWQ1MDg2OWVjNzdiY2ZiZDE0N2UuLjY5ZTFjZmIyNmM0MDk4YTg4YzdhZTUz
MmQ2NGE0ZDA1YWM2MzBmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcApAQCAtMTIwLDggKzEyMCw5IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
CiAKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xvY2Fs
UG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllciwg
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKQogewotICAgIGF1dG8gcG9ydCA9IE1lc3NhZ2VQ
b3J0OjpleGlzdGluZ01lc3NhZ2VQb3J0Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2
aXR5KGNhbGxiYWNrSWRlbnRpZmllciwgcG9ydCAmJiBwb3J0LT5pc0xvY2FsbHlSZWFjaGFibGUo
KSksIDApOworICAgIE1lc3NhZ2VQb3J0OjpleGlzdGluZ01lc3NhZ2VQb3J0Rm9ySWRlbnRpZmll
cihpZGVudGlmaWVyLCBbY2FsbGJhY2tJZGVudGlmaWVyXSAoYXV0byogcG9ydCkgeworICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KGNhbGxiYWNrSWRlbnRpZmllciwgcG9ydCAmJiBwb3J0LT5pc0xvY2FsbHlSZWFjaGFi
bGUoKSksIDApOworICAgIH0pOwogfQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNB
Y3Rpdml0eSk+JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
MWMxZWQxY2Q3OTVlZTBhOTk0ZjljMWQ5ZjA1NjdiY2ExMTBhNGVmZi4uZDk1OWE1MWZlNmEwNTFj
ZTBiODk1ZjlmMWU5YTk4NmQ0Yjg3ODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMTA2Miw5ICsxMDYyLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkQ2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBib29s
CiAKIHZvaWQgV2ViUHJvY2Vzczo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHBvcnQgPSBNZXNzYWdl
UG9ydDo6ZXhpc3RpbmdNZXNzYWdlUG9ydEZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7Ci0gICAg
aWYgKHBvcnQpCi0gICAgICAgIHBvcnQtPm1lc3NhZ2VBdmFpbGFibGUoKTsKKyAgICBNZXNzYWdl
UG9ydDo6ZXhpc3RpbmdNZXNzYWdlUG9ydEZvcklkZW50aWZpZXIoaWRlbnRpZmllciwgW10gKGF1
dG8qIHBvcnQpIHsKKyAgICAgICAgaWYgKHBvcnQpCisgICAgICAgICAgICBwb3J0LT5tZXNzYWdl
QXZhaWxhYmxlKCk7CisgICAgfSk7CiB9CiAKICNpZiBFTkFCTEUoR0FNRVBBRCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334586</attachid>
            <date>2018-02-25 16:08:47 -0800</date>
            <delta_ts>2018-02-26 10:01:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183053-20180225160846.patch</filename>
            <type>text/plain</type>
            <size>8995</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY5YTE3YzBjOWJlM2Fh
NzM0MjY1NTZiMTcwNGIzZDcxNzBiMjExNy4uMGFkY2ZhYThlOTk3M2U0YjczZmUyMWI3ZDkyYjQ3
MjhhNzg4Nzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTAyLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZXNzYWdlUG9ydCBpcyBu
b3QgYWx3YXlzIGRlc3Ryb3llZCBpbiB0aGUgcmlnaHQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMwNTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGV4aXN0aW5nTWVzc2FnZVBvcnRG
b3JJZGVudGlmaWVyIHRha2UgYSBsYW1iZGEgc28gdGhhdCB3ZSBob2xkIHRoZSBsb2NrIHVudGls
IHRoZXJlCisgICAgICAgIGlzIG5vIGxvbmdlciBhIG5lZWQgdG8ga2VlcCB0aGUgTWVzc2FnZVBv
cnQgYXJvdW5kLgorICAgICAgICBUaGlzIGlzIHZlcnkgdGltZSBzZW5zaXRpdmUgYW5kIGRvZXMg
bm90IGhhcHBlbiBhIGxvdCB3aGVuIHJ1bm5pbmcgV1BUIHRlc3RzLgorCisgICAgICAgIFVwZGF0
ZSBleGlzdGluZyBjYWxsIHNpdGVzIHRvIHBhc3MgYSBsYW1iZGEuCisKKyAgICAgICAgKiBkb20v
TWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmV4aXN0aW5n
TWVzc2FnZVBvcnRGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoK
KyAgICAgICAgKiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6
OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXJJbXBsOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSk6CisKIDIw
MTgtMDItMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlIGNhbiBhc3NlcnQgaW4gY2FzZSB0
d28gZnJhbWVzIHRyeSB0byBkZWxldGUgdGhlIHNhbWUgY2FjaGUgYXQgdGhlIHNhbWUgdGltZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1ZWUxMWMyNmYwODg5ZDdkNTNkMmUzMTFjOWQ0YThiOGYzODQ2YTIxLi5mNWUx
YjRlMTgwNzgwMmIxOTA1NTA2OThmNGJkY2M3YzJiZTMxY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE4LTAyLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNZXNzYWdlUG9ydCBpcyBub3QgYWx3YXlzIGRlc3Ryb3llZCBpbiB0aGUgcmlnaHQg
dGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODMwNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29kZSB0byBwYXNzIGEgbGFtYmRhIHRvIE1lc3NhZ2VQb3J0OjpleGlzdGluZ01lc3Nh
Z2VQb3J0Rm9ySWRlbnRpZmllci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0
aXZpdHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydCk6CisKIDIwMTgtMDIt
MjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZldGNoIGV2
ZW50IHJlbGVhc2UgYXNzZXJ0IHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGUgZmV0Y2ggbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggMzI1NjlhYmFhN2EyNGFlMWVkYTYx
OTNlOWFmYzQ5MzcxZWY3MGRhOS4uNDJmNDJhMjZhOWI0OTQ5OGVjYmZkODZlNGI0YTA5ZDVhODM0
NWU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC01NiwxMiArNTYsOCBAQCB2
b2lkIE1lc3NhZ2VQb3J0OjpyZWYoKSBjb25zdAogCiB2b2lkIE1lc3NhZ2VQb3J0OjpkZXJlZigp
IGNvbnN0CiB7Ci0gICAgLy8gTWVzc2FnZVBvcnQ6OmV4aXN0aW5nTWVzc2FnZVBvcnRGb3JJZGVu
dGlmaWVyKCkgaXMgdW5pcXVlIGluIHRoYXQgaXQgaG9sZHMgYSByYXcgcG9pbnRlciB0byBhIE1l
c3NhZ2VQb3J0Ci0gICAgLy8gYnV0IG1pZ2h0IGNyZWF0ZSBhIFJlZlB0ciBmcm9tIGl0LgotICAg
IC8vIElmIHRoYXQgaGFwcGVucyBvbiBvbmUgdGhyZWFkIGF0IHRoZSBzYW1lIHRpbWUgdGhhdCBh
IE1lc3NhZ2VQb3J0IGlzIGJlaW5nIGRlcmVmJ2VkIGFuZCBkZXN0cm95ZWQgb24gYQotICAgIC8v
IGRpZmZlcmVudCB0aHJlYWQgdGhlbiBCYWQgVGhpbmdzIGNvdWxkIGhhcHBlbi4KLSAgICAvLyBU
aGlzIGN1c3RvbSBkZXJlZigpIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSB0aGF0IGNv
bnRlbnRpb24gYnkgZ3VhcmFudGVlaW5nIHRoYXQgbm9ib2R5IGNhbiBiZQotICAgIC8vIGNyZWF0
aW5nIGEgUmVmUHRyIGluc2lkZSBleGlzdGluZ01lc3NhZ2VQb3J0Rm9ySWRlbnRpZmllciB3aGls
ZSB0aGUgb2JqZWN0IGlzIG1pZC1kZWxldGlvbi4KKyAgICAvLyBUaGlzIGN1c3RvbSBkZXJlZigp
IGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBhcyBsb25nIGFzIHRoZSBsb2NrIHRvIGFsbE1lc3NhZ2VQ
b3J0c0xvY2sgaXMgdGFrZW4sIG5vIE1lc3NhZ2VQb3J0IHdpbGwgYmUgZGVzdHJveWVkLgorICAg
IC8vIFRoaXMgYWxsb3dzIGlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUgYW5k
IG5vdGlmeU1lc3NhZ2VBdmFpbGFibGUgdG8gZWFzaWx5IHF1ZXJ5IHRoZSBtYXAgYW5kIG1hbmlw
dWxhdGUgTWVzc2FnZVBvcnQgaW5zdGFuY2VzLgogCiAgICAgaWYgKCEtLW1fcmVmQ291bnQpIHsK
ICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxNZXNzYWdlUG9ydHNMb2NrKCkpOwpAQCAt
NzQsMTEgKzcwLDE5IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRlcmVmKCkgY29uc3QKICAgICB9CiB9
CiAKLVJlZlB0cjxNZXNzYWdlUG9ydD4gTWVzc2FnZVBvcnQ6OmV4aXN0aW5nTWVzc2FnZVBvcnRG
b3JJZGVudGlmaWVyKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllcikKK2Jv
b2wgTWVzc2FnZVBvcnQ6OmlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIoYWxsTWVzc2FnZVBvcnRzTG9jaygpKTsKKyAgICBhdXRvKiBwb3J0ID0gYWxsTWVz
c2FnZVBvcnRzKCkuZ2V0KGlkZW50aWZpZXIpOworICAgIHJldHVybiBwb3J0ICYmIHBvcnQtPmlz
TG9jYWxseVJlYWNoYWJsZSgpOworfQorCit2b2lkIE1lc3NhZ2VQb3J0Ojpub3RpZnlNZXNzYWdl
QXZhaWxhYmxlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2soKSk7CisgICAgaWYgKGF1
dG8qIHBvcnQgPSBhbGxNZXNzYWdlUG9ydHMoKS5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHBv
cnQtPm1lc3NhZ2VBdmFpbGFibGUoKTsKIAotICAgIHJldHVybiBhbGxNZXNzYWdlUG9ydHMoKS5n
ZXQoaWRlbnRpZmllcik7CiB9CiAKIFJlZjxNZXNzYWdlUG9ydD4gTWVzc2FnZVBvcnQ6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHJlbW90ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggZDgzNTgxNjQ5ZGVlNzllYzM3
Mjg4NjIzOTVhYzI3ZjQyOGQ2NWQ0Yi4uMzU4OGY5NDlkOGI5ZjM3N2E0MWQ2NjIwOTZlZTQwMTQx
YWU2MmQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTU3LDcgKzU3LDkgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB0aGUgcGFzc2VkLWluIHZlY3RvciBpcyBl
bXB0eS4KICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5
PiBkaXNlbnRhbmdsZVBvcnRzKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKICAgICBz
dGF0aWMgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGVudGFuZ2xlUG9ydHMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnRBcnJheSYmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPE1lc3NhZ2VQb3J0PiBleGlzdGluZ01lc3NhZ2VQb3J0
Rm9ySWRlbnRpZmllcihjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFi
bGUoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgbm90aWZ5TWVzc2FnZUF2YWlsYWJsZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWVzc2FnZUF2YWlsYWJsZSgpOwogICAg
IGJvb2wgc3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRlZDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlckltcGwuY3BwCmluZGV4IGVmYjgzZmQwZGE5NDE3NGQwNDY0ZTZlZTc1NmZl
MmI3ODgxMWNkMjMuLjQ3Mjk2ZWYxNTkxNzM0OGZhYTc1ODIyM2E4NGVjMmFmMDE4ZTg4M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHAKQEAgLTgyLDExICs4Miw4IEBAIHZv
aWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjptZXNzYWdlUG9ydENsb3NlZChjb25z
dCBNZXNzYWdlUG9ydElkZW50aWZpCiB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1w
bDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2Us
IGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KQogewogICAgIHBlcmZv
cm1BY3Rpb25Pbk1haW5UaHJlYWQoW3JlZ2lzdHJ5ID0gJm1fcmVnaXN0cnksIG1lc3NhZ2UgPSBX
VEZNb3ZlKG1lc3NhZ2UpLCByZW1vdGVUYXJnZXRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGJvb2wg
d2FzRmlyc3RNZXNzYWdlSW5RdWV1ZSA9IHJlZ2lzdHJ5LT5kaWRQb3N0TWVzc2FnZVRvUmVtb3Rl
KFdURk1vdmUobWVzc2FnZSksIHJlbW90ZVRhcmdldCk7Ci0gICAgICAgIGlmICh3YXNGaXJzdE1l
c3NhZ2VJblF1ZXVlKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byByZW1vdGVQb3J0ID0gTWVzc2Fn
ZVBvcnQ6OmV4aXN0aW5nTWVzc2FnZVBvcnRGb3JJZGVudGlmaWVyKHJlbW90ZVRhcmdldCkpCi0g
ICAgICAgICAgICAgICAgcmVtb3RlUG9ydC0+bWVzc2FnZUF2YWlsYWJsZSgpOwotICAgICAgICB9
CisgICAgICAgIGlmIChyZWdpc3RyeS0+ZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1l
c3NhZ2UpLCByZW1vdGVUYXJnZXQpKQorICAgICAgICAgICAgTWVzc2FnZVBvcnQ6Om5vdGlmeU1l
c3NhZ2VBdmFpbGFibGUocmVtb3RlVGFyZ2V0KTsKICAgICB9KTsKIH0KIApAQCAtMTE5LDEzICsx
MTYsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6Y2hlY2tQcm9jZXNz
TG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzcwogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKLSAgICBhdXRvIHBvcnQgPSBNZXNzYWdlUG9ydDo6ZXhpc3RpbmdNZXNzYWdlUG9y
dEZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFwb3J0KSB7Ci0gICAgICAgIGNh
bGxiYWNrKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6Tm8pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsbGJhY2socG9ydC0+aXNMb2NhbGx5UmVhY2hh
YmxlKCkgPyBIYXNBY3Rpdml0eTo6WWVzIDogSGFzQWN0aXZpdHk6Ok5vKTsKKyAgICBjYWxsYmFj
ayhNZXNzYWdlUG9ydDo6aXNFeGlzdGluZ01lc3NhZ2VQb3J0TG9jYWxseVJlYWNoYWJsZShpZGVu
dGlmaWVyKSA/IEhhc0FjdGl2aXR5OjpZZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmluZGV4IGZjYTE4
OGExNmJiNGM2M2JmOTZjOWQ1MDg2OWVjNzdiY2ZiZDE0N2UuLjJiYmJhOTNjODg2MDM0NWM3Njk5
ZDgyOTZmNzkwMDE0ZTc0ZjVkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmCiAKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmll
ciwgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKQogewotICAgIGF1dG8gcG9ydCA9IE1lc3Nh
Z2VQb3J0OjpleGlzdGluZ01lc3NhZ2VQb3J0Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KGNhbGxiYWNrSWRlbnRpZmllciwgcG9ydCAmJiBwb3J0LT5pc0xvY2FsbHlSZWFjaGFi
bGUoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkQ2hlY2tQcm9jZXNz
TG9jYWxQb3J0Rm9yQWN0aXZpdHkgeyBjYWxsYmFja0lkZW50aWZpZXIsIE1lc3NhZ2VQb3J0Ojpp
c0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlKGlkZW50aWZpZXIpIH0sIDApOwog
fQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMWMxZWQxY2Q3OTVlZTBhOTk0Zjlj
MWQ5ZjA1NjdiY2ExMTBhNGVmZi4uMjE2ZjNlMDRhYTBhYjZjYTk2OTMzZTA0YTZlNTkxMzQ2Nzg0
ZmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTA2Miw5
ICsxMDYyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0
eSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wKIAogdm9pZCBXZWJQcm9jZXNzOjpt
ZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogewotICAgIGF1dG8gcG9ydCA9IE1lc3NhZ2VQb3J0OjpleGlzdGluZ01lc3NhZ2VQ
b3J0Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKLSAgICBpZiAocG9ydCkKLSAgICAgICAgcG9y
dC0+bWVzc2FnZUF2YWlsYWJsZSgpOworICAgIE1lc3NhZ2VQb3J0Ojpub3RpZnlNZXNzYWdlQXZh
aWxhYmxlKGlkZW50aWZpZXIpOwogfQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>