<?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>217632</bug_id>
          
          <creation_ts>2020-10-12 14:06:26 -0700</creation_ts>
          <short_desc>[webkitcorepy] Attempt to terminate stuck processes before killing them</short_desc>
          <delta_ts>2020-10-12 15:55:00 -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>Tools / Tests</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="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697013</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-12 14:06:26 -0700</bug_when>
    <thetext>I encountered a case today where simply killing a stuck process was not sufficient, the process needed to be terminated. In order for us to trust webkitcorepy.run, we should terminate processes when they time out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697015</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-12 14:06:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/70222803&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697017</commentid>
    <comment_count>2</comment_count>
      <attachid>411153</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-12 14:09:06 -0700</bug_when>
    <thetext>Created attachment 411153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697028</commentid>
    <comment_count>3</comment_count>
      <attachid>411153</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2020-10-12 14:24:51 -0700</bug_when>
    <thetext>Comment on attachment 411153
Patch

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

&gt; Tools/ChangeLog:11
&gt; +        (run): Terminate stuck processes instead of killing them since termination is guaranteed to work.

Are we sure about this? Because `terminate` only sends SIGTERM, but `kill` sends SIGKILL, which is more powerful than the former.
Per https://docs.python.org/3/library/subprocess.html#subprocess.Popen.terminate
&amp; https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697038</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-12 14:43:53 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #3)
&gt; Comment on attachment 411153 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411153&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:11
&gt; &gt; +        (run): Terminate stuck processes instead of killing them since termination is guaranteed to work.
&gt; 
&gt; Are we sure about this? Because `terminate` only sends SIGTERM, but `kill`
&gt; sends SIGKILL, which is more powerful than the former.
&gt; Per
&gt; https://docs.python.org/3/library/subprocess.html#subprocess.Popen.terminate
&gt; &amp; https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

Oops! You&apos;re right, it&apos;s the communicate that&apos;s our issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697050</commentid>
    <comment_count>5</comment_count>
      <attachid>411163</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-12 14:54:18 -0700</bug_when>
    <thetext>Created attachment 411163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697057</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-12 14:57:38 -0700</bug_when>
    <thetext>To be a bit more specific, this was found with `git svn` being run from a repository that doesn&apos;t support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697070</commentid>
    <comment_count>7</comment_count>
      <attachid>411163</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2020-10-12 15:17:12 -0700</bug_when>
    <thetext>Comment on attachment 411163
Patch

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

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/subprocess_utils.py:137
&gt;              process.wait()

Not sure if this is related to the initial problem this patch intends to address.
Would this cause deadlock when
1. timeout is specified &amp;
2. huge amount of output is produced to subprocess.PIPE
3. program hits the timeout
Per the warning from https://docs.python.org/2.7/library/subprocess.html#subprocess.Popen.wait</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697076</commentid>
    <comment_count>8</comment_count>
      <attachid>411163</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-12 15:26:35 -0700</bug_when>
    <thetext>Comment on attachment 411163
Patch

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

&gt;&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/subprocess_utils.py:137
&gt;&gt;              process.wait()
&gt; 
&gt; Not sure if this is related to the initial problem this patch intends to address.
&gt; Would this cause deadlock when
&gt; 1. timeout is specified &amp;
&gt; 2. huge amount of output is produced to subprocess.PIPE
&gt; 3. program hits the timeout
&gt; Per the warning from https://docs.python.org/2.7/library/subprocess.html#subprocess.Popen.wait

We shouldn&apos;t have to worry about that case because we&apos;ve already killed the process and attempted to communicate....actually, I suspect that we run a risk of hanging a program in that case on line 129, but it shouldn&apos;t be a deadlock, it should just be until we consume the buffer. That being said, the existing code had the same problem, so I think we should defer such a fix until we have evidence we actually need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697097</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-12 15:54:59 -0700</bug_when>
    <thetext>Committed r268373: &lt;https://trac.webkit.org/changeset/268373&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411163.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411153</attachid>
            <date>2020-10-12 14:09:06 -0700</date>
            <delta_ts>2020-10-12 14:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217632-20201012140905.patch</filename>
            <type>text/plain</type>
            <size>2368</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODM2NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTEwLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBUZXJtaW5hdGUgc3R1Y2sgcHJvY2Vzc2VzIGlu
c3RlYWQgb2Yga2lsbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc2MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMjIyODAzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogQnVtcCB2
ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvc3VicHJvY2Vzc191dGlscy5weToKKyAgICAgICAgKHJ1bik6IFRlcm1pbmF0ZSBzdHVj
ayBwcm9jZXNzZXMgaW5zdGVhZCBvZiBraWxsaW5nIHRoZW0gc2luY2UgdGVybWluYXRpb24gaXMg
Z3VhcmFudGVlZCB0byB3b3JrLgorCiAyMDIwLTEwLTEyICBMdW1pbmcgWWluICA8bHVtaW5nX3lp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBXb3JrYXJvdW5kIGZvciBNQUNfT1NfWF9W
RVJTSU9OX01BSk9SIGluY29ycmVjdGx5IGluY2x1ZGluZyBtaW5vciB2ZXJzaW9uIHdoZW4gYnVp
bGRpbmcgCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2ODM2NykK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19p
bml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgZnJvbSB3ZWJraXRjb3Jl
cHkudGltZW91dCBpbXBvcnQgVGltZW91dAogZnJvbSB3ZWJraXRjb3JlcHkuc3VicHJvY2Vzc191
dGlscyBpbXBvcnQgVGltZW91dEV4cGlyZWQsIENvbXBsZXRlZFByb2Nlc3MsIHJ1bgogZnJvbSB3
ZWJraXRjb3JlcHkub3V0cHV0X2NhcHR1cmUgaW1wb3J0IExvZ2dlckNhcHR1cmUsIE91dHB1dENh
cHR1cmUsIE91dHB1dER1cGxpY2F0ZQogCi12ZXJzaW9uID0gVmVyc2lvbigwLCA0LCAxMykKK3Zl
cnNpb24gPSBWZXJzaW9uKDAsIDQsIDE0KQogCiBmcm9tIHdlYmtpdGNvcmVweS5hdXRvaW5zdGFs
bCBpbXBvcnQgUGFja2FnZSwgQXV0b0luc3RhbGwKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywg
MCk6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L3N1YnByb2Nlc3NfdXRpbHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9zdWJwcm9jZXNzX3V0aWxzLnB5CShyZXZp
c2lvbiAyNjgzNjcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L3N1YnByb2Nlc3NfdXRpbHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTExOCwxMSAr
MTE4LDExIEBAIGVsc2U6CiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNz
LmNvbW11bmljYXRlKGlucHV0KQogCiAgICAgICAgIGV4Y2VwdCBUaW1lb3V0LkV4Y2VwdGlvbjoK
LSAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCisgICAgICAgICAgICBwcm9jZXNzLnRlcm1pbmF0
ZSgpCiAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQog
ICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocG9wZW5hcmdzWzBdLCB0aW1lb3V0LCBv
dXRwdXQ9ZGVjb2RlKHN0ZG91dCksIHN0ZGVycj1kZWNvZGUoc3RkZXJyKSkKICAgICAgICAgZXhj
ZXB0IEJhc2VFeGNlcHRpb246Ci0gICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQorICAgICAgICAg
ICAgcHJvY2Vzcy50ZXJtaW5hdGUoKQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZmluYWxs
eToKICAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411163</attachid>
            <date>2020-10-12 14:54:18 -0700</date>
            <delta_ts>2020-10-12 15:54:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217632-20201012145418.patch</filename>
            <type>text/plain</type>
            <size>2686</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODM2OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTEwLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBdHRlbXB0IHRvIHRlcm1pbmF0ZSBzdHVjayBw
cm9jZXNzZXMgYmVmb3JlIGtpbGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NjMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDIy
MjgwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHk6
IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L3N1YnByb2Nlc3NfdXRpbHMucHk6CisgICAgICAgIChydW4pOiBLaWxsZWQg
cHJvY2Vzc2VzIHdpbGwgc29tZXRpbWVzIG5vdCBoYXZlIHN0ZG91dCBvciBzdGRlcnIsIHdoaWxl
IHRlcm1pbmF0ZWQgcHJvY2Vzc2VzIG9mdGVuIHdpbGwuCisKIDIwMjAtMTAtMTIgIEx1bWluZyBZ
aW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFdvcmthcm91bmQg
Zm9yIE1BQ19PU19YX1ZFUlNJT05fTUFKT1IgaW5jb3JyZWN0bHkgaW5jbHVkaW5nIG1pbm9yIHZl
cnNpb24gd2hlbiBidWlsZGluZyAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkocmV2
aXNpb24gMjY4MzY5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBm
cm9tIHdlYmtpdGNvcmVweS50aW1lb3V0IGltcG9ydCBUaW1lb3V0CiBmcm9tIHdlYmtpdGNvcmVw
eS5zdWJwcm9jZXNzX3V0aWxzIGltcG9ydCBUaW1lb3V0RXhwaXJlZCwgQ29tcGxldGVkUHJvY2Vz
cywgcnVuCiBmcm9tIHdlYmtpdGNvcmVweS5vdXRwdXRfY2FwdHVyZSBpbXBvcnQgTG9nZ2VyQ2Fw
dHVyZSwgT3V0cHV0Q2FwdHVyZSwgT3V0cHV0RHVwbGljYXRlCiAKLXZlcnNpb24gPSBWZXJzaW9u
KDAsIDQsIDEzKQordmVyc2lvbiA9IFZlcnNpb24oMCwgNCwgMTQpCiAKIGZyb20gd2Via2l0Y29y
ZXB5LmF1dG9pbnN0YWxsIGltcG9ydCBQYWNrYWdlLCBBdXRvSW5zdGFsbAogaWYgc3lzLnZlcnNp
b25faW5mbyA+ICgzLCAwKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvc3VicHJvY2Vzc191dGlscy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3N1YnByb2Nlc3Nf
dXRpbHMucHkJKHJldmlzaW9uIDI2ODM2OSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvc3VicHJvY2Vzc191dGlscy5weQkod29ya2luZyBjb3B5
KQpAQCAtMTE4LDEyICsxMTgsMjEgQEAgZWxzZToKICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0
ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoaW5wdXQpCiAKICAgICAgICAgZXhjZXB0IFRpbWVv
dXQuRXhjZXB0aW9uOgotICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKLSAgICAgICAgICAgIHN0
ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBwcm9jZXNz
LnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgLjUKKyAg
ICAgICAgICAgIHdoaWxlIHByb2Nlc3MucG9sbCgpIGlzIE5vbmUgYW5kIHRpbWUudGltZSgpIDwg
ZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCguMSkKKyAgICAgICAgICAgIGlm
IHByb2Nlc3MucG9sbCgpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkK
KyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9ICcnLCAnJworICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUo
KQogICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocG9wZW5hcmdzWzBdLCB0aW1lb3V0
LCBvdXRwdXQ9ZGVjb2RlKHN0ZG91dCksIHN0ZGVycj1kZWNvZGUoc3RkZXJyKSkKKwogICAgICAg
ICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCiAgICAg
ICAgICAgICByYWlzZQorCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBwcm9jZXNzLndh
aXQoKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>