<?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>231167</bug_id>
          
          <creation_ts>2021-10-04 05:16:21 -0700</creation_ts>
          <short_desc>MessagePort messages sent in iframe unload event not received</short_desc>
          <delta_ts>2021-10-13 10:20:30 -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>Frames</component>
          <version>Safari 15</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="Robert Knight">robertknight</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800030</commentid>
    <comment_count>0</comment_count>
      <attachid>440054</attachid>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2021-10-04 05:16:21 -0700</bug_when>
    <thetext>Created attachment 440054
iframe unload notification test case

In the attached test case an iframe sends a notification to its parent frame via a) a MessagePort and b) `window.parent.postMessage` when it is unloaded. In Firefox and Chrome the messages sent via both methods are received in the parent frame. In Safari only the `window.parent.postMessage` events are received. The message sent via the MessagePort is not.

Steps to reproduce:

1. Load attached test case and click &quot;Remove iframe&quot; button

Console output in Chrome:

```
iframe received &quot;pagehide&quot; event
iframe received &quot;visibilitychange&quot; event
iframe received &quot;unload&quot; event
MessagePort in parent frame received message {trigger: &apos;pagehide&apos;}
Parent frame received &quot;message&quot; event {trigger: &apos;pagehide&apos;}
Parent frame received &quot;message&quot; event {trigger: &apos;visibilitychange&apos;}
Parent frame received &quot;message&quot; event {trigger: &apos;unload&apos;}
MessagePort in parent frame received message {trigger: &apos;visibilitychange&apos;}
MessagePort in parent frame received message {trigger: &apos;unload&apos;}
```

Firefox has the same output but with a slightly different order.

Console output in Safari 15:

```
iframe received &quot;pagehide&quot; event
iframe received &quot;visibilitychange&quot; event
iframe received &quot;unload&quot; event
Parent frame received &quot;message&quot; event – {trigger: &quot;pagehide&quot;}
Parent frame received &quot;message&quot; event – {trigger: &quot;visibilitychange&quot;}
Parent frame received &quot;message&quot; event – {trigger: &quot;unload&quot;}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800044</commentid>
    <comment_count>1</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2021-10-04 07:27:31 -0700</bug_when>
    <thetext>In case it is relevant, the results seem to be the same when the parent and child frames are cross-origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802581</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-11 05:17:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84095357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803246</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-12 11:17:23 -0700</bug_when>
    <thetext>MessagePort::close() gets called *before* the calls to MessagePort::postMessage(), likely as a result of MessagePort::stop() since MessagePort is an ActiveDOMObject. As a result, the calls to postMessage() are ignored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803251</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-12 11:20:01 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; MessagePort::close() gets called *before* the calls to
&gt; MessagePort::postMessage(), likely as a result of MessagePort::stop() since
&gt; MessagePort is an ActiveDOMObject. As a result, the calls to postMessage()
&gt; are ignored.

1   0x62998b0c4 WebCore::MessagePort::close()
2   0x629990165 WebCore::MessagePort::stop()
3   0x629a3a13a auto WebCore::ScriptExecutionContext::stopActiveDOMObjects()::$_4::operator()&lt;WebCore::ActiveDOMObject&gt;(WebCore::ActiveDOMObject&amp;) const
4   0x629a3a0d1 WTF::Detail::CallableWrapper&lt;WebCore::ScriptExecutionContext::stopActiveDOMObjects()::$_4, WebCore::ScriptExecutionContext::ShouldContinue, WebCore::ActiveDOMObject&amp;&gt;::call(WebCore::ActiveDOMObject&amp;)
5   0x629a23c37 WTF::Function&lt;WebCore::ScriptExecutionContext::ShouldContinue (WebCore::ActiveDOMObject&amp;)&gt;::operator()(WebCore::ActiveDOMObject&amp;) const
6   0x629a23aaa WebCore::ScriptExecutionContext::forEachActiveDOMObject(WTF::Function&lt;WebCore::ScriptExecutionContext::ShouldContinue (WebCore::ActiveDOMObject&amp;)&gt; const&amp;) const
7   0x629a23fa4 WebCore::ScriptExecutionContext::stopActiveDOMObjects()
8   0x629833765 WebCore::Document::stopActiveDOMObjects()
9   0x62a3f64a0 WebCore::FrameLoader::frameDetached()
10  0x629d1d337 WebCore::HTMLFrameOwnerElement::disconnectContentFrame()
11  0x6297ebce8 WebCore::disconnectSubframes(WebCore::ContainerNode&amp;, WebCore::SubframeDisconnectPolicy)
12  0x6297e7112 WebCore::disconnectSubframesIfNeeded(WebCore::ContainerNode&amp;, WebCore::SubframeDisconnectPolicy)
13  0x6297e72a5 WebCore::ContainerNode::removeNodeWithScriptAssertion(WebCore::Node&amp;, WebCore::ContainerNode::ChildChange::Source)
14  0x6297e3862 WebCore::ContainerNode::removeChild(WebCore::Node&amp;)
15  0x6299bf8b6 WebCore::Node::remove()
16  0x62734baf6 WebCore::jsElementPrototypeFunction_removeBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSElement*)::&apos;lambda&apos;()::operator()() const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803256</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-12 11:23:36 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; MessagePort::close() gets called *before* the calls to
&gt; &gt; MessagePort::postMessage(), likely as a result of MessagePort::stop() since
&gt; &gt; MessagePort is an ActiveDOMObject. As a result, the calls to postMessage()
&gt; &gt; are ignored.
&gt; 
&gt; 1   0x62998b0c4 WebCore::MessagePort::close()
&gt; 2   0x629990165 WebCore::MessagePort::stop()
&gt; 3   0x629a3a13a auto
&gt; WebCore::ScriptExecutionContext::stopActiveDOMObjects()::$_4::
&gt; operator()&lt;WebCore::ActiveDOMObject&gt;(WebCore::ActiveDOMObject&amp;) const
&gt; 4   0x629a3a0d1
&gt; WTF::Detail::CallableWrapper&lt;WebCore::ScriptExecutionContext::
&gt; stopActiveDOMObjects()::$_4,
&gt; WebCore::ScriptExecutionContext::ShouldContinue,
&gt; WebCore::ActiveDOMObject&amp;&gt;::call(WebCore::ActiveDOMObject&amp;)
&gt; 5   0x629a23c37
&gt; WTF::Function&lt;WebCore::ScriptExecutionContext::ShouldContinue
&gt; (WebCore::ActiveDOMObject&amp;)&gt;::operator()(WebCore::ActiveDOMObject&amp;) const
&gt; 6   0x629a23aaa
&gt; WebCore::ScriptExecutionContext::forEachActiveDOMObject(WTF::
&gt; Function&lt;WebCore::ScriptExecutionContext::ShouldContinue
&gt; (WebCore::ActiveDOMObject&amp;)&gt; const&amp;) const
&gt; 7   0x629a23fa4 WebCore::ScriptExecutionContext::stopActiveDOMObjects()
&gt; 8   0x629833765 WebCore::Document::stopActiveDOMObjects()
&gt; 9   0x62a3f64a0 WebCore::FrameLoader::frameDetached()
&gt; 10  0x629d1d337 WebCore::HTMLFrameOwnerElement::disconnectContentFrame()
&gt; 11  0x6297ebce8 WebCore::disconnectSubframes(WebCore::ContainerNode&amp;,
&gt; WebCore::SubframeDisconnectPolicy)
&gt; 12  0x6297e7112
&gt; WebCore::disconnectSubframesIfNeeded(WebCore::ContainerNode&amp;,
&gt; WebCore::SubframeDisconnectPolicy)
&gt; 13  0x6297e72a5
&gt; WebCore::ContainerNode::removeNodeWithScriptAssertion(WebCore::Node&amp;,
&gt; WebCore::ContainerNode::ChildChange::Source)
&gt; 14  0x6297e3862 WebCore::ContainerNode::removeChild(WebCore::Node&amp;)
&gt; 15  0x6299bf8b6 WebCore::Node::remove()
&gt; 16  0x62734baf6
&gt; WebCore::jsElementPrototypeFunction_removeBody(JSC::JSGlobalObject*,
&gt; JSC::CallFrame*, WebCore::JSElement*)::&apos;lambda&apos;()::operator()() const

And the call trace from postMessage() is:
1   0x58198b2d2 WebCore::MessagePort::postMessage(JSC::JSGlobalObject&amp;, JSC::JSValue, WebCore::StructuredSerializeOptions&amp;&amp;)
2   0x57f9264c9 WebCore::jsMessagePortPrototypeFunction_postMessage2Body(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSMessagePort*)::&apos;lambda&apos;()::operator()() const
3   0x57f9263c1 JSC::JSValue WebCore::toJS&lt;WebCore::IDLUndefined, WebCore::jsMessagePortPrototypeFunction_postMessage2Body(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSMessagePort*)::&apos;lambda&apos;()&gt;(JSC::JSGlobalObject&amp;, JSC::ThrowScope&amp;, WebCore::jsMessagePortPrototypeFunction_postMessage2Body(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSMessagePort*)::&apos;lambda&apos;()&amp;&amp;)
4   0x57f925efc WebCore::jsMessagePortPrototypeFunction_postMessage2Body(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSMessagePort*)
5   0x57f9257ab WebCore::jsMessagePortPrototypeFunction_postMessageOverloadDispatcher(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSMessagePort*)
6   0x57f92568d long long WebCore::IDLOperation&lt;WebCore::JSMessagePort&gt;::call&lt;&amp;(WebCore::jsMessagePortPrototypeFunction_postMessageOverloadDispatcher(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSMessagePort*)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*)
7   0x57f925374 WebCore::jsMessagePortPrototypeFunction_postMessage(JSC::JSGlobalObject*, JSC::CallFrame*)
8   0x3df9658011d8
9   0x56d11f990 llint_entry
10  0x56d0fbda0 vmEntryToJavaScript
11  0x56dfc81b5 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
12  0x56dfc8973 JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
13  0x56e38079a JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
14  0x56e38087d JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
15  0x56e380b3d JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
16  0x5811a464c WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
17  0x5811c3cb9 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;)
18  0x58194e2fe WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::RawPtrTraits&lt;WebCore::RegisteredEventListener&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;, WebCore::EventTarget::EventInvokePhase)
19  0x58194dd86 WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase)
20  0x58257d28f WebCore::DOMWindow::dispatchEvent(WebCore::Event&amp;, WebCore::EventTarget*)
21  0x5823e297b WebCore::FrameLoader::dispatchUnloadEvents(WebCore::UnloadEventPolicy)
22  0x5823e270a WebCore::FrameLoader::stopLoading(WebCore::UnloadEventPolicy)
23  0x5823e2f59 WebCore::FrameLoader::closeURL()
24  0x5823f5c79 WebCore::FrameLoader::detachFromParent()
25  0x5823f64a9 WebCore::FrameLoader::frameDetached()
26  0x581d1d337 WebCore::HTMLFrameOwnerElement::disconnectContentFrame()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803261</commentid>
    <comment_count>6</comment_count>
      <attachid>440964</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-12 11:28:42 -0700</bug_when>
    <thetext>Created attachment 440964
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803774</commentid>
    <comment_count>7</comment_count>
      <attachid>441083</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-13 08:35:00 -0700</bug_when>
    <thetext>Created attachment 441083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803833</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-13 10:20:28 -0700</bug_when>
    <thetext>Committed r284101 (242929@main): &lt;https://commits.webkit.org/242929@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441083.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>440054</attachid>
            <date>2021-10-04 05:16:21 -0700</date>
            <delta_ts>2021-10-04 05:16:21 -0700</delta_ts>
            <desc>iframe unload notification test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>1271</size>
            <attacher name="Robert Knight">robertknight</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxib2R5PgogICAgPGJ1dHRvbiBjbGFzcz0ianMtcmVt
b3ZlLWJ0biI+UmVtb3ZlIGlmcmFtZTwvYnV0dG9uPgoKICAgIDxpZnJhbWUgY2xhc3M9ImpzLWZy
YW1lIj48L2lmcmFtZT4KCiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSI+CiAgICAgIGNvbnN0IHJl
bW92ZUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5qcy1yZW1vdmUtYnRuIik7CiAgICAg
IGNvbnN0IGZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmpzLWZyYW1lIik7CgogICAg
ICByZW1vdmVCdG4ub25jbGljayA9ICgpID0+IGZyYW1lLnJlbW92ZSgpOwoKICAgICAgZnJhbWUu
Y29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGUpID0+IHsKICAgICAg
ICBjb25zdCBmcmFtZVBvcnQgPSBlLmRhdGEucG9ydDsKCiAgICAgICAgZm9yIChsZXQgZXZlbnQg
b2YgWyJ1bmxvYWQiLCAicGFnZWhpZGUiLCAidmlzaWJpbGl0eWNoYW5nZSJdKSB7CiAgICAgICAg
ICBmcmFtZS5jb250ZW50V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsICgpID0+IHsKICAg
ICAgICAgICAgY29uc29sZS5sb2coYGlmcmFtZSByZWNlaXZlZCAiJHtldmVudH0iIGV2ZW50YCk7
CiAgICAgICAgICAgIGZyYW1lUG9ydC5wb3N0TWVzc2FnZSh7IHRyaWdnZXI6IGV2ZW50IH0pOwog
ICAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgdHJpZ2dlcjogZXZlbnQgfSk7
CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0pOwoKICAgICAgY29uc3QgY2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwogICAgICBmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNz
YWdlKAogICAgICAgIHsKICAgICAgICAgIHBvcnQ6IGNoYW5uZWwucG9ydDEsCiAgICAgICAgfSwK
ICAgICAgICBmcmFtZS5jb250ZW50V2luZG93Lm9yaWdpbiwKICAgICAgICBbY2hhbm5lbC5wb3J0
MV0KICAgICAgKTsKICAgICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSAoZSkgPT4gewogICAg
ICAgIGNvbnNvbGUubG9nKCJNZXNzYWdlUG9ydCBpbiBwYXJlbnQgZnJhbWUgcmVjZWl2ZWQgbWVz
c2FnZSIsIGUuZGF0YSk7CiAgICAgIH07CgogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIChlKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ1BhcmVudCBmcmFtZSByZWNl
aXZlZCAibWVzc2FnZSIgZXZlbnQnLCBlLmRhdGEpOwogICAgICB9KTsKICAgIDwvc2NyaXB0Pgog
IDwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440964</attachid>
            <date>2021-10-12 11:28:42 -0700</date>
            <delta_ts>2021-10-13 08:34:54 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>231167_wip.patch</filename>
            <type>text/plain</type>
            <size>811</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZjYjIyMDJmODI4MS4uOTdk
MGE2NmU4ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI4MjUs
MTIgKzI4MjUsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZnJhbWVEZXRhY2hlZCgpCiAgICAgICAg
IGNoZWNrQ29tcGxldGVuZXNzTm93KCk7CiAgICAgfQogCi0gICAgaWYgKG1fZnJhbWUuZG9jdW1l
bnQoKS0+YmFja0ZvcndhcmRDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRD
YWNoZSkgeworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPmJhY2tGb3J3YXJkQ2FjaGVTdGF0
ZSgpICE9IERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpCiAgICAgICAgIHN0b3BBbGxMb2Fk
ZXJzQW5kQ2hlY2tDb21wbGV0ZW5lc3MoKTsKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5z
dG9wQWN0aXZlRE9NT2JqZWN0cygpOwotICAgIH0KIAogICAgIGRldGFjaEZyb21QYXJlbnQoKTsK
KworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpICE9
IERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpCisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQo
KS0+c3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNo
RnJvbVBhcmVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441083</attachid>
            <date>2021-10-13 08:35:00 -0700</date>
            <delta_ts>2021-10-13 10:20:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231167-20211013083459.patch</filename>
            <type>text/plain</type>
            <size>6450</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI2ODUzMzUzNTg2Zjhi
ZDQ0ODcyNDgyMzE1YjZlZWEyYjg3ZWNjYy4uODNmOTE2ZWI0NmYzNDI1N2U1YTAyYzY3OTVhNTQx
YTU5ZGY0MDZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWVzc2FnZVBvcnQgbWVzc2Fn
ZXMgc2VudCBpbiBpZnJhbWUgdW5sb2FkIGV2ZW50IG5vdCByZWNlaXZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTY3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDA5NTM1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIHJlbW92aW5nIGFuIGlmcmFtZSBmcm9tIHRoZSBkb2N1bWVudCwg
ZnJhbWVEZXRhY2hlZCgpIHdhcyBzdG9wcGluZyBhbGwgQWN0aXZlRE9NT2JqZWN0cworICAgICAg
ICBiZWZvcmUgZmlyaW5nIHRoZSAidW5sb2FkIiBldmVudCBpbnN0ZWFkIG9mIGFmdGVyLiBBcyBh
IHJlc3VsdCwgTWVzc2FnZVBvcnRzIHdvdWxkIGJlIGNsb3NlZAorICAgICAgICBiZWZvcmUgdGhl
ICJ1bmxvYWQiIGV2ZW50IGhhbmRsZXIgaGFkIGEgY2hhbmNlIHRvIHJ1biBhbmQgYW55IGF0dGVt
cHQgdG8gcG9zdCBtZXNzYWdlcyBvbgorICAgICAgICBNZXNzYWdlUG9ydHMgdGhlbiB3b3VsZCBm
YWlsLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL21lc3NhZ2UtcG9ydC1wb3N0TWVzc2Fn
ZS11bmxvYWQtZXZlbnQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpmcmFtZURldGFjaGVkKToKKwogMjAyMS0x
MC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dTdHJlYW1lcl0gQ3Jhc2ggaW4gV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpzb3VyY2VTZXR1cCB3aGVuIGxvYWRpbmcgcmVkZGl0IHZpZGVvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCAwZDdlMmY1ZWY3ZmYwYjUzZTk5Y2JjMjg5ZTAwNGVjNTk5
ZTc2MWViLi5kZjUyMjgxYTY1OGFiOTZhODY5ZTU2ODc5MDQxM2FmZmM5YTBlZDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI4MjUsMTIgKzI4MjUsMTMgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZnJhbWVEZXRhY2hlZCgpCiAgICAgICAgIGNoZWNrQ29tcGxldGVuZXNz
Tm93KCk7CiAgICAgfQogCi0gICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+YmFja0ZvcndhcmRD
YWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSkgeworICAgIGlmICht
X2ZyYW1lLmRvY3VtZW50KCktPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpJ
bkJhY2tGb3J3YXJkQ2FjaGUpCiAgICAgICAgIHN0b3BBbGxMb2FkZXJzQW5kQ2hlY2tDb21wbGV0
ZW5lc3MoKTsKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zdG9wQWN0aXZlRE9NT2JqZWN0
cygpOwotICAgIH0KIAogICAgIGRldGFjaEZyb21QYXJlbnQoKTsKKworICAgIGlmIChtX2ZyYW1l
LmRvY3VtZW50KCktPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpJbkJhY2tG
b3J3YXJkQ2FjaGUpCisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c3RvcEFjdGl2ZURPTU9i
amVjdHMoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCgpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYjdiMDBhNDMxNmJmZDc1MzUyZDVjMTY0YzkwM2U2NmUwYzQ3NzgzNS4uYmVmY2U1OTA3MGY4
NTQzNDg1MzRiNDU4MmYxMGEwOGJjYzE3Y2VkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIx
LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWVzc2Fn
ZVBvcnQgbWVzc2FnZXMgc2VudCBpbiBpZnJhbWUgdW5sb2FkIGV2ZW50IG5vdCByZWNlaXZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTY3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA5NTM1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9tZXNzYWdlLXBvcnQtcG9zdE1lc3NhZ2UtdW5sb2FkLWV2ZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvbWVzc2FnZS1wb3J0
LXBvc3RNZXNzYWdlLXVubG9hZC1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAyMS0xMC0xMyAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBEbyBub3Qg
YnJlYWsgYXQgdGhlIGlubGluZSBib3ggYm91bmRhcnkgd2hlbiB3cmFwcGluZyBpcyBub3QgYWxs
b3dlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvbWVzc2FnZS1wb3J0LXBv
c3RNZXNzYWdlLXVubG9hZC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9tZXNzYWdlLXBvcnQtcG9zdE1lc3NhZ2UtdW5sb2FkLWV2ZW50LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNjkzODc4MGU1ZTkxOTI0YjUzZDgyNWVjNGI2YzA2ZTM4MmI1NjZhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvbWVzc2FnZS1wb3J0LXBvc3RN
ZXNzYWdlLXVubG9hZC1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGVzdHMg
dGhhdCBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpIHdvcmtzIGZyb20gaW5zaWRlIGFuIGlmcmFt
ZSdzIHVubG9hZCBldmVudCBoYW5kbGVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBpZnJhbWUgcmVjZWl2ZWQgInBhZ2VoaWRlIiBldmVudAorUEFTUyBpZnJhbWUgcmVj
ZWl2ZWQgInZpc2liaWxpdHljaGFuZ2UiIGV2ZW50CitQQVNTIGlmcmFtZSByZWNlaXZlZCAidW5s
b2FkIiBldmVudAorUEFTUyBQYXJlbnQgZnJhbWUgcmVjZWl2ZWQgIm1lc3NhZ2UiIGV2ZW50CitQ
QVNTIFBhcmVudCBmcmFtZSByZWNlaXZlZCAibWVzc2FnZSIgZXZlbnQKK1BBU1MgUGFyZW50IGZy
YW1lIHJlY2VpdmVkICJtZXNzYWdlIiBldmVudAorUEFTUyBNZXNzYWdlUG9ydCBpbiBwYXJlbnQg
ZnJhbWUgcmVjZWl2ZWQgbWVzc2FnZQorUEFTUyBNZXNzYWdlUG9ydCBpbiBwYXJlbnQgZnJhbWUg
cmVjZWl2ZWQgbWVzc2FnZQorUEFTUyBNZXNzYWdlUG9ydCBpbiBwYXJlbnQgZnJhbWUgcmVjZWl2
ZWQgbWVzc2FnZQorUEFTUyBldmVudHNSZWNlaXZlZEJ5RnJhbWVXaW5kb3cgaXMgMworUEFTUyBl
dmVudHNSZWNlaXZlZEJ5VG9wV2luZG93IGlzIDMKK1BBU1MgZXZlbnRzUmVjZWl2ZWRCeVRvcFdp
bmRvd01lc3NhZ2VQb3J0IGlzIDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9tZXNz
YWdlLXBvcnQtcG9zdE1lc3NhZ2UtdW5sb2FkLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9tZXNzYWdlLXBvcnQtcG9zdE1lc3NhZ2UtdW5sb2FkLWV2ZW50Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWVhMmIxMDZhZDQ3N2Y5MWFmOWRhNmRlMmM2MjQxNmM2N2RjOTU5NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL21lc3NhZ2UtcG9ydC1wb3N0TWVzc2Fn
ZS11bmxvYWQtZXZlbnQuaHRtbApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IE1lc3NhZ2VQb3J0LnBv
c3RNZXNzYWdlKCkgd29ya3MgZnJvbSBpbnNpZGUgYW4gaWZyYW1lJ3MgdW5sb2FkIGV2ZW50IGhh
bmRsZXIuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IGV2ZW50c1JlY2VpdmVkQnlG
cmFtZVdpbmRvdyA9IDA7CitsZXQgZXZlbnRzUmVjZWl2ZWRCeVRvcFdpbmRvdyA9IDA7CitsZXQg
ZXZlbnRzUmVjZWl2ZWRCeVRvcFdpbmRvd01lc3NhZ2VQb3J0ID0gMDsKKworZnVuY3Rpb24gZmlu
aXNoSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChldmVudHNSZWNlaXZlZEJ5VG9wV2luZG93IDwg
MyB8fCBldmVudHNSZWNlaXZlZEJ5VG9wV2luZG93TWVzc2FnZVBvcnQgPCAzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
c1JlY2VpdmVkQnlGcmFtZVdpbmRvdyIsICIzIik7CisgICAgICAgIHNob3VsZEJlKCJldmVudHNS
ZWNlaXZlZEJ5VG9wV2luZG93IiwgIjMiKTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50c1JlY2Vp
dmVkQnlUb3BXaW5kb3dNZXNzYWdlUG9ydCIsICIzIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0sIDApOworfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgY29uc3QgdGVzdEZyYW1l
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOworICAgIHRlc3RGcmFtZS5j
b250ZW50V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZSkgPT4geworICAgICAg
ICBjb25zdCBmcmFtZVBvcnQgPSBlLmRhdGEucG9ydDsKKyAgICAgICAgZm9yIChsZXQgZXZlbnQg
b2YgWyJ1bmxvYWQiLCAicGFnZWhpZGUiLCAidmlzaWJpbGl0eWNoYW5nZSJdKSB7CisgICAgICAg
ICAgICB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCAoKSA9
PiB7CisgICAgICAgICAgICAgICAgZXZlbnRzUmVjZWl2ZWRCeUZyYW1lV2luZG93Kys7CisgICAg
ICAgICAgICAgICAgd2luZG93LnBhcmVudC50ZXN0UGFzc2VkKGBpZnJhbWUgcmVjZWl2ZWQgIiR7
ZXZlbnR9IiBldmVudGApOworICAgICAgICAgICAgICAgIGZyYW1lUG9ydC5wb3N0TWVzc2FnZSh7
IHRyaWdnZXI6IGV2ZW50IH0pOworICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1l
c3NhZ2UoeyB0cmlnZ2VyOiBldmVudCB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAg
dGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoeworICAgICAgICBwb3J0OiBjaGFu
bmVsLnBvcnQxLAorICAgIH0sIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lm9yaWdpbiwgW2NoYW5u
ZWwucG9ydDFdKTsKKyAgICBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IChlKSA9PiB7CisgICAg
ICAgIGV2ZW50c1JlY2VpdmVkQnlUb3BXaW5kb3dNZXNzYWdlUG9ydCsrOworICAgICAgICB0ZXN0
UGFzc2VkKCJNZXNzYWdlUG9ydCBpbiBwYXJlbnQgZnJhbWUgcmVjZWl2ZWQgbWVzc2FnZSIsIGUu
ZGF0YSk7CisgICAgICAgIGZpbmlzaElmTmVjZXNzYXJ5KCk7CisgICAgfTsKKworICAgIGFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZSkgPT4geworICAgICAgICBldmVudHNSZWNlaXZlZEJ5
VG9wV2luZG93Kys7CisgICAgICAgIHRlc3RQYXNzZWQoJ1BhcmVudCBmcmFtZSByZWNlaXZlZCAi
bWVzc2FnZSIgZXZlbnQnLCBlLmRhdGEpOworICAgICAgICBmaW5pc2hJZk5lY2Vzc2FyeSgpOwor
ICAgIH0pOworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB0ZXN0RnJhbWUucmVtb3Zl
KCk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoSlNUZXN0LCAxMDApOworICAgIH0sIDApOwor
fTsKKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0idGVzdEZyYW1lIj48L2lmcmFtZT4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>