<?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>160229</bug_id>
          
          <creation_ts>2016-07-26 19:32:20 -0700</creation_ts>
          <short_desc>[GTK] ASSERTION FAILED: !m_adoptionIsRequired when Inspector Server is connected</short_desc>
          <delta_ts>2016-07-27 18:45:27 -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>WebKitGTK</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=160281</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214788</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-07-26 19:32:20 -0700</bug_when>
    <thetext>[GTK] ASSERTION FAILED: !m_adoptionIsRequired when Inspector Server is connected

trunk@203718

1) ./Tools/Scripts/build-webkit --gtk --debug --64-bit
2) export WEBKIT_INSPECTOR_SERVER=127.0.0.1:2999
3) ./Tools/Scripts/run-minibrowser --gtk --debug
4) Open http://127.0.0.1:2999/ in other browser
5) ASSERTION FAILED in UI process

ASSERTION FAILED: !m_adoptionIsRequired


&gt; #0  0x00007ff15526fc53 in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:323
&gt; #1  0x00007ff15d84515a in WTF::RefCountedBase::ref (this=0x7ff13e7ef804) at ../../Source/WTF/wtf/RefCounted.h:44
&gt; #2  0x00007ff15f639e97 in WTF::refIfNotNull&lt;WebCore::SocketStreamHandle&gt; (ptr=0x7ff13e7ef780) at ../../Source/WTF/wtf/PassRefPtr.h:34
&gt; #3  0x00007ff15f639ac7 in WTF::RefPtr&lt;WebCore::SocketStreamHandle&gt;::RefPtr (this=0x7ffeef1b33d0, ptr=0x7ff13e7ef780)
&gt;     at ../../Source/WTF/wtf/RefPtr.h:46
&gt; #4  0x00007ff15f638a3e in (anonymous namespace)::SocketStreamHandle::connected(&lt;unknown type in /home/fujii/work/webkit/w1/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1535d&gt;) (this=0x7ff13e7ef780, 
&gt;     socketConnection=&lt;unknown type in /home/fujii/work/webkit/w1/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1535d&gt;)
&gt;     at ../../Source/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp:88
&gt; #5  0x00007ff15f63874b in (anonymous namespace)::SocketStreamHandle::SocketStreamHandle (this=0x7ff13e7ef780, 
&gt;     socketConnection=0x105a600, client=...) at ../../Source/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp:73
&gt; #6  0x00007ff15ddced37 in (anonymous namespace)::SocketStreamHandle::create (socketConnection=0x105a600, client=...)
&gt;     at ../../Source/WebCore/platform/network/soup/SocketStreamHandle.h:53
&gt; #7  0x00007ff15ddce950 in (anonymous namespace)::connectionCallback (connection=0x105a600, server=0xf3a9e0)
&gt;     at ../../Source/WebKit2/UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp:50
&gt; #8  0x00007ff14975cc58 in ffi_call_unix64 () from /lib64/libffi.so.6
&gt; #9  0x00007ff14975c6ba in ffi_call () from /lib64/libffi.so.6
&gt; #10 0x00007ff156afb38e in g_cclosure_marshal_generic ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0
&gt; #11 0x00007ff156af9c72 in g_closure_invoke () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0
&gt; #12 0x00007ff156b15842 in signal_emit_unlocked_R ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0
&gt; #13 0x00007ff156b14c26 in g_signal_emit_valist ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0
&gt; #14 0x00007ff156b150d2 in g_signal_emit () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0
&gt; #15 0x00007ff156dddd41 in g_socket_service_incoming ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgio-2.0.so.0
&gt; #16 0x00007ff156dddea8 in g_socket_service_ready ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgio-2.0.so.0
&gt; #17 0x00007ff156ddfbd7 in g_task_return_now () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgio-2.0.so.0
&gt; #18 0x00007ff156ddfcdf in g_task_return () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgio-2.0.so.0
&gt; #19 0x00007ff156de049c in g_task_return_pointer () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgio-2.0.so.0
&gt; #20 0x00007ff156dd8607 in accept_ready () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgio-2.0.so.0
&gt; #21 0x00007ff156dcf693 in socket_source_dispatch ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgio-2.0.so.0
&gt; #22 0x00007ff1567d95f7 in g_main_dispatch () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libglib-2.0.so.0
&gt; #23 0x00007ff1567da42e in g_main_context_dispatch ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libglib-2.0.so.0
&gt; #24 0x00007ff1567da612 in g_main_context_iterate ()
&gt;    from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libglib-2.0.so.0
&gt; #25 0x00007ff1567daa38 in g_main_loop_run () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libglib-2.0.so.0
&gt; #26 0x00007ff1584b4f5f in gtk_main () from /home/fujii/work/webkit/w1/WebKitBuild/DependenciesGTK/Root/lib/libgtk-3.so.0
&gt; #27 0x0000000000416496 in main (argc=1, argv=0x7ffeef1b4218) at ../../Tools/MiniBrowser/gtk/main.c:326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214792</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-07-26 19:38:05 -0700</bug_when>
    <thetext>Soup port has two types of SocketStreamHandle constructor:

a) SocketStreamHandle::SocketStreamHandle(const URL&amp; url, SocketStreamHandleClient&amp; client)
b) SocketStreamHandle::SocketStreamHandle(GSocketConnection* socketConnection, SocketStreamHandleClient&amp; client)

(a) does relaxAdoptionRequirement(), but (b) does not.
WebSocketServerSoup uses (b).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214807</commentid>
    <comment_count>2</comment_count>
      <attachid>284672</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-07-26 21:11:41 -0700</bug_when>
    <thetext>Created attachment 284672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214813</commentid>
    <comment_count>3</comment_count>
      <attachid>284672</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-26 21:59:40 -0700</bug_when>
    <thetext>Comment on attachment 284672
Patch

Thanks! It was not obvious because the ref happens in connected and not in the constructor (but called from the constructor in any case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214816</commentid>
    <comment_count>4</comment_count>
      <attachid>284672</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 22:21:15 -0700</bug_when>
    <thetext>Comment on attachment 284672
Patch

Clearing flags on attachment: 284672

Committed r203762: &lt;http://trac.webkit.org/changeset/203762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214817</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 22:21:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214960</commentid>
    <comment_count>6</comment_count>
      <attachid>284672</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-27 10:35:36 -0700</bug_when>
    <thetext>Comment on attachment 284672
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        An assertion fails because refcount of SocketStreamHandle is
&gt; +        incremented before adoptRef, in the constructor of
&gt; +        SocketStreamHandle.  The constructor of SocketStreamHandle needs
&gt; +        to increment recount because it passes this pointer to libsoup.

This is an incorrect solution; relaxAdoptionRequirement should *not* be used here. The correct solution is to make the constructor private and make a public creation function which does the rest of the job of initializing the object, *after* the constructor has run and we have the object pointer inside a Ref already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214961</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-27 10:36:05 -0700</bug_when>
    <thetext>The same should be done for both constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215116</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-07-27 18:45:27 -0700</bug_when>
    <thetext>(In reply to comment #6)

Thank you so much. I will fix in another bug:

  Bug 160281 – [soup] Incorrect usage of relaxAdoptionRequirement in the constructor of SocketStreamHandle</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284672</attachid>
            <date>2016-07-26 21:11:41 -0700</date>
            <delta_ts>2016-07-26 22:21:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160229-20160726211030.patch</filename>
            <type>text/plain</type>
            <size>1812</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYzMTY3Yjc5NDU3ZmU2
NzVmMWI3NWMzYmE3MzFmYjVjZjc2NzQ4My4uOGQ4ZjMyMjExZjZlM2EwNzRjNjRhMjJmNjU0NjI4
MDhkODI2OGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA3LTI2ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtHVEtdIEFT
U0VSVElPTiBGQUlMRUQ6ICFtX2Fkb3B0aW9uSXNSZXF1aXJlZCB3aGVuIEluc3BlY3RvciBTZXJ2
ZXIgaXMgY29ubmVjdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbiBhc3NlcnRpb24gZmFpbHMgYmVjYXVzZSByZWZjb3VudCBvZiBTb2NrZXRTdHJl
YW1IYW5kbGUgaXMKKyAgICAgICAgaW5jcmVtZW50ZWQgYmVmb3JlIGFkb3B0UmVmLCBpbiB0aGUg
Y29uc3RydWN0b3Igb2YKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlLiAgVGhlIGNvbnN0cnVj
dG9yIG9mIFNvY2tldFN0cmVhbUhhbmRsZSBuZWVkcworICAgICAgICB0byBpbmNyZW1lbnQgcmVj
b3VudCBiZWNhdXNlIGl0IHBhc3NlcyB0aGlzIHBvaW50ZXIgdG8gbGlic291cC4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKTog
RG8KKyAgICAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCkgYXMgd2VsbCBhcyB0aGUgYW5v
dGhlciBjb25zdHJ1Y3Rvci4KKwogMjAxNi0wNy0yNSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2
aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIHJlcGVhdCgpIHN5bnRheCBz
aG91bGQgdGFrZSBhIDx0cmFjay1saXN0PiBhcmd1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwCmluZGV4IDJlODZlYzNjY2MzMzA0MTYzOWY0NjdmMmUwZmU1NDkxZDllOTM2ZTQuLmIz
ZDBkNDgyNmFiZTkzZTBiOGYwZjI0NDMyMWI1YzVlZWUxMTVmODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlU291cC5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGUoR1NvY2tldENvbm5lY3Rpb24qIHNvY2tldENvbm5lY3Rpb24sIFNvY2sK
IHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVw
IiwgdGhpcywgJm1fY2xpZW50KTsKICAgICBHUmVmUHRyPEdTb2NrZXRDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gc29ja2V0Q29ubmVjdGlvbjsKKyAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQo
KTsKICAgICBjb25uZWN0ZWQoV1RGTW92ZShjb25uZWN0aW9uKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>