<?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>208700</bug_id>
          
          <creation_ts>2020-03-06 01:39:11 -0800</creation_ts>
          <short_desc>Make ProcessThrottler::sendPrepareToSuspendIPC more robust to send failures</short_desc>
          <delta_ts>2020-03-06 09:33:51 -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>DUPLICATE</resolution>
          <dup_id>208701</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626551</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 01:39:11 -0800</bug_when>
    <thetext>Make ProcessThrottler::sendPrepareToSuspendIPC more robust to send failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626552</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 01:39:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/59921309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626553</commentid>
    <comment_count>2</comment_count>
      <attachid>392690</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 01:42:00 -0800</bug_when>
    <thetext>Created attachment 392690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626560</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 01:55:57 -0800</bug_when>
    <thetext>An alternative (or a related fix) would be to ensure AuxiliaryProcessProxy::sendMessage is calling the completion handler asynchronously in case of error.
I do not think we loose much efficiency and this might get us safer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626569</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 02:02:55 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=208701</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626686</commentid>
    <comment_count>5</comment_count>
      <attachid>392690</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-06 08:53:26 -0800</bug_when>
    <thetext>Comment on attachment 392690
Patch

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

&gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:185
&gt; +    setAssertionState(isSuspensionImminent == IsSuspensionImminent::Yes ? AssertionState::Suspended : AssertionState::Background);

I am some worries in cases where isSuspensionImminent is true. The previous code already seemed a bit risky but now it seems even riskier. We release the process assertion for the child process *before* even sending the async IPC. The odds of the child process receiving the prepareToSuspend IPC before suspending are not good :/

I am trying to think of a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626690</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 09:02:10 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 392690 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392690&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:185
&gt; &gt; +    setAssertionState(isSuspensionImminent == IsSuspensionImminent::Yes ? AssertionState::Suspended : AssertionState::Background);
&gt; 
&gt; I am some worries in cases where isSuspensionImminent is true. The previous
&gt; code already seemed a bit risky but now it seems even riskier. We release
&gt; the process assertion for the child process *before* even sending the async
&gt; IPC. The odds of the child process receiving the prepareToSuspend IPC before
&gt; suspending are not good :/
&gt; 
&gt; I am trying to think of a better solution.

https://bugs.webkit.org/show_bug.cgi?id=208701 should fix the same issue as here by making sure to call the completion handler asynchronously.

As of Imminent==Yes, I am not sure how much this will change things in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626693</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-06 09:08:10 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; Comment on attachment 392690 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=392690&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:185
&gt; &gt; &gt; +    setAssertionState(isSuspensionImminent == IsSuspensionImminent::Yes ? AssertionState::Suspended : AssertionState::Background);
&gt; &gt; 
&gt; &gt; I am some worries in cases where isSuspensionImminent is true. The previous
&gt; &gt; code already seemed a bit risky but now it seems even riskier. We release
&gt; &gt; the process assertion for the child process *before* even sending the async
&gt; &gt; IPC. The odds of the child process receiving the prepareToSuspend IPC before
&gt; &gt; suspending are not good :/
&gt; &gt; 
&gt; &gt; I am trying to think of a better solution.
&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=208701 should fix the same issue as
&gt; here by making sure to call the completion handler asynchronously.
&gt; 
&gt; As of Imminent==Yes, I am not sure how much this will change things in
&gt; practice.

I prefer the other patch, seems less risky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626702</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-06 09:33:40 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 208701 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392690</attachid>
            <date>2020-03-06 01:42:00 -0800</date>
            <delta_ts>2020-03-06 09:33:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208700-20200306104158.patch</filename>
            <type>text/plain</type>
            <size>3687</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmYjM4NjQ4NzI2OTJmMDkw
MDBlMWQ4NTA0MDBiZGQwZWE2NGI2Y2QuLmRjZWFlOTE4ZDgwN2RlNjQ2ZTY0NGQzZmUzMDFlN2Ex
YmM5MzZkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMDYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUHJvY2Vzc1Rocm90dGxl
cjo6c2VuZFByZXBhcmVUb1N1c3BlbmRJUEMgbW9yZSByb2J1c3QgdG8gc2VuZCBmYWlsdXJlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzAwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTkyMTMwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGRpZmZpY3VsdCB0byB0ZXN0IGFzIHdl
IGNoYW5nZSB0aGUgYmVoYXZpb3IgaW4gdGhlIGNhc2UgYSBzZW5kV2l0aEFzeW5jUmVwbHkgZmFp
bHMgc3luY2hyb25vdXNseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2VuZFByZXBhcmVUb1N1
c3BlbmRJUEMpOgorICAgICAgICBVcGRhdGUgdGhlIGFzc2VydGlvbiBzdGF0ZSBiZWZvcmUgc2Vu
ZGluZyB0aGUgYXN5bmMgSVBDIHNvIHRoYXQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB3aWwgYWx3
YXlzIGJlIGV4ZWN1dGVkCisgICAgICAgIGFmdGVyIHdlIHRha2UgYSBiYWNrZ3JvdW5kIGFzc2Vy
dGlvbi4KKwogMjAyMC0wMy0wNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBSZW1vdmUgcmVwb3J0aW5nIGZvciBzb21lIHdlbGwtdW5kZXJzdG9v
ZCBmcmFtZWJ1ZmZlciByb3V0aW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmNwcAppbmRleCA2OTBiMjQxNTUxOWRjNmEyNjNkZWU5YmVmOGJlNmRiNzEwZTgz
N2Y4Li4yOTAxZWI5ZGRhYmM3NmZlNjBkNmNiYzlhN2UxMjFiM2RjMWVkZjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMTgxLDIwICsxODEs
MjIgQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpjbGVhclBlbmRpbmdSZXF1ZXN0VG9TdXNwZW5k
KCkKIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNw
ZW5zaW9uSW1taW5lbnQgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiB7CiAgICAgUFJPQ0VTU1RIUk9U
VExFUl9SRUxFQVNFX0xPRygic2VuZFByZXBhcmVUb1N1c3BlbmRJUEM6IGlzU3VzcGVuc2lvbklt
bWluZW50OiAlZCIsIGlzU3VzcGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50
OjpZZXMpOworCisgICAgc2V0QXNzZXJ0aW9uU3RhdGUoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0g
SXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyA/IEFzc2VydGlvblN0YXRlOjpTdXNwZW5kZWQgOiBB
c3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCk7CisKICAgICBpZiAobV9wZW5kaW5nUmVxdWVzdFRv
U3VzcGVuZElEKSB7CiAgICAgICAgIC8vIERvIG5vdCBzZW5kIGEgbmV3IFByZXBhcmVUb1N1c3Bl
bmQgSVBDIGZvciBpbW1pbmVudCBzdXNwZW5zaW9uIGlmIHdlJ3ZlIGFscmVhZHkgc2VudCBhIG5v
bi1pbW1pbmVudCBQcmVwYXJlVG9TdXNwZW5kIElQQy4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6Olllcyk7CiAgICAg
ICAgIFBST0NFU1NUSFJPVFRMRVJfUkVMRUFTRV9MT0coInNlbmRQcmVwYXJlVG9TdXNwZW5kSVBD
OiBOb3Qgc2VuZGluZyBQcmVwYXJlVG9TdXNwZW5kKCkgSVBDIGJlY2F1c2UgdGhlcmUgaXMgYWxy
ZWFkeSBvbmUgaW4gZmxpZ2h0ICglIiBQUkl1NjQgIikiLCAqbV9wZW5kaW5nUmVxdWVzdFRvU3Vz
cGVuZElEKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5k
SUQgPSBnZW5lcmF0ZVByZXBhcmVUb1N1c3BlbmRSZXF1ZXN0SUQoKTsKLSAgICAgICAgUFJPQ0VT
U1RIUk9UVExFUl9SRUxFQVNFX0xPRygic2VuZFByZXBhcmVUb1N1c3BlbmRJUEM6IFNlbmRpbmcg
UHJlcGFyZVRvU3VzcGVuZCglIiBQUkl1NjQgIiwgaXNTdXNwZW5zaW9uSW1taW5lbnQ6ICVkKSBJ
UEMiLCAqbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElELCBpc1N1c3BlbnNpb25JbW1pbmVudCA9
PSBJc1N1c3BlbnNpb25JbW1pbmVudDo6WWVzKTsKLSAgICAgICAgbV9wcm9jZXNzLnNlbmRQcmVw
YXJlVG9TdXNwZW5kKGlzU3VzcGVuc2lvbkltbWluZW50LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHJlcXVlc3RUb1N1c3BlbmRJRCA9ICptX3BlbmRpbmdSZXF1ZXN0VG9T
dXNwZW5kSURdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMgJiYgbV9wZW5k
aW5nUmVxdWVzdFRvU3VzcGVuZElEICYmICptX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQgPT0g
cmVxdWVzdFRvU3VzcGVuZElEKQotICAgICAgICAgICAgICAgIHByb2Nlc3NSZWFkeVRvU3VzcGVu
ZCgpOwotICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNldEFzc2Vy
dGlvblN0YXRlKGlzU3VzcGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZ
ZXMgPyBBc3NlcnRpb25TdGF0ZTo6U3VzcGVuZGVkIDogQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91
bmQpOworICAgIG1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRCA9IGdlbmVyYXRlUHJlcGFyZVRv
U3VzcGVuZFJlcXVlc3RJRCgpOworICAgIFBST0NFU1NUSFJPVFRMRVJfUkVMRUFTRV9MT0coInNl
bmRQcmVwYXJlVG9TdXNwZW5kSVBDOiBTZW5kaW5nIFByZXBhcmVUb1N1c3BlbmQoJSIgUFJJdTY0
ICIsIGlzU3VzcGVuc2lvbkltbWluZW50OiAlZCkgSVBDIiwgKm1fcGVuZGluZ1JlcXVlc3RUb1N1
c3BlbmRJRCwgaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6Olll
cyk7CisgICAgbV9wcm9jZXNzLnNlbmRQcmVwYXJlVG9TdXNwZW5kKGlzU3VzcGVuc2lvbkltbWlu
ZW50LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RUb1N1c3Bl
bmRJRCA9ICptX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSURdKCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICh3ZWFrVGhpcyAmJiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQgJiYgKm1fcGVuZGlu
Z1JlcXVlc3RUb1N1c3BlbmRJRCA9PSByZXF1ZXN0VG9TdXNwZW5kSUQpCisgICAgICAgICAgICBw
cm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQcm9jZXNzVGhyb3R0
bGVyOjp1aUFzc2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>