<?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>200628</bug_id>
          
          <creation_ts>2019-08-12 08:30:57 -0700</creation_ts>
          <short_desc>Crash under NetworkResourceLoader::start()</short_desc>
          <delta_ts>2019-08-12 12:23:17 -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>WebKit2</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1560398</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-12 08:30:57 -0700</bug_when>
    <thetext>We see the following flaky crash on the bots:

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x00000001d319fb58
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [67946]
 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit              	0x00000001069ea7ad WebKit::NetworkResourceLoader::isAlwaysOnLoggingAllowed() const + 9
1   com.apple.WebKit              	0x0000000106a09885 void WTF::__visitor_table&lt;WTF::Visitor&lt;auto WebKit::NetworkResourceLoader::start()::$_71::operator()&lt;WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; &gt;(WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;&amp;&amp;) const::&apos;lambda&apos;(WebCore::ResourceError&amp;), WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; WebKit::NetworkResourceLoader::start()::$_71::operator()&lt;WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; &gt;(WebCore::ResourceError&amp;) const::&apos;lambda&apos;(WebKit::NetworkLoadChecker::RedirectionTriplet&amp;), WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; WebKit::NetworkResourceLoader::start()::$_71::operator()&lt;WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; &gt;(WebCore::ResourceError&amp;) const::&apos;lambda&apos;(WebCore::ResourceRequest&amp;)&gt;, WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;::__trampoline_func&lt;WebCore::ResourceError&gt;(WTF::__visitor_table&lt;WTF::Visitor&lt;auto WebKit::NetworkResourceLoader::start()::$_71::operator()&lt;WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; &gt;(WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;&amp;&amp;) const::&apos;lambda&apos;(WebCore::ResourceError&amp;), WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; WebKit::NetworkResourceLoader::start()::$_71::operator()&lt;WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; &gt;(WebCore::ResourceError&amp;) const::&apos;lambda&apos;(WebKit::NetworkLoadChecker::RedirectionTriplet&amp;), WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; WebKit::NetworkResourceLoader::start()::$_71::operator()&lt;WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt; &gt;(WebCore::ResourceError&amp;) const::&apos;lambda&apos;(WebCore::ResourceRequest&amp;)&gt;, WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;&amp;, WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;&amp;) + 61
2   com.apple.WebKit              	0x0000000106a095a4 WTF::Detail::CallableWrapper&lt;WebKit::NetworkResourceLoader::start()::$_71, void, WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;&amp;&amp;&gt;::call(WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;&amp;&amp;) + 52
3   com.apple.WebKit              	0x00000001069f8000 WTF::Detail::CallableWrapper&lt;WebKit::NetworkLoadChecker::checkRequest(WebCore::ResourceRequest&amp;&amp;, WebCore::ContentSecurityPolicyClient*, WTF::CompletionHandler&lt;void (WTF::Variant&lt;WebCore::ResourceRequest, WebKit::NetworkLoadChecker::RedirectionTriplet, WebCore::ResourceError&gt;&amp;&amp;)&gt;&amp;&amp;)::$_2, void, WebCore::ResourceRequest&amp;&amp;&gt;::call(WebCore::ResourceRequest&amp;&amp;) + 770
4   com.apple.WebKit              	0x00000001069f7ba7 WTF::Detail::CallableWrapper&lt;WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded(WebCore::ResourceRequest&amp;&amp;, WTF::CompletionHandler&lt;void (WebCore::ResourceRequest&amp;&amp;)&gt;&amp;&amp;) const::$_1, void, bool&gt;::call(bool) + 223
5   com.apple.WebKit              	0x00000001069c9bdf WTF::Detail::CallableWrapper&lt;WebKit::NetworkHTTPSUpgradeChecker::query(WTF::String&amp;&amp;, PAL::SessionID, WTF::CompletionHandler&lt;void (bool)&gt;&amp;&amp;)::$_22::operator()()::&apos;lambda0&apos;(), void&gt;::call() + 29
6   com.apple.JavaScriptCore      	0x0000000108ee78fd WTF::RunLoop::performWork() + 237
7   com.apple.JavaScriptCore      	0x0000000108ee7bda WTF::RunLoop::performWork(void*) + 26
8   com.apple.CoreFoundation      	0x00007fff453143bb __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
9   com.apple.CoreFoundation      	0x00007fff45314361 __CFRunLoopDoSource0 + 108
10  com.apple.CoreFoundation      	0x00007fff452f826b __CFRunLoopDoSources0 + 195
11  com.apple.CoreFoundation      	0x00007fff452f7833 __CFRunLoopRun + 1196
12  com.apple.CoreFoundation      	0x00007fff452f7135 CFRunLoopRunSpecific + 459
13  com.apple.Foundation          	0x00007fff475797df -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 280
14  com.apple.Foundation          	0x00007fff475796b4 -[NSRunLoop(NSRunLoop) run] + 76
15  libxpc.dylib                  	0x00007fff7159d077 _xpc_objc_main + 552
16  libxpc.dylib                  	0x00007fff7159cb79 xpc_main + 433
17  com.apple.WebKit              	0x0000000106a8d423 WebKit::XPCServiceMain(int, char const**) + 547
18  libdyld.dylib                 	0x00007fff713643d5 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560401</commentid>
    <comment_count>1</comment_count>
      <attachid>376064</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-12 08:32:16 -0700</bug_when>
    <thetext>Created attachment 376064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560411</commentid>
    <comment_count>2</comment_count>
      <attachid>376064</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 09:02:38 -0700</bug_when>
    <thetext>Comment on attachment 376064
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:177
&gt; +        m_networkLoadChecker-&gt;check(ResourceRequest { originalRequest() }, this, [this, weakThis = makeWeakPtr(*this)] (auto&amp;&amp; result) {

How is it possible that &apos;this&apos; is not valid here, given that NetworkLoadChecker is owned by NetworkResourceLoader.
If NetworkResourceLoader gets destroyed, NetworkLoadChecker as well and the callback should be executed with a cancellation error which should be properly handled.
If that is not the case, the fix should probably be at NetworkLoadChecker level.
Or is it the error logging in the lambda that triggers the crash?

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:240
&gt; +    m_cache-&gt;retrieve(request, { m_parameters.webPageID, m_parameters.webFrameID }, [this, weakThis = makeWeakPtr(*this), request = ResourceRequest { request }](auto entry, auto info) mutable {

I am not clear why this will fix a crash here given we go from refing to use a weakThis.
Other places of the code do makeRef(*this) (like one m_cache-&gt;store call or a checkRedirection call).
Should we try to be consistent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560414</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-12 09:11:46 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #2)
&gt; Comment on attachment 376064 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376064&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:177
&gt; &gt; +        m_networkLoadChecker-&gt;check(ResourceRequest { originalRequest() }, this, [this, weakThis = makeWeakPtr(*this)] (auto&amp;&amp; result) {
&gt; 
&gt; How is it possible that &apos;this&apos; is not valid here, given that
&gt; NetworkLoadChecker is owned by NetworkResourceLoader.
&gt; If NetworkResourceLoader gets destroyed, NetworkLoadChecker as well and the
&gt; callback should be executed with a cancellation error which should be
&gt; properly handled.
&gt; If that is not the case, the fix should probably be at NetworkLoadChecker
&gt; level.
&gt; Or is it the error logging in the lambda that triggers the crash?

It is the error logging in the lambda that triggers the crash. Also note that you are capturing |this| in that lambda, which may be a stale pointer upon returning.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:240
&gt; &gt; +    m_cache-&gt;retrieve(request, { m_parameters.webPageID, m_parameters.webFrameID }, [this, weakThis = makeWeakPtr(*this), request = ResourceRequest { request }](auto entry, auto info) mutable {
&gt; 
&gt; I am not clear why this will fix a crash here given we go from refing to use
&gt; a weakThis.
&gt; Other places of the code do makeRef(*this) (like one m_cache-&gt;store call or
&gt; a checkRedirection call).
&gt; Should we try to be consistent?

This part of the change does not fix a crash. I think that capturing a RefPtr and returning early if hasOneRef() is much uglier than capturing a WeakPtr and returning early if !weakThis.
I think the !weakThis pattern is much more common than hasOneRef(). Because I started subclassing CanMakeWeakPtr in this patch, we can now use WeakPtr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560415</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-12 09:12:24 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; (In reply to youenn fablet from comment #2)
&gt; &gt; Comment on attachment 376064 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=376064&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:177
&gt; &gt; &gt; +        m_networkLoadChecker-&gt;check(ResourceRequest { originalRequest() }, this, [this, weakThis = makeWeakPtr(*this)] (auto&amp;&amp; result) {
&gt; &gt; 
&gt; &gt; How is it possible that &apos;this&apos; is not valid here, given that
&gt; &gt; NetworkLoadChecker is owned by NetworkResourceLoader.
&gt; &gt; If NetworkResourceLoader gets destroyed, NetworkLoadChecker as well and the
&gt; &gt; callback should be executed with a cancellation error which should be
&gt; &gt; properly handled.
&gt; &gt; If that is not the case, the fix should probably be at NetworkLoadChecker
&gt; &gt; level.
&gt; &gt; Or is it the error logging in the lambda that triggers the crash?
&gt; 
&gt; It is the error logging in the lambda that triggers the crash. Also note
&gt; that you are capturing |this| in that lambda, which may be a stale pointer
&gt; upon returning.

You can tell it is the logging because we crash here:
WebKit::NetworkResourceLoader::isAlwaysOnLoggingAllowed() const + 9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560419</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 09:21:24 -0700</bug_when>
    <thetext>&gt; This part of the change does not fix a crash. I think that capturing a
&gt; RefPtr and returning early if hasOneRef() is much uglier than capturing a
&gt; WeakPtr and returning early if !weakThis.
&gt; I think the !weakThis pattern is much more common than hasOneRef(). Because
&gt; I started subclassing CanMakeWeakPtr in this patch, we can now use WeakPtr
&gt; here.

So the plan is to try moving away from makeRef and use makeWeakPtr instead, and hopefully move from RefCounted to unique_ptr.
If so, that seems good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560420</commentid>
    <comment_count>6</comment_count>
      <attachid>376064</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 09:24:35 -0700</bug_when>
    <thetext>Comment on attachment 376064
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:219
&gt; +    auto protectedThis = makeRef(*this);

We might not need that ref here anymore.
The code below is new and handles prefetch, I doubt it can trigger a loader cancellation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560422</commentid>
    <comment_count>7</comment_count>
      <attachid>376068</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-12 09:28:48 -0700</bug_when>
    <thetext>Created attachment 376068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560510</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-12 12:19:23 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; Comment on attachment 376064 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376064&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:219
&gt; &gt; +    auto protectedThis = makeRef(*this);
&gt; 
&gt; We might not need that ref here anymore.
&gt; The code below is new and handles prefetch, I doubt it can trigger a loader
&gt; cancellation.

I think we should keep this around for now to reduce the risk, and isolate code changes. We can get rid of it later in a separate patch as a cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560511</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-12 12:22:33 -0700</bug_when>
    <thetext>Committed r248540: &lt;https://trac.webkit.org/changeset/248540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560513</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-12 12:23:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/54220519&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376064</attachid>
            <date>2019-08-12 08:32:16 -0700</date>
            <delta_ts>2019-08-12 09:28:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200628-20190812083216.patch</filename>
            <type>text/plain</type>
            <size>6432</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1NGM5MTA3NzUxY2U0NjIy
NGQ2ODQyYmExMzM4YmMwMGYxNjM0NDUuLjdhYjZlMmIwNTlhZjkxN2M0Yzk3M2VkYzBiOTFhODEy
NmNiZWQxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDgtMTIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDcmFzaCB1bmRlciBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyIGlzIHN0aWxs
IGFsaXZlIHdoZW4gdGhlIGxhbWJkYSBwYXNzZWQgdG8gTmV0d29ya0xvYWRDaGVja2VyOjpjaGVj
aygpCisgICAgICAgIGdldHMgZXhlY3V0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpyZXRyaWV2ZUNhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorCiAyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggM2RiZjQ3YWIyNGYxZmQ3ZGRlNDU4YWYwNzllMDBlOGE1OWUwOTUwMC4uY2UwNmUzNjEz
YWMyMGVmOGIzMzE0YzdlYjI2ZTJjNGFiYWZiNGU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTc0LDcg
KzE3NCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIG1fd2Fz
U3RhcnRlZCA9IHRydWU7CiAKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKLSAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFs
UmVxdWVzdCgpIH0sIHRoaXMsIFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgeworICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0
KCkgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byYm
IHJlc3VsdCkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgICAgIFdURjo6c3dpdGNoT24ocmVzdWx0LAogICAgICAgICAgICAg
ICAgIFt0aGlzXSAoUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5j
aHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51dGY4KCku
ZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CkBAIC0yMTMsNyArMjE2LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGNhblVzZUNhY2hlKHJlcXVlc3QpKTsKIAotICAg
IFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGxvYWRlcih0aGlzKTsKKyAgICBhdXRvIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKICAgICBpZiAoaXNNYWluRnJhbWVMb2FkKCkp
IHsKICAgICAgICAgQVNTRVJUKG1fcGFyYW1ldGVycy5vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRp
b25zOjpNb2RlOjpOYXZpZ2F0ZSk7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewpA
QCAtMjIxLDMzICsyMjQsMzEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZl
Q2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IERlYWwgd2l0aCBjcmVkZW50aWFscyAoaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDAwMCkKICAgICAgICAgICAgICAgICBpZiAoIWVudHJ5LT5y
ZWRpcmVjdFJlcXVlc3QuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNo
ZUVudHJ5ID0gbV9jYWNoZS0+bWFrZVJlZGlyZWN0RW50cnkocmVxdWVzdCwgZW50cnktPnJlc3Bv
bnNlLCBlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVy
LT5yZXRyaWV2ZUNhY2hlRW50cnlJbnRlcm5hbChXVEZNb3ZlKGNhY2hlRW50cnkpLCBSZXNvdXJj
ZVJlcXVlc3QgeyByZXF1ZXN0IH0pOworICAgICAgICAgICAgICAgICAgICByZXRyaWV2ZUNhY2hl
RW50cnlJbnRlcm5hbChXVEZNb3ZlKGNhY2hlRW50cnkpLCBSZXNvdXJjZVJlcXVlc3QgeyByZXF1
ZXN0IH0pOwogICAgICAgICAgICAgICAgICAgICBhdXRvIG1heEFnZUNhcCA9IHZhbGlkYXRlQ2Fj
aGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24ocmVxdWVzdCwgZW50cnktPnJlZGlyZWN0UmVx
dWVzdCwgZW50cnktPnJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgbV9jYWNoZS0+c3Rv
cmVSZWRpcmVjdChyZXF1ZXN0LCBlbnRyeS0+cmVzcG9uc2UsIGVudHJ5LT5yZWRpcmVjdFJlcXVl
c3QsIG1heEFnZUNhcCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBlbnRyeS0+cmVsZWFzZUJ1ZmZl
cigpOwogICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRy
eShyZXF1ZXN0LCBlbnRyeS0+cmVzcG9uc2UsIGJ1ZmZlci5jb3B5UmVmKCkpOwotICAgICAgICAg
ICAgICAgIGxvYWRlci0+cmV0cmlldmVDYWNoZUVudHJ5SW50ZXJuYWwoV1RGTW92ZShjYWNoZUVu
dHJ5KSwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9KTsKKyAgICAgICAgICAgICAgICByZXRy
aWV2ZUNhY2hlRW50cnlJbnRlcm5hbChXVEZNb3ZlKGNhY2hlRW50cnkpLCBSZXNvdXJjZVJlcXVl
c3QgeyByZXF1ZXN0IH0pOwogICAgICAgICAgICAgICAgIG1fY2FjaGUtPnN0b3JlKHJlcXVlc3Qs
IGVudHJ5LT5yZXNwb25zZSwgV1RGTW92ZShidWZmZXIpLCBudWxscHRyKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9jYWNo
ZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11
dGFibGUgewotICAgICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewotICAgICAgICAgICAg
Ly8gVGhlIGxvYWRlciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkg
dGhpcyBsYW1iZGEuCisgICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0
IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICBsb2FkZXItPmxv
Z1Nsb3dDYWNoZVJldHJpZXZlSWZOZWVkZWQoaW5mbyk7CisgICAgICAgIGxvZ1Nsb3dDYWNoZVJl
dHJpZXZlSWZOZWVkZWQoaW5mbyk7CiAKICAgICAgICAgaWYgKCFlbnRyeSkgewogICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBu
b3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOwotICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2Fk
KFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKKyAgICAgICAgICAgIHN0YXJ0TmV0
d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGxvYWRlci0+cmV0cmlldmVDYWNoZUVudHJ5SW50
ZXJuYWwoV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICByZXRyaWV2
ZUNhY2hlRW50cnlJbnRlcm5hbChXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXF1ZXN0KSk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDE1MTRlMzk2ODQzZjVlZDgwYjkwNDdkMzZmNTlhZjIx
NzdiNWQ4YWIuLjYyYzY1Y2RkZmY3Y2EwYjIwYTFjMTkwOTliOWY3MTVmYWU0NTRhOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CkBAIC01OCw3
ICs1OSw4IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPgogICAgICwgcHVibGljIE5ldHdvcmtM
b2FkQ2xpZW50CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwdWJsaWMg
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50IHsKKyAgICAsIHB1YmxpYyBXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5l
dHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgcmVwbHkgPSBudWxscHRyKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376068</attachid>
            <date>2019-08-12 09:28:48 -0700</date>
            <delta_ts>2019-08-12 12:22:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200628-20190812092848.patch</filename>
            <type>text/plain</type>
            <size>6389</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1NGM5MTA3NzUxY2U0NjIy
NGQ2ODQyYmExMzM4YmMwMGYxNjM0NDUuLmU2MjQ2M2MyODlhODhhYjdhOGViZGZhNDU3ODg3ZjA4
OTY4ZjE4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDgtMTIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDcmFzaCB1bmRlciBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyOAorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgTWFrZSBzdXJlIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgaXMgc3RpbGwg
YWxpdmUgd2hlbiB0aGUgbGFtYmRhIHBhc3NlZCB0byBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
KCkKKyAgICAgICAgZ2V0cyBleGVjdXRlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmg6CisKIDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCAzZGJmNDdhYjI0ZjFmZDdkZGU0NThhZjA3OWUwMGU4YTU5ZTA5NTAwLi4wYzM0OWE3OTgz
OWM4ZjhiODkwZmY0Y2VlODM1ZmRjN2YzYThjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsNyAr
MTc0LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgbV93YXNT
dGFydGVkID0gdHJ1ZTsKIAogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewotICAgICAg
ICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxS
ZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgIG1fbmV0
d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3Qo
KSB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvJiYg
cmVzdWx0KSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsCiAgICAgICAgICAgICAg
ICAgW3RoaXNdIChSZXNvdXJjZUVycm9yJiBlcnJvcikgewogICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hlY2tpbmcgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAl
ZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29kZSA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNo
cm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKQEAgLTIxMyw3ICsyMTYsNiBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVxdWVzdCkpOwogCi0gICAg
UmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMpOwogICAgIGlmIChpc01h
aW5GcmFtZUxvYWQoKSkgewogICAgICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLm9wdGlvbnMubW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKTsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKCkpKSB7CkBAIC0yMjEsMzMgKzIyMywzMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGNyZWRlbnRpYWxzIChodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMDAwKQogICAgICAgICAgICAgICAg
IGlmICghZW50cnktPnJlZGlyZWN0UmVxdWVzdC5pc051bGwoKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGNhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlUmVkaXJlY3RFbnRyeShyZXF1ZXN0
LCBlbnRyeS0+cmVzcG9uc2UsIGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QpOwotICAgICAgICAgICAg
ICAgICAgICBsb2FkZXItPnJldHJpZXZlQ2FjaGVFbnRyeUludGVybmFsKFdURk1vdmUoY2FjaGVF
bnRyeSksIFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHJpZXZlQ2FjaGVFbnRyeUludGVybmFsKFdURk1vdmUoY2FjaGVFbnRyeSksIFJlc291cmNl
UmVxdWVzdCB7IHJlcXVlc3QgfSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF4QWdlQ2Fw
ID0gdmFsaWRhdGVDYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbihyZXF1ZXN0LCBlbnRy
eS0+cmVkaXJlY3RSZXF1ZXN0LCBlbnRyeS0+cmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAg
ICBtX2NhY2hlLT5zdG9yZVJlZGlyZWN0KHJlcXVlc3QsIGVudHJ5LT5yZXNwb25zZSwgZW50cnkt
PnJlZGlyZWN0UmVxdWVzdCwgbWF4QWdlQ2FwKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGVudHJ5
LT5yZWxlYXNlQnVmZmVyKCk7CiAgICAgICAgICAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbV9j
YWNoZS0+bWFrZUVudHJ5KHJlcXVlc3QsIGVudHJ5LT5yZXNwb25zZSwgYnVmZmVyLmNvcHlSZWYo
KSk7Ci0gICAgICAgICAgICAgICAgbG9hZGVyLT5yZXRyaWV2ZUNhY2hlRW50cnlJbnRlcm5hbChX
VEZNb3ZlKGNhY2hlRW50cnkpLCBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0pOworICAgICAg
ICAgICAgICAgIHJldHJpZXZlQ2FjaGVFbnRyeUludGVybmFsKFdURk1vdmUoY2FjaGVFbnRyeSks
IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSk7CiAgICAgICAgICAgICAgICAgbV9jYWNoZS0+
c3RvcmUocmVxdWVzdCwgZW50cnktPnJlc3BvbnNlLCBXVEZNb3ZlKGJ1ZmZlciksIG51bGxwdHIp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KLSAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0sIFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxv
YWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnks
IGF1dG8gaW5mbykgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7
Ci0gICAgICAgICAgICAvLyBUaGUgbG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkg
aGVsZCBhbGl2ZSBieSB0aGlzIGxhbWJkYS4KKyAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0
LCB7IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0sIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9IFJlc291cmNlUmVx
dWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCi0gICAg
ICAgIGxvYWRlci0+bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKKyAgICAgICAg
bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50
cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlz
TWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7Ci0gICAgICAgICAgICBsb2FkZXItPnN0
YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOworICAgICAg
ICAgICAgc3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbG9hZGVyLT5yZXRyaWV2
ZUNhY2hlRW50cnlJbnRlcm5hbChXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXF1ZXN0KSk7Cisg
ICAgICAgIHJldHJpZXZlQ2FjaGVFbnRyeUludGVybmFsKFdURk1vdmUoZW50cnkpLCBXVEZNb3Zl
KHJlcXVlc3QpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMTUxNGUzOTY4NDNmNWVkODBi
OTA0N2QzNmY1OWFmMjE3N2I1ZDhhYi4uNjJjNjVjZGRmZjdjYTBiMjBhMWMxOTA5OWI5ZjcxNWZh
ZTQ1NGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTsKQEAgLTU4LDcgKzU5LDggQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFs
CiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+CiAgICAgLCBw
dWJsaWMgTmV0d29ya0xvYWRDbGllbnQKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIK
LSAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQgeworICAg
ICwgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAorICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBjcmVhdGUoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQ
ZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSA9IG51bGxwdHIpCiAg
ICAgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>