<?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>163879</bug_id>
          
          <creation_ts>2016-10-23 23:58:49 -0700</creation_ts>
          <short_desc>REGRESSION (r206410): Sandbox violations beneath WebProcessProxy::platformIsBeingDebugged</short_desc>
          <delta_ts>2016-10-24 22:25:44 -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>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=162234</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1243621</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-10-23 23:58:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/28728735&gt;

After &lt;https://trac.webkit.org/r206410&gt; (for bug 162234), a sandboxed UI process may commit a sandbox violation when a Web Content process becomes unresponsive, as the former is not allowed to check whether the latter is being debugged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243623</commentid>
    <comment_count>1</comment_count>
      <attachid>292588</attachid>
    <who name="">mitz</who>
    <bug_when>2016-10-24 00:03:02 -0700</bug_when>
    <thetext>Created attachment 292588
Only check the Web process if the UI process is being g debugged</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243736</commentid>
    <comment_count>2</comment_count>
      <attachid>292588</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-24 09:58:01 -0700</bug_when>
    <thetext>Comment on attachment 292588
Only check the Web process if the UI process is being g debugged

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

&gt; Source/WebKit2/UIProcess/Cocoa/WebProcessProxyCocoa.mm:140
&gt; +    if (!processIsBeingDebugged(getpid()))
&gt; +        return false;
&gt; +
&gt; +    return processIsBeingDebugged(processIdentifier());

I like using short-circuit boolean algebra for this kind of thing, and I also believe this needs a why comment since the name of the function and implementation don’t match in what might be a surprising way. Something like this, only more accurate and better worded and maybe even broken into multiple lines:

    // Checking our own process first and then the target process means we won’t try something we don’t have permissions for in the production, sandboxed case.
    return processIsBeingDebugged(getpid()) &amp;&amp; processIsBeingDebugged(processIdentifier());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243737</commentid>
    <comment_count>3</comment_count>
      <attachid>292588</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-10-24 10:00:12 -0700</bug_when>
    <thetext>Comment on attachment 292588
Only check the Web process if the UI process is being g debugged

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

&gt; Source/WebKit2/ChangeLog:11
&gt; +        (WebKit::WebProcessProxy::platformIsBeingDebugged): If the UI process is not currently being

Why is this right? I almost never debug both processes, so at least as far as I&apos;m concerned, this completely breaks the intent of the original patch.

Also, why debugging the UI process signifies that it&apos;s sandbox is open?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243739</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-10-24 10:01:43 -0700</bug_when>
    <thetext>Darin&apos;s r+ got reverted accidentally, but I think that my questions are valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243748</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-24 10:15:24 -0700</bug_when>
    <thetext>I am not in any hurry to r+ this; I’m sure Dan thought it through and if he writes a comment like the one I requested it will likely help the rest of us understand his thinking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244007</commentid>
    <comment_count>6</comment_count>
      <attachid>292588</attachid>
    <who name="">mitz</who>
    <bug_when>2016-10-24 18:03:12 -0700</bug_when>
    <thetext>Comment on attachment 292588
Only check the Web process if the UI process is being g debugged

Thanks for your comments, Alexey. This mechanism isn’t going to be as useful as I wish it were, but I think it’s still worth keeping. I am going to write a patch that uses WebKit::processIsSandboxed() on the UI process, which is a much better way to predict if checking whether checking the state of another process will succeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244052</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-10-24 19:47:30 -0700</bug_when>
    <thetext>I guess another way to predict if this will work is to perform a dry run using sandbox_check. Of course, that check may break in the future if internal implementation of this sysctl changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244104</commentid>
    <comment_count>8</comment_count>
      <attachid>292720</attachid>
    <who name="">mitz</who>
    <bug_when>2016-10-24 22:17:22 -0700</bug_when>
    <thetext>Created attachment 292720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244109</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-10-24 22:25:44 -0700</bug_when>
    <thetext>Committed &lt;https://trac.webkit.org/r207807&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292588</attachid>
            <date>2016-10-24 00:03:02 -0700</date>
            <delta_ts>2016-10-24 18:03:12 -0700</delta_ts>
            <desc>Only check the Web process if the UI process is being g debugged</desc>
            <filename>bug-163879-20161023235919.patch</filename>
            <type>text/plain</type>
            <size>2112</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzczNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEwLTIzICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIwNjQxMCk6
IFNhbmRib3ggdmlvbGF0aW9ucyBiZW5lYXRoIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jc0Jl
aW5nRGVidWdnZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Mzg3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg3Mjg3MzU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnByb2Nlc3NJc0JlaW5n
RGVidWdnZWQpOiBGYWN0b3JlZCBvdXQgb2YgdGhlIGJlbG93IGZ1bmN0aW9uLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtSXNCZWluZ0RlYnVnZ2VkKTogSWYgdGhl
IFVJIHByb2Nlc3MgaXMgbm90IGN1cnJlbnRseSBiZWluZworICAgICAgICAgIGRlYnVnZ2VkLCBh
dm9pZCBjaGVja2luZyBpZiB0aGUgV2ViIHByb2Nlc3MgaXMgYmVpbmcgZGVidWdnZWQuCisKIDIw
MTYtMTAtMjMgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFJlbW92ZSBETyBOT1QgTU9ESUZZIGhlYWRlcnMgZnJvbSBmaWxlcyB0aGF0
IGFyZSBubyBsb25nZXIgYXV0b2dlbmVyYXRlZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkocmV2aXNpb24g
MjA3NzIyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMTAgKzEyMSwxMCBAQCBSZWZQdHI8T2Jq
Q09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6CiAgICAgcmV0dXJuIE9iakNPYmplY3RHcmFw
aDo6Y3JlYXRlKE9iakNPYmplY3RHcmFwaDo6dHJhbnNmb3JtKG9iamVjdEdyYXBoLnJvb3RPYmpl
Y3QoKSwgVHJhbnNmb3JtZXIoKSkuZ2V0KCkpOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6
cGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKSBjb25zdAorc3RhdGljIGJvb2wgcHJvY2Vzc0lzQmVp
bmdEZWJ1Z2dlZChwaWRfdCBwaWQpCiB7CiAgICAgc3RydWN0IGtpbmZvX3Byb2MgaW5mbzsKLSAg
ICBpbnQgbWliW10gPSB7IENUTF9LRVJOLCBLRVJOX1BST0MsIEtFUk5fUFJPQ19QSUQsIHByb2Nl
c3NJZGVudGlmaWVyKCkgfTsKKyAgICBpbnQgbWliW10gPSB7IENUTF9LRVJOLCBLRVJOX1BST0Ms
IEtFUk5fUFJPQ19QSUQsIHBpZCB9OwogICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKGluZm8pOwog
ICAgIGlmIChzeXNjdGwobWliLCBXVEZfQVJSQVlfTEVOR1RIKG1pYiksICZpbmZvLCAmc2l6ZSwg
bnVsbHB0ciwgMCkgPT0gLTEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMiw0ICsxMzIs
MTIgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtSXNCZWluZ0RlYgogICAgIHJldHVy
biBpbmZvLmtwX3Byb2MucF9mbGFnICYgUF9UUkFDRUQ7CiB9CiAKK2Jvb2wgV2ViUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFwcm9jZXNz
SXNCZWluZ0RlYnVnZ2VkKGdldHBpZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHByb2Nlc3NJc0JlaW5nRGVidWdnZWQocHJvY2Vzc0lkZW50aWZpZXIoKSk7Cit9CisK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292720</attachid>
            <date>2016-10-24 22:17:22 -0700</date>
            <delta_ts>2016-10-24 22:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163879-20161024221337.patch</filename>
            <type>text/plain</type>
            <size>1808</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzgwNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEwLTI0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIwNjQxMCk6
IFNhbmRib3ggdmlvbGF0aW9ucyBiZW5lYXRoIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jc0Jl
aW5nRGVidWdnZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Mzg3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg3Mjg3MzU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6cGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQpOiBDaGVjayBpZiB0aGUgY3VycmVudCBwcm9jZXNz
LCB3aGljaCBpcworICAgICAgICAgIHRoZSBVSSBwcm9jZXNzLCBpcyBzYW5kYm94ZWQgYmVmb3Jl
IHRyeWluZyB0byBmaW5kIG91dCBpZiB0aGUgV2ViIHByb2Nlc3MgaXMgYmVpbmcKKyAgICAgICAg
ICBkZWJ1Z2dlZC4KKwogMjAxNi0xMC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTDo6cG9ydCBzaG91bGQgcmV0dXJuIE9wdGlvbmFs
PHVpbnQxNl90PgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjA3ODAzKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAog
I2ltcG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCisjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tUeXBlUmVm
V3JhcHBlci5oIgpAQCAtMTIzLDYgKzEyNCwxMCBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBX
ZWJQcm9jZXNzUHJveHk6CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdE
ZWJ1Z2dlZCgpIGNvbnN0CiB7CisgICAgLy8gSWYgdGhlIFVJIHByb2Nlc3MgaXMgc2FuZGJveGVk
LCBpdCBjYW5ub3QgZmluZCBvdXQgd2hldGhlciBvdGhlciBwcm9jZXNzZXMgYXJlIGJlaW5nIGRl
YnVnZ2VkLgorICAgIGlmIChwcm9jZXNzSXNTYW5kYm94ZWQoZ2V0cGlkKCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBzdHJ1Y3Qga2luZm9fcHJvYyBpbmZvOwogICAgIGludCBtaWJb
XSA9IHsgQ1RMX0tFUk4sIEtFUk5fUFJPQywgS0VSTl9QUk9DX1BJRCwgcHJvY2Vzc0lkZW50aWZp
ZXIoKSB9OwogICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKGluZm8pOwo=
</data>
<flag name="review"
          id="315723"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>