<?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>222011</bug_id>
          
          <creation_ts>2021-02-16 17:32:52 -0800</creation_ts>
          <short_desc>REGRESSION(r268097): Calling processDidTerminate delegate asynchronously is risky compatibility-wise</short_desc>
          <delta_ts>2021-03-05 10:56:19 -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>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222809</see_also>
          <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>
          
          <blocked>217407</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>luming_yin</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1730034</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 17:32:52 -0800</bug_when>
    <thetext>Calling processDidTerminate delegate asynchronously like we did in r268097 is risky compatibility-wise. This caused breakage in at least 2 client applications. While this can be dealt with on the client side, it would be better to fix what r268097 was trying to fix without making the delegate call asynchronous. The reason calling the delegate asynchronously is risky is because some view state may have time to get reset by the time the client gets notified on the crash, potentially confusing the crash handling logic in the client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730037</commentid>
    <comment_count>1</comment_count>
      <attachid>420567</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 17:36:02 -0800</bug_when>
    <thetext>Created attachment 420567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730121</commentid>
    <comment_count>2</comment_count>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2021-02-16 21:08:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/74074861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730190</commentid>
    <comment_count>3</comment_count>
      <attachid>420567</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-17 01:08:40 -0800</bug_when>
    <thetext>Comment on attachment 420567
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730194</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-17 01:14:12 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 420567 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730200</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-17 01:38:53 -0800</bug_when>
    <thetext>Committed r272990: &lt;https://commits.webkit.org/r272990&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420567.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736370</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-05 09:12:40 -0800</bug_when>
    <thetext>Hi Chris, it looks like this didn&apos;t actually fix Epiphany. The problem is here in WebProcessProxy::processDidTerminateOrFailedToLaunch:

    for (auto&amp; page : pages)
        page-&gt;resetStateAfterProcessTermination(reason);

    for (auto&amp; provisionalPage : provisionalPages) {
        if (provisionalPage)
            provisionalPage-&gt;processDidTerminate();
    }

    for (auto&amp; page : pages)
        page-&gt;dispatchProcessDidTerminate(reason);

WebPageProxy::resetStateAfterProcessTermination calls WebPageProxy::resetStateAfterProcessExited, which resets its m_pageLoadState, here:

    if (terminationReason != ProcessTerminationReason::NavigationSwap) {
        PageLoadState::Transaction transaction = m_pageLoadState.transaction();
        m_pageLoadState.reset(transaction);
    }

That clears the page&apos;s URI, and as you see above it happens just before WebProcessProxy calls WebPageProxy::dispatchProcessDidTerminate. To avoid this regression, we would need to ensure the page&apos;s URI doesn&apos;t get reset until *after* WebPageProxy::dispatchProcessDidTerminate.

Again, easy to workaround in the client, but would be nice if we didn&apos;t need to. How bad would it be to move the code that resets the PageLoadState to a later point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736372</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 09:16:44 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; Hi Chris, it looks like this didn&apos;t actually fix Epiphany. The problem is
&gt; here in WebProcessProxy::processDidTerminateOrFailedToLaunch:
&gt; 
&gt;     for (auto&amp; page : pages)
&gt;         page-&gt;resetStateAfterProcessTermination(reason);
&gt; 
&gt;     for (auto&amp; provisionalPage : provisionalPages) {
&gt;         if (provisionalPage)
&gt;             provisionalPage-&gt;processDidTerminate();
&gt;     }
&gt; 
&gt;     for (auto&amp; page : pages)
&gt;         page-&gt;dispatchProcessDidTerminate(reason);
&gt; 
&gt; WebPageProxy::resetStateAfterProcessTermination calls
&gt; WebPageProxy::resetStateAfterProcessExited, which resets its
&gt; m_pageLoadState, here:
&gt; 
&gt;     if (terminationReason != ProcessTerminationReason::NavigationSwap) {
&gt;         PageLoadState::Transaction transaction =
&gt; m_pageLoadState.transaction();
&gt;         m_pageLoadState.reset(transaction);
&gt;     }
&gt; 
&gt; That clears the page&apos;s URI, and as you see above it happens just before
&gt; WebProcessProxy calls WebPageProxy::dispatchProcessDidTerminate. To avoid
&gt; this regression, we would need to ensure the page&apos;s URI doesn&apos;t get reset
&gt; until *after* WebPageProxy::dispatchProcessDidTerminate.
&gt; 
&gt; Again, easy to workaround in the client, but would be nice if we didn&apos;t need
&gt; to. How bad would it be to move the code that resets the PageLoadState to a
&gt; later point?

I don&apos;t understand why this is a regression from my original change then though. We always called resetStateAfterProcessExited() *before* notifying the client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736402</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 10:20:59 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Michael Catanzaro from comment #6)
&gt; &gt; Hi Chris, it looks like this didn&apos;t actually fix Epiphany. The problem is
&gt; &gt; here in WebProcessProxy::processDidTerminateOrFailedToLaunch:
&gt; &gt; 
&gt; &gt;     for (auto&amp; page : pages)
&gt; &gt;         page-&gt;resetStateAfterProcessTermination(reason);
&gt; &gt; 
&gt; &gt;     for (auto&amp; provisionalPage : provisionalPages) {
&gt; &gt;         if (provisionalPage)
&gt; &gt;             provisionalPage-&gt;processDidTerminate();
&gt; &gt;     }
&gt; &gt; 
&gt; &gt;     for (auto&amp; page : pages)
&gt; &gt;         page-&gt;dispatchProcessDidTerminate(reason);
&gt; &gt; 
&gt; &gt; WebPageProxy::resetStateAfterProcessTermination calls
&gt; &gt; WebPageProxy::resetStateAfterProcessExited, which resets its
&gt; &gt; m_pageLoadState, here:
&gt; &gt; 
&gt; &gt;     if (terminationReason != ProcessTerminationReason::NavigationSwap) {
&gt; &gt;         PageLoadState::Transaction transaction =
&gt; &gt; m_pageLoadState.transaction();
&gt; &gt;         m_pageLoadState.reset(transaction);
&gt; &gt;     }
&gt; &gt; 
&gt; &gt; That clears the page&apos;s URI, and as you see above it happens just before
&gt; &gt; WebProcessProxy calls WebPageProxy::dispatchProcessDidTerminate. To avoid
&gt; &gt; this regression, we would need to ensure the page&apos;s URI doesn&apos;t get reset
&gt; &gt; until *after* WebPageProxy::dispatchProcessDidTerminate.
&gt; &gt; 
&gt; &gt; Again, easy to workaround in the client, but would be nice if we didn&apos;t need
&gt; &gt; to. How bad would it be to move the code that resets the PageLoadState to a
&gt; &gt; later point?
&gt; 
&gt; I don&apos;t understand why this is a regression from my original change then
&gt; though. We always called resetStateAfterProcessExited() *before* notifying
&gt; the client.

Oh, I think it is because there was this in scope:
PageLoadState::Transaction transaction = m_pageLoadState.transaction();

So even though we cleared the URL before call the client, the change would not take effect until after the transaction gets destroyed, which was *after* we called the client.. So it seems I indeed changed behavior here :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736436</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-05 10:56:19 -0800</bug_when>
    <thetext>Chris posted a fix in bug #222809.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420567</attachid>
            <date>2021-02-16 17:36:02 -0800</date>
            <delta_ts>2021-02-17 01:38:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222011-20210216173602.patch</filename>
            <type>text/plain</type>
            <size>7382</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxZTZhMTU5ZTM3MTU0Mzk2
Y2U5MWNkZmNkZjczNDg0YjY4YjA1YzYuLjNmMmE2NDE0MDNlNDQ3MWE1MjYzMmQ3ZmQ0ODY4YTBi
YWQ4ODIwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDItMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIyNjgwOTcpOiBD
YWxsaW5nIHByb2Nlc3NEaWRUZXJtaW5hdGUgZGVsZWdhdGUgYXN5bmNocm9ub3VzbHkgaXMgcmlz
a3kgY29tcGF0aWJpbGl0eS13aXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjIwMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsaW5nIHByb2Nlc3NEaWRUZXJtaW5hdGUgZGVsZWdhdGUgYXN5bmNo
cm9ub3VzbHkgbGlrZSB3ZSBkaWQgaW4gcjI2ODA5NyBpcyByaXNreSBjb21wYXRpYmlsaXR5LXdp
c2UuCisgICAgICAgIFRoaXMgY2F1c2VkIGJyZWFrYWdlIGluIGF0IGxlYXN0IDIgY2xpZW50IGFw
cGxpY2F0aW9ucy4gV2hpbGUgdGhpcyBjYW4gYmUgZGVhbHQgd2l0aCBvbiB0aGUgY2xpZW50IHNp
ZGUsCisgICAgICAgIGl0IHdvdWxkIGJlIGJldHRlciB0byBmaXggd2hhdCByMjY4MDk3IHdhcyB0
cnlpbmcgdG8gZml4IHdpdGhvdXQgbWFraW5nIHRoZSBkZWxlZ2F0ZSBjYWxsIGFzeW5jaHJvbm91
cy4KKyAgICAgICAgVGhlIHJlYXNvbiBjYWxsaW5nIHRoZSBkZWxlZ2F0ZSBhc3luY2hyb25vdXNs
eSBpcyByaXNreSBpcyBiZWNhdXNlIHNvbWUgdmlldyBzdGF0ZSBtYXkgaGF2ZSB0aW1lIHRvIGdl
dAorICAgICAgICByZXNldCBieSB0aGUgdGltZSB0aGUgY2xpZW50IGdldHMgbm90aWZpZWQgb24g
dGhlIGNyYXNoLCBwb3RlbnRpYWxseSBjb25mdXNpbmcgdGhlIGNyYXNoIGhhbmRsaW5nIGxvZ2lj
CisgICAgICAgIGluIHRoZSBjbGllbnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVk
IGJ5IFdLTmF2aWdhdGlvbi5SZWxvYWRSZWxhdGVkVmlld3NJblByb2Nlc3NEaWRUZXJtaW5hdGUg
QVBJIHRlc3QgdGhhdCBpcworICAgICAgICBzdGlsbCBwYXNzaW5nIGV2ZW4gdGhvdWdoIHRoZSBk
ZWxlZ2F0ZSBjYWxsIGlzIG5vIGxvbmdlciBhc3luY2hyb25vdXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b21taXRQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGVBZnRlclByb2Nlc3NUZXJtaW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0
ZU9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJl
cXVlc3RUZXJtaW5hdGlvbik6CisKIDIwMjEtMDItMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3Jl
bGVhc2VdIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggY2FkNGE5NTNmOGIwMDlkNzQ4YWUxZjI0ZjdiOGVmODc3MGJmY2RjZC4uNTJjYzQ2MGZl
MjAxZTA2NWQ1ZjZhZjY3NDRkZGY4YjE4N2FkYTk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMzQzLDcgKzMzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUlu
Zm9EYXRhJgogICAgIGlmIChtX2lzTGF5ZXJUcmVlRnJvemVuRHVlVG9Td2lwZUFuaW1hdGlvbikK
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5mcmVlemVMYXllclRyZWVEdWVUb1N3
aXBlQW5pbWF0aW9uKCkpOwogCi0gICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWlu
YXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKKyAgICByZXNldFN0YXRlQWZ0ZXJQcm9jZXNz
VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCk7CiAK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKICAgICBhdXRvKiBuYXZp
Z2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lvbmFsUGFnZS0+
bmF2aWdhdGlvbklEKCkpOwpAQCAtNzIzNyw3ICs3MjM3LDcgQEAgVVJMIFdlYlBhZ2VQcm94eTo6
Y3VycmVudFJlc291cmNlRGlyZWN0b3J5VVJMKCkgY29uc3QKICAgICByZXR1cm4geyB9OwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRp
b25SZWFzb24gcmVhc29uKQordm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nl
c3NUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogewogICAgIGlm
IChyZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZFRl
cm1pbmF0ZTogKHBpZCAlZCksIHJlYXNvbiAlZCIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNv
bik7CkBAIC03MjY0LDEwICs3MjY0LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRU
ZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKICAgICAvLyBGb3IgYnJp
bmd1cCBvZiBwcm9jZXNzIHN3YXBwaW5nLCBOYXZpZ2F0aW9uU3dhcCB0ZXJtaW5hdGlvbiB3aWxs
IG5vdCBnbyBvdXQgdG8gY2xpZW50cy4KICAgICAvLyBJZiBpdCBkb2VzICpkdXJpbmcqIHByb2Nl
c3Mgc3dhcHBpbmcsIGFuZCB0aGUgY2xpZW50IHRyaWdnZXJzIGEgcmVsb2FkLCB0aGF0IGNhdXNl
cyBiaXphcnJlIFdlYktpdCByZS1lbnRyeS4KICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBoYXZl
IHRvIGNoYW5nZQotICAgIGlmIChyZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpO
YXZpZ2F0aW9uU3dhcCkgeworICAgIGlmIChyZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpOYXZpZ2F0aW9uU3dhcCkKICAgICAgICAgbmF2aWdhdGlvblN0YXRlKCkuY2xlYXJBbGxO
YXZpZ2F0aW9ucygpOwotICAgICAgICBkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGUocmVhc29u
KTsKLSAgICB9CiAKICAgICBpZiAobV9jb250cm9sbGVkQnlBdXRvbWF0aW9uKSB7CiAgICAgICAg
IGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1
dG9tYXRpb25TZXNzaW9uKCkpCkBAIC03MzAxLDIyICs3Mjk5LDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJk
aXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGU6IHJlYXNvbiA9ICVkIiwgcmVhc29uKTsKIAotICAg
IC8vIFdlIG5vdGlmeSB0aGUgY2xpZW50IGFzeW5jaHJvbm91c2x5IGJlY2F1c2Ugc2V2ZXJhbCBw
YWdlcyBtYXkgc2hhcmUgdGhlIHNhbWUgcHJvY2VzcwotICAgIC8vIGFuZCB3ZSB3YW50IHRvIG1h
a2Ugc3VyZSBhbGwgcGFnZXMgYXJlIGF3YXJlIHRoZWlyIHByb2Nlc3MgaGFzIGNyYXNoZWQgYmVm
b3JlIHRoZQotICAgIC8vIHRoZSBjbGllbnQgcmVhY3RzIHRvIHRoZSBwcm9jZXNzIHRlcm1pbmF0
aW9uLgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHJlYXNvbl0gewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGJvb2wgaGFuZGxlZEJ5Q2xpZW50ID0gZmFsc2U7Ci0g
ICAgICAgIGlmIChtX2xvYWRlckNsaWVudCkKLSAgICAgICAgICAgIGhhbmRsZWRCeUNsaWVudCA9
IHJlYXNvbiAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVlc3RlZEJ5Q2xpZW50ICYm
IG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBoYW5kbGVkQnlDbGllbnQgPSBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NE
aWRUZXJtaW5hdGUoKnRoaXMsIHJlYXNvbik7CisgICAgYm9vbCBoYW5kbGVkQnlDbGllbnQgPSBm
YWxzZTsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIGhhbmRsZWRCeUNsaWVudCA9
IHJlYXNvbiAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVlc3RlZEJ5Q2xpZW50ICYm
IG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOworICAgIGVsc2UKKyAgICAg
ICAgaGFuZGxlZEJ5Q2xpZW50ID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkVGVybWlu
YXRlKCp0aGlzLCByZWFzb24pOwogCi0gICAgICAgIGlmICghaGFuZGxlZEJ5Q2xpZW50ICYmIHNo
b3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKHJlYXNvbikpCi0gICAgICAgICAgICB0
cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbigpOwotICAgIH0pOworICAgIGlmICghaGFu
ZGxlZEJ5Q2xpZW50ICYmIHNob3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKHJlYXNv
bikpCisgICAgICAgIHRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDc0YmRjZmEzZWJkNWQzNDM2ZjRj
OWUyZTExYzEzMTgxMmU5MGQxZTguLmE2YjZhNzU5NDljZjIwOWU1MTJiMWUyNDBmNWQwMDcyOWJh
OTlmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc2LDcg
KzExNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNp
dmUoKTsKICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCk7Ci0gICAgdm9pZCBw
cm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik7CisgICAgdm9pZCBy
ZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
KTsKICAgICB2b2lkIHByb3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogICAgIHZvaWQg
ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik7CiAg
ICAgdm9pZCB3aWxsQ2hhbmdlUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNDhlYjRlMjdiMzBhNjk0ZjMzYjk3
ZDY4OGQ5Nzg2ZDBkZjc4NTUxMi4uZmM1NmExZDY0ODU4NjJmMDQ1ZDZmMzQ2OWE2YzZhZTA0Yjg3
MTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC04ODUsMTMgKzg4NSwxNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1p
bmF0ZU9yRmFpbGVkVG9MYXVuY2goKQogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBw
YWdlcykKLSAgICAgICAgcGFnZS0+cHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRp
b25SZWFzb246OkNyYXNoKTsKKyAgICAgICAgcGFnZS0+cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc1Rl
cm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpOwogCiAgICAgZm9yIChh
dXRvJiBwcm92aXNpb25hbFBhZ2UgOiBwcm92aXNpb25hbFBhZ2VzKSB7CiAgICAgICAgIGlmIChw
cm92aXNpb25hbFBhZ2UpCiAgICAgICAgICAgICBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NEaWRU
ZXJtaW5hdGUoKTsKICAgICB9CiAKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAg
ICAgcGFnZS0+ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6Q3Jhc2gpOworCiAgICAgbV9zbGVlcERpc2FibGVycy5jbGVhcigpOwogfQogCkBAIC0x
MjU0LDEyICsxMjU3LDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVybWluYXRp
b24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKICAgICBzaHV0RG93bigpOwogCiAg
ICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCi0gICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJt
aW5hdGUocmVhc29uKTsKKyAgICAgICAgcGFnZS0+cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc1Rlcm1p
bmF0aW9uKHJlYXNvbik7CiAgICAgICAgIAogICAgIGZvciAoYXV0byYgcHJvdmlzaW9uYWxQYWdl
IDogcHJvdmlzaW9uYWxQYWdlcykgewogICAgICAgICBpZiAocHJvdmlzaW9uYWxQYWdlKQogICAg
ICAgICAgICAgcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzRGlkVGVybWluYXRlKCk7CiAgICAgfQor
CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisgICAgICAgIHBhZ2UtPmRpc3BhdGNoUHJv
Y2Vzc0RpZFRlcm1pbmF0ZShyZWFzb24pOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aXNS
ZWxlYXNlTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>