<?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>215239</bug_id>
          
          <creation_ts>2020-08-06 14:13:52 -0700</creation_ts>
          <short_desc>Always suspend IDB work when network process is prepared to suspend</short_desc>
          <delta_ts>2021-07-02 08:51:19 -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>WebCore Misc.</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=227552</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>197050</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1678396</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-06 14:13:52 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678398</commentid>
    <comment_count>1</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-06 14:14:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/65690450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678415</commentid>
    <comment_count>2</comment_count>
      <attachid>406119</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-06 14:30:18 -0700</bug_when>
    <thetext>Created attachment 406119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678697</commentid>
    <comment_count>3</comment_count>
      <attachid>406119</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-08-07 12:56:14 -0700</bug_when>
    <thetext>Comment on attachment 406119
Patch

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

r=me

It&apos;s a little unfortunate that all transactions started before suspension will be aborted, in contrast to transactions started after suspension, which will just be paused and delayed. Is there a way to delay in progress transactions instead of aborting them? I guess not, since an in progress transaction holds a database file lock? Would it be crazy to abort a transaction without signaling an error and then put it back in the queue to try again when we resume?

&gt; Source/WebKit/ChangeLog:9
&gt; +        We do not suspend IDB work in network process when there is ongoing transaction because network process is 

network process =&gt; the network process
ongoing transaction =&gt; an ongoing transaction
network process =&gt; the network process

&gt; Source/WebKit/ChangeLog:10
&gt; +        going to ask UI process to hold process assertion for it. However, it is possible that the request from network

UI process =&gt; the UI process
process assertion =&gt; a process assertion
network =&gt; the network

&gt; Source/WebKit/ChangeLog:11
&gt; +        process does not reach UI process before UI process thinks think it is Okay to put network process to suspend. 

UI process =&gt; the UI process
UI process =&gt; the UI process
thinks think -&gt; thinks
Okay =&gt; okay
put network process to suspend =&gt; suspend the network process

I believe it&apos;s runningboard, and not the UI process, that ultimately suspends the network process. So, I think this comment should talk about runningboard. Or maybe you could talk about the UI process dropping its foreground assertion on the network process? Is that what ultimately triggers runningboard to suspend the network process?

&gt; Source/WebKit/ChangeLog:12
&gt; +        In this case, IDB in network process can continue its transaction, holding file locks, and network process will 

network process =&gt; the network process
network process =&gt; the network process

&gt; Source/WebKit/ChangeLog:13
&gt; +        be killed when it becomes suspened. Network process crash can cause worse result than aborting ongoing 

Network process crash =&gt; A network process crash
worse result =&gt; a worse result

&gt; Source/WebKit/ChangeLog:15
&gt; +        let&apos;s just suspend IDB work when network process receives prepareToSuspend.

network process =&gt; the network process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678698</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-08-07 12:57:04 -0700</bug_when>
    <thetext>A related reason why aborting does not feel great: It will trigger more code to run when we are supposed to be suspending, since it will fire an event in the WebContent process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679065</commentid>
    <comment_count>5</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-10 09:16:10 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 406119 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406119&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; It&apos;s a little unfortunate that all transactions started before suspension
&gt; will be aborted, in contrast to transactions started after suspension, which
&gt; will just be paused and delayed. Is there a way to delay in progress
&gt; transactions instead of aborting them? I guess not, since an in progress
&gt; transaction holds a database file lock? Would it be crazy to abort a
&gt; transaction without signaling an error and then put it back in the queue to
&gt; try again when we resume?
&gt; 
It can be complicated. We would need to record the requests/operations of started transactions, together with their result, so we can replay them after process is resumed. But what if result of the second execution is different from the first execution; e.g. we may fire success event on some request(operation), event handler is called and a new request is created in the event handler.

&gt; &gt; Source/WebKit/ChangeLog:9
&gt; &gt; +        We do not suspend IDB work in network process when there is ongoing transaction because network process is 
&gt; 
&gt; network process =&gt; the network process
&gt; ongoing transaction =&gt; an ongoing transaction
&gt; network process =&gt; the network process
&gt; 

Okay.

&gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; +        going to ask UI process to hold process assertion for it. However, it is possible that the request from network
&gt; 
&gt; UI process =&gt; the UI process
&gt; process assertion =&gt; a process assertion
&gt; network =&gt; the network
&gt; 
Okay.

&gt; &gt; Source/WebKit/ChangeLog:11
&gt; &gt; +        process does not reach UI process before UI process thinks think it is Okay to put network process to suspend. 
&gt; 
&gt; UI process =&gt; the UI process
&gt; UI process =&gt; the UI process
&gt; thinks think -&gt; thinks
&gt; Okay =&gt; okay
&gt; put network process to suspend =&gt; suspend the network process
&gt; 
&gt; I believe it&apos;s runningboard, and not the UI process, that ultimately
&gt; suspends the network process. So, I think this comment should talk about
&gt; runningboard. Or maybe you could talk about the UI process dropping its
&gt; foreground assertion on the network process? Is that what ultimately
&gt; triggers runningboard to suspend the network process?
&gt; 

You are right, it&apos;s RunningBoard that decides it&apos;s Okay to suspend the network process after UI process drops process assertion for network process. Will update.

&gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; +        In this case, IDB in network process can continue its transaction, holding file locks, and network process will 
&gt; 
&gt; network process =&gt; the network process
&gt; network process =&gt; the network process
&gt; 
Okay.

&gt; &gt; Source/WebKit/ChangeLog:13
&gt; &gt; +        be killed when it becomes suspened. Network process crash can cause worse result than aborting ongoing 
&gt; 
&gt; Network process crash =&gt; A network process crash
&gt; worse result =&gt; a worse result
&gt; 
Okay.

&gt; &gt; Source/WebKit/ChangeLog:15
&gt; &gt; +        let&apos;s just suspend IDB work when network process receives prepareToSuspend.
&gt; 
&gt; network process =&gt; the network process
Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679066</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-10 09:24:59 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; A related reason why aborting does not feel great: It will trigger more code
&gt; to run when we are supposed to be suspending, since it will fire an event in
&gt; the WebContent process.

I agree. Another possible solution would be to ensure the network process sends request for holding background assertion before the network process replies to the prepareToSuspend message. Current patch is just less risky and more straightforward to fix the crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679067</commentid>
    <comment_count>7</comment_count>
      <attachid>406299</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-10 09:28:22 -0700</bug_when>
    <thetext>Created attachment 406299
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679073</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-08-10 09:33:22 -0700</bug_when>
    <thetext>I tend to agree that this approach is better (more likely to avoid a crash) than relying on the network process acquiring a background assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679079</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-10 09:51:23 -0700</bug_when>
    <thetext>Committed r265433: &lt;https://trac.webkit.org/changeset/265433&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406299.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679087</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-10 09:54:44 -0700</bug_when>
    <thetext>Given that we had a bug that caused the PrepareToSuspend IPC to not get sent to the network process until a few days ago, I am not sure we needed to make this change.

I believe the fix to actually send the PrepareToSuspend IPC has not been submitted yet so making changes to our behavior when the PrepareToSuspend IPC gets received to probably not super helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679101</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-10 10:10:29 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Given that we had a bug that caused the PrepareToSuspend IPC to not get sent
&gt; to the network process until a few days ago, I am not sure we needed to make
&gt; this change.
&gt; 
&gt; I believe the fix to actually send the PrepareToSuspend IPC has not been
&gt; submitted yet so making changes to our behavior when the PrepareToSuspend
&gt; IPC gets received to probably not super helpful.

http://trac.webkit.org/r265162 fixed the bug where the PrepareToSuspend IPC not getting sent in most cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679104</commentid>
    <comment_count>12</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-10 10:18:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; Given that we had a bug that caused the PrepareToSuspend IPC to not get sent
&gt; &gt; to the network process until a few days ago, I am not sure we needed to make
&gt; &gt; this change.
&gt; &gt; 
&gt; &gt; I believe the fix to actually send the PrepareToSuspend IPC has not been
&gt; &gt; submitted yet so making changes to our behavior when the PrepareToSuspend
&gt; &gt; IPC gets received to probably not super helpful.
&gt; 
&gt; http://trac.webkit.org/r265162 fixed the bug where the PrepareToSuspend IPC
&gt; not getting sent in most cases.

I tested on ToT WebKit last Friday and reproduced the crash with this log:
com.apple.WebKit.Networking (WebCore): SQLiteTransaction::begin()
com.apple.WebKit.Networking (WebKit): NetworkProcess::prepareToSuspend(), isSuspensionImminent: 0
com.apple.WebKit.Networking (WebKit): WebSQLiteDatabaseTracker::setIsSuspended isSuspended[1]
com.apple.WebKit.Networking (WebKit): NetworkProcess::prepareToSuspend() Process is ready to suspend</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406119</attachid>
            <date>2020-08-06 14:30:18 -0700</date>
            <delta_ts>2020-08-10 09:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215239-20200806143017.patch</filename>
            <type>text/plain</type>
            <size>3946</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM5MGUwNTFmYWE5OTU0NzVj
YTU0ZjEwYzAzYTkzMTk1ZjMyZDFjZTMuLjU5ZGM1ZjA4NTk1N2MwM2RkMzQwZmU4OTEzZWRhYmQ3
NDQ2NGQwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDgtMDYgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHN1c3BlbmQgSURCIHdv
cmsgd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcHJlcGFyZWQgdG8gc3VzcGVuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjM5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82NTY5MDQ1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBkbyBub3Qgc3VzcGVuZCBJREIgd29yayBpbiBuZXR3b3JrIHBy
b2Nlc3Mgd2hlbiB0aGVyZSBpcyBvbmdvaW5nIHRyYW5zYWN0aW9uIGJlY2F1c2UgbmV0d29yayBw
cm9jZXNzIGlzIAorICAgICAgICBnb2luZyB0byBhc2sgVUkgcHJvY2VzcyB0byBob2xkIHByb2Nl
c3MgYXNzZXJ0aW9uIGZvciBpdC4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgcmVx
dWVzdCBmcm9tIG5ldHdvcmsKKyAgICAgICAgcHJvY2VzcyBkb2VzIG5vdCByZWFjaCBVSSBwcm9j
ZXNzIGJlZm9yZSBVSSBwcm9jZXNzIHRoaW5rcyB0aGluayBpdCBpcyBPa2F5IHRvIHB1dCBuZXR3
b3JrIHByb2Nlc3MgdG8gc3VzcGVuZC4gCisgICAgICAgIEluIHRoaXMgY2FzZSwgSURCIGluIG5l
dHdvcmsgcHJvY2VzcyBjYW4gY29udGludWUgaXRzIHRyYW5zYWN0aW9uLCBob2xkaW5nIGZpbGUg
bG9ja3MsIGFuZCBuZXR3b3JrIHByb2Nlc3Mgd2lsbCAKKyAgICAgICAgYmUga2lsbGVkIHdoZW4g
aXQgYmVjb21lcyBzdXNwZW5lZC4gTmV0d29yayBwcm9jZXNzIGNyYXNoIGNhbiBjYXVzZSB3b3Jz
ZSByZXN1bHQgdGhhbiBhYm9ydGluZyBvbmdvaW5nIAorICAgICAgICB0cmFuc2FjdGlvbnMgZnJv
bSBzdXNwZW5kaW5nIElEQiB3b3JrLCBhcyBpdCB3b3VsZCBkZXN0cm95IGFsbCBkYXRhYmFzZSBj
b25uZWN0aW9ucyBhbmQgdHJhbnNhY3Rpb24uIFRoZXJlZm9yZSwKKyAgICAgICAgbGV0J3MganVz
dCBzdXNwZW5kIElEQiB3b3JrIHdoZW4gbmV0d29yayBwcm9jZXNzIHJlY2VpdmVzIHByZXBhcmVU
b1N1c3BlbmQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpzdXNwZW5kKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisKIDIwMjAtMDgtMDYgIEphbWVzIFNhdmFn
ZSAgPGphbWVzLnNhdmFnZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ291bGQgbm90IGZpbmQgbW9k
dWxlICdXZWJLaXQnIGZvciB0YXJnZXQgJ2FybXY3LWFwcGxlLWlvcycKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCmlu
ZGV4IDI3MGJlN2E1N2U5MzkxODEyNzY4YmY0YWU1ZjkwMTg3MTQ4NzYyMmEuLjk3MTEyNWIxY2Nm
YzljODQzNTM0ZDM2MDAzMDdlYTE0MmE4ZWRhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApAQCAtMTAyLDEz
ICsxMDIsMTAgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY28KICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJJREJTZXJ2ZXI6OnN1c3BlbmQoU2hvdWxkRm9yY2VTdG9wIHNob3VsZEZvcmNlU3RvcCkKK3Zv
aWQgV2ViSURCU2VydmVyOjpzdXNwZW5kKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgaWYgKHNob3VsZEZvcmNlU3RvcCA9PSBTaG91bGRGb3JjZVN0b3A6Ok5vICYm
IFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblByb2dyZXNz
KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX2lzU3VzcGVuZGVkKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQlNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCU2VydmVyLmgKaW5kZXggOTY3YTk3YzJiZTcyMzhjMjA3Nzg0YTU3ZDM1MjQ2NjQ1
ZmQ5ZjZmZi4uZjc5YjNmMDhmOTBlMmM5NTZlY2RhN2I3YTMxZDE3ZTdmYTMxYzExMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyLmgKQEAgLTUxLDggKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VBbmREZWxldGVE
YXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJl
bmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
Ci0gICAgZW51bSBjbGFzcyBTaG91bGRGb3JjZVN0b3AgOiBib29sIHsgTm8sIFllcyB9OwotICAg
IHZvaWQgc3VzcGVuZChTaG91bGRGb3JjZVN0b3ApOworICAgIHZvaWQgc3VzcGVuZCgpOwogICAg
IHZvaWQgcmVzdW1lKCk7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3OTA4NTdkNTc2
YjE1NDRmMzJjMzAwNWM4ZTM3OWFlOTgzZDMzYmFlLi4zZjczOGFmNGQ1ZTc5ZmI3MGEwN2M5OWFj
NzkwZDNkOWVkYjM2OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApAQCAtMjI3MSw3ICsyMjcxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9u
SGFuZGwKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQot
ICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPyBXZWJJREJTZXJ2
ZXI6OlNob3VsZEZvcmNlU3RvcDo6WWVzIDogV2ViSURCU2VydmVyOjpTaG91bGRGb3JjZVN0b3A6
Ok5vKTsKKyAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406299</attachid>
            <date>2020-08-10 09:28:22 -0700</date>
            <delta_ts>2020-08-10 09:51:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-215239-20200810092822.patch</filename>
            <type>text/plain</type>
            <size>4126</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjZjI3NzI1ODZmNzFjOTA5
MTg5NmM2MWQ1ZGExZTBlYTk4ZDRmNzguLjM3ZmU4MWI5Y2Q3MWY3MzA1NGVhY2FhYjI5MDNmN2Zm
ZWM3NTFmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDgtMTAgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWx3YXlzIHN1c3BlbmQgSURCIHdv
cmsgd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcHJlcGFyZWQgdG8gc3VzcGVuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjM5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82NTY5MDQ1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KKworICAgICAgICBXZSBkbyBub3Qgc3VzcGVuZCBJREIgd29yayBpbiB0aGUgbmV0d29y
ayBwcm9jZXNzIHdoZW4gdGhlcmUgaXMgYW4gb25nb2luZyB0cmFuc2FjdGlvbiBiZWNhdXNlIHRo
ZSBuZXR3b3JrIAorICAgICAgICBwcm9jZXNzIGlzIGdvaW5nIHRvIGFzayB0aGUgVUkgcHJvY2Vz
cyB0byBob2xkIGEgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2VydGlvbiBmb3IgaXQuIEhvd2V2ZXIs
IGl0IGlzIHBvc3NpYmxlIAorICAgICAgICB0aGF0IHRoZSByZXF1ZXN0IGZyb20gdGhlIG5ldHdv
cmsgcHJvY2VzcyBkb2VzIG5vdCByZWFjaCB0aGUgVUkgcHJvY2VzcyBpbiB0aW1lOiBSdW5uaW5n
Qm9hcmQgbWF5IGFscmVhZHkgZGVjaWRlCisgICAgICAgIHRvIHN1c3BlbmQgdGhlIG5ldHdvcmsg
cHJvY2VzcyBhZnRlciBhcHAgaXMgYmFja2dyb3VuZGVkIGFuZCBVSSBwcm9jZXNzIGRyb3BzIHRo
ZSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBmb3IgdGhlIAorICAgICAgICBuZXR3b3JrIHByb2Nlc3Mu
IAorCisgICAgICAgIEluIHRoaXMgY2FzZSwgSURCIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd291
bGQgY29udGludWUgaXRzIHRyYW5zYWN0aW9uIGFuZCB0aGUgbmV0d29yayBwcm9jZXNzIHdpbGwg
YmUga2lsbGVkIAorICAgICAgICB3aGVuIGl0IGJlY29tZXMgc3VzcGVuZWQgZm9yIGhvbGRpbmcg
ZGF0YWJhc2UgZmlsZSBsb2Nrcy4gQSBuZXR3b3JrIHByb2Nlc3MgY3Jhc2ggY2FuIGxlYWQgdG8g
YSB3b3JzZSByZXN1bHQgCisgICAgICAgIHRoYW4gc3VzcGVuZGluZyBJREIgd29yaywgd2hpY2gg
YWJvcnRzIG9uZ29pbmcgdHJhbnNhY3Rpb25zLCBiZWNhdXNlIGl0IHdpbGwgZGVzdHJveSBhbGwg
ZGF0YWJhc2UgY29ubmVjdGlvbnMgCisgICAgICAgIGFuZCB0cmFuc2FjdGlvbi4gVGhlcmVmb3Jl
LCBsZXQncyBqdXN0IHN1c3BlbmQgSURCIHdvcmsgd2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIHJl
Y2VpdmVzIHByZXBhcmVUb1N1c3BlbmQgCisgICAgICAgIG1lc3NhZ2UuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCU2VydmVyOjpzdXNwZW5kKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRl
eGVkREIvV2ViSURCU2VydmVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3Vz
cGVuZCk6CisKIDIwMjAtMDgtMTAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCByZXF1aXJlZCBlbnRpdGxlbWVudCBmb3IgQ2F0YWx5c3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwCmluZGV4IDI3MGJlN2E1N2U5MzkxODEyNzY4YmY0YWU1ZjkwMTg3MTQ4NzYyMmEuLjk3
MTEyNWIxY2NmYzljODQzNTM0ZDM2MDAzMDdlYTE0MmE4ZWRhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApA
QCAtMTAyLDEzICsxMDIsMTAgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY28KICAgICB9KTsKIH0K
IAotdm9pZCBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoU2hvdWxkRm9yY2VTdG9wIHNob3VsZEZvcmNl
U3RvcCkKK3ZvaWQgV2ViSURCU2VydmVyOjpzdXNwZW5kKCkKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgaWYgKHNob3VsZEZvcmNlU3RvcCA9PSBTaG91bGRGb3JjZVN0
b3A6Ok5vICYmIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX2lzU3VzcGVuZGVkKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKaW5kZXggOTY3YTk3YzJiZTcyMzhjMjA3Nzg0YTU3
ZDM1MjQ2NjQ1ZmQ5ZjZmZi4uZjc5YjNmMDhmOTBlMmM5NTZlY2RhN2I3YTMxZDE3ZTdmYTMxYzEx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmgKQEAgLTUxLDggKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VB
bmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIHJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCi0gICAgZW51bSBjbGFzcyBTaG91bGRGb3JjZVN0b3AgOiBib29sIHsgTm8sIFll
cyB9OwotICAgIHZvaWQgc3VzcGVuZChTaG91bGRGb3JjZVN0b3ApOworICAgIHZvaWQgc3VzcGVu
ZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1
MzI4MzYwZjM5MDA3NzZjYjM0MGY3YTdlMjI1NDg5ZWM0ZWJkZWExLi5mNmI4NjBlNzliM2E2Zjc1
NGFlMWFkYzQzMmUxNTRlOWRmYzhmMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjI4OCw3ICsyMjg4LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBD
b21wbGV0aW9uSGFuZGwKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZh
bHVlcygpKQotICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPyBX
ZWJJREJTZXJ2ZXI6OlNob3VsZEZvcmNlU3RvcDo6WWVzIDogV2ViSURCU2VydmVyOjpTaG91bGRG
b3JjZVN0b3A6Ok5vKTsKKyAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>