<?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>199072</bug_id>
          
          <creation_ts>2019-06-20 11:16:15 -0700</creation_ts>
          <short_desc>Resolve frequent crashes in String::isolatedCopy inside topPrivatelyControlledDomain call</short_desc>
          <delta_ts>2019-06-20 13:52:51 -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>WebKit Misc.</component>
          <version>Safari 10</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>rniwa</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1546583</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-20 11:16:15 -0700</bug_when>
    <thetext>Crash data indicates that we are frequently crashing while performing &apos;String::isolatedCopy&apos; inside topPrivatelyControlledDomain calls. This seem to be primarily related to multiple threads attempting to initialize RegistrableDomain members at the same time.

Code review showed the potential for a thread contention issue.

This patch resolves the problem in two ways:

(1) A thread safety issue in the implementation of WebCore::topPrivatelyControlledDomain is corrected. (Note: This is an issue because we build WebKit with --fno-threadsafe-statics).
(2) I added a call during NetworkProcess initialization (before spawning multiple threads) to initialize the domain cache. This change is probably not needed, but adds another layer of defense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546584</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-20 11:16:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/51428162&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546593</commentid>
    <comment_count>2</comment_count>
      <attachid>372575</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-20 11:42:14 -0700</bug_when>
    <thetext>Created attachment 372575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546624</commentid>
    <comment_count>3</comment_count>
      <attachid>372575</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-20 13:08:29 -0700</bug_when>
    <thetext>Comment on attachment 372575
Patch

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

&gt; Source/WebKit/ChangeLog:17
&gt; +        (2) Call WebCore::topPrivatelyControlledDomain during NetworkProcess initialization (before

We probably do not need 2 given we have 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546630</commentid>
    <comment_count>4</comment_count>
      <attachid>372575</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-20 13:12:52 -0700</bug_when>
    <thetext>Comment on attachment 372575
Patch

Rejecting attachment 372575 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 372575, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebKit/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/12534056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546642</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-20 13:39:33 -0700</bug_when>
    <thetext>Committed r246652: &lt;https://trac.webkit.org/changeset/246652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546644</commentid>
    <comment_count>6</comment_count>
      <attachid>372575</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-06-20 13:42:29 -0700</bug_when>
    <thetext>Comment on attachment 372575
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:293
&gt; +    UNUSED_PARAM(initialized);

This is not a parameter, so using the UNUSED_PARAM macro is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546648</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-20 13:52:51 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #6)
&gt; Comment on attachment 372575 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=372575&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:293
&gt; &gt; +    UNUSED_PARAM(initialized);
&gt; 
&gt; This is not a parameter, so using the UNUSED_PARAM macro is incorrect.

I removed that code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372575</attachid>
            <date>2019-06-20 11:42:14 -0700</date>
            <delta_ts>2019-06-20 13:12:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199072-20190620114213.patch</filename>
            <type>text/plain</type>
            <size>4530</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU3YTE3ZDA0ZDRiZmMy
ZGQ5ODA4NTE2OWRhNjk3NzBiZjgyMDQ5Yi4uMWM3ZGRhYjVmZjdlNThkZGMzODlmOTk2Nzc3MDNl
Y2I3NzVkZjE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA2LTIwICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlc29sdmUgZnJlcXVl
bnQgY3Jhc2hlcyBpbiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkwNzIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzUxNDI4MTYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENyYXNoIGRhdGEgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIGZyZXF1ZW50bHkg
Y3Jhc2hpbmcgd2hlbiBtdWx0aXBsZSB0aHJlYWRzIGNhbGwKKyAgICAgICAgV2ViQ29yZTo6dG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbi4gCisKKyAgICAgICAgQ29kZSByZXZpZXcgc2hvd2Vk
IHRoZSBwb3RlbnRpYWwgZm9yIGEgdGhyZWFkIGNvbnRlbnRpb24gaXNzdWUsIHNpbmNlIFdlYktp
dCBidWlsZHMKKyAgICAgICAgd2l0aCAnLS1mbm8tdGhyZWFkc2FmZS1zdGF0aWNzJy4KKworICAg
ICAgICBUaGlzIHBhdGNoIHJlc29sdmVzIHRoZSBwcm9ibGVtIGluIHR3byB3YXlzOgorICAgICAg
ICAoMSkgQ29ycmVjdCB0aGUgdGhyZWFkIHNhZmV0eSBpc3N1ZSBpbiBXZWJDb3JlOjp0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluLgorICAgICAgICAoMikgQ2FsbCBXZWJDb3JlOjp0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluIGR1cmluZyBOZXR3b3JrUHJvY2VzcyBpbml0aWFsaXphdGlv
biAoYmVmb3JlCisgICAgICAgIG90aGVyIHRocmVhZHMgYXJlIHNwYXduZWQgaW4gdGhlIHByb2Nl
c3MpIHRvIGluaXRpYWxpemUgdGhlIGRvbWFpbiBjYWNoZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QdWJsaWNTdWZmaXhNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluKTogT25seSBpbnN0YW50aWF0ZSB0aGUgc3RhdGljIGNhY2hlIGFmdGVy
IHRoZQorICAgICAgICBjdXJyZW50IHRocmVhZCBoYXMgYWNoaWV2ZWQgaXRzIGxvY2suCisKIDIw
MTktMDYtMjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gU3BlY3VsYXRpdmUgYnVpbGQgZml4IGZvciB3YXRjaE9TIGFmdGVyIHIyNDY2MzEu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDRkODUzYTE0NmI3ZGExYWZmZmUyM2M0ZjQ5ZmQ4MjM1MjE1YWY3YjEuLjYz
OGVmYjUxNzEwZjVjMjUwNTRlMDkwYWI4YTVmMTY4ZTNjNDE1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTktMDYtMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVzb2x2ZSBmcmVxdWVudCBjcmFzaGVzIGluIHRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5OTA3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE0MjgxNjI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jhc2ggZGF0YSBpbmRpY2F0
ZXMgdGhhdCB3ZSBhcmUgZnJlcXVlbnRseSBjcmFzaGluZyB3aGVuIG11bHRpcGxlIHRocmVhZHMg
Y2FsbAorICAgICAgICBXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluLiAKKwor
ICAgICAgICBDb2RlIHJldmlldyBzaG93ZWQgdGhlIHBvdGVudGlhbCBmb3IgYSB0aHJlYWQgY29u
dGVudGlvbiBpc3N1ZSwgc2luY2UgV2ViS2l0IGJ1aWxkcworICAgICAgICB3aXRoICctLWZuby10
aHJlYWRzYWZlLXN0YXRpY3MnLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVzb2x2ZXMgdGhlIHBy
b2JsZW0gaW4gdHdvIHdheXM6CisgICAgICAgICgxKSBDb3JyZWN0IHRoZSB0aHJlYWQgc2FmZXR5
IGlzc3VlIGluIFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4uCisgICAgICAg
ICgyKSBDYWxsIFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4gZHVyaW5nIE5l
dHdvcmtQcm9jZXNzIGluaXRpYWxpemF0aW9uIChiZWZvcmUKKyAgICAgICAgb3RoZXIgdGhyZWFk
cyBhcmUgc3Bhd25lZCBpbiB0aGUgcHJvY2VzcykgdG8gaW5pdGlhbGl6ZSB0aGUgZG9tYWluIGNh
Y2hlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKTogSW5pdGlhbGl6ZSB0aGUgZG9t
YWluIGNhY2hlIGR1cmluZyBsYXVuY2guCisKIDIwMTktMDYtMjAgIEFsZXhhbmRlciBNaWtoYXls
ZW5rbyAgPGV4YWxtNzY1OUBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gRW5hYmxlIG5hdmln
YXRpb24gc3dpcGUgbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1B1YmxpY1N1ZmZpeE1hYy5tbQppbmRleCA2NjhkY2UwOWZhY2U1NTg4NzNiYmViODVkZDA0OTdi
YTVkMzQ0ZGNmLi5iODUwNmFiNzZlMzI0OGM1NTlkZTU5YmViZDhhYmMxYWJmNjY1ZGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KQEAgLTUw
LDEzICs1MCwxMyBAQCBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBT
dHJpbmcmIGRvbWFpbikKICAgICBpZiAoIWRvbWFpbi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJl
dHVybiBkb21haW47CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcs
IFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gY2FjaGU7CiAgICAgc3RhdGljIExv
Y2sgY2FjaGVMb2NrOwotCi0gICAgYXV0byBpc29sYXRlZERvbWFpbiA9IGRvbWFpbi5pc29sYXRl
ZENvcHkoKTsKLQogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2FjaGVMb2NrKTsKIAorICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+PiBjYWNoZTsKKworICAgIGF1dG8gaXNvbGF0ZWREb21haW4gPSBkb21h
aW4uaXNvbGF0ZWRDb3B5KCk7CisgICAgCiAgICAgY29uc3RleHByIGF1dG8gbWF4aW11bVNpemVU
b1ByZXZlbnRVbmxpbWl0ZWRHcm93dGggPSAxMjg7CiAgICAgaWYgKGNhY2hlLmdldCgpLnNpemUo
KSA9PSBtYXhpbXVtU2l6ZVRvUHJldmVudFVubGltaXRlZEdyb3d0aCkKICAgICAgICAgY2FjaGUu
Z2V0KCkucmVtb3ZlKGNhY2hlLmdldCgpLnJhbmRvbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTJlZDE1ZTI1ZWY2ZTQyZGQ0
ODI4OTA2MTg4YWVlMGFkNzc1OTRmYi4uOTU0NjczNjAzMDkzM2ZlNTRkMmM4ZjUxYjExMTU3NGE1
OTkxOTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKQEAgLTI4OSw2ICsyODksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJgogCiAg
ICAgV1RGOjpUaHJlYWQ6OnNldEN1cnJlbnRUaHJlYWRJc1VzZXJJbml0aWF0ZWQoKTsKICAgICBB
dG9tU3RyaW5nOjppbml0KCk7CisgICAgYXV0byBpbml0aWFsaXplZCA9IHRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW4oIm51bGxPcmlnaW4iX3MpOworICAgIFVOVVNFRF9QQVJBTShpbml0aWFs
aXplZCk7CiAKICAgICBtX3N1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyID0gcGFyYW1ldGVy
cy5zaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlcjsKICAgICBpZiAoIW1fc3VwcHJl
c3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIpIHsK
</data>
<flag name="review"
          id="388365"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="388372"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>