<?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>183091</bug_id>
          
          <creation_ts>2018-02-23 12:44:09 -0800</creation_ts>
          <short_desc>REGRESSION(r221514): [GTK] UI process crash in WebKit::WaylandCompositor::Surface::flushPendingFrameCallbacks</short_desc>
          <delta_ts>2018-08-04 11:33:38 -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>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1493283</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1530638</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1535075</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1548530</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=175942</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1559255</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1560228</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1563787</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1564572</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>bugzilla</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1401787</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-23 12:44:09 -0800</bug_when>
    <thetext>We have 569 reports of this crash in Fedora:

Thread 1 (Thread 0x7f05c353aac0 (LWP 8748)):
#0  0x00007f05bdce0430 in WebKit::WaylandCompositor::Surface::flushPendingFrameCallbacks() (this=this@entry=0x7f05ab0f0d10) at /usr/src/debug/webkitgtk4-2.18.5-1.fc27.x86_64/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp:258
        resource = &lt;optimized out&gt;
        __for_range = &lt;synthetic pointer&gt;: {&lt;WTF::VectorBuffer&lt;wl_resource*, 0&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;wl_resource*&gt;&gt; = {m_buffer = 0x616d612d73656761, m_capacity = &lt;optimized out&gt;, m_size = &lt;optimized out&gt;}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
        __for_begin = 0x616d612d73656761
        list = {&lt;WTF::VectorBuffer&lt;wl_resource*, 0&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;wl_resource*&gt;&gt; = {m_buffer = 0x616d612d73656761, m_capacity = &lt;optimized out&gt;, m_size = &lt;optimized out&gt;}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
#1  0x00007f05bdce0496 in WebKit::WaylandCompositor::Surface::setWebPage(WebKit::WebPageProxy*) (this=0x7f05ab0f0d10, webPage=0x0) at /usr/src/debug/webkitgtk4-2.18.5-1.fc27.x86_64/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp:181
#2  0x00007f05bdcd8663 in WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland() (this=0x7f054839c030, __in_chrg=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk4-2.18.5-1.fc27.x86_64/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:61
#3  0x00007f05bdcd8689 in WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland() (this=0x7f054839c030, __in_chrg=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk4-2.18.5-1.fc27.x86_64/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:62
#4  0x00007f05bdcc2f3a in std::default_delete&lt;WebKit::AcceleratedBackingStore&gt;::operator()(WebKit::AcceleratedBackingStore*) const (this=&lt;optimized out&gt;, __ptr=&lt;optimized out&gt;) at /usr/include/c++/7/bits/unique_ptr.h:78
        __ptr = &lt;optimized out&gt;
        webView = 0x55e3c6bcbdd0 [EphyWebView]
#5  0x00007f05bdcc2f3a in std::unique_ptr&lt;WebKit::AcceleratedBackingStore, std::default_delete&lt;WebKit::AcceleratedBackingStore&gt; &gt;::reset(WebKit::AcceleratedBackingStore*) (__p=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/include/c++/7/bits/unique_ptr.h:376
        webView = 0x55e3c6bcbdd0 [EphyWebView]
#6  0x00007f05bdcc2f3a in std::unique_ptr&lt;WebKit::AcceleratedBackingStore, std::default_delete&lt;WebKit::AcceleratedBackingStore&gt; &gt;::operator=(decltype(nullptr)) (this=&lt;optimized out&gt;) at /usr/include/c++/7/bits/unique_ptr.h:312
        webView = 0x55e3c6bcbdd0 [EphyWebView]
#7  0x00007f05bdcc2f3a in webkitWebViewBaseDispose(GObject*) (gobject=0x55e3c6bcbdd0 [EphyWebView]) at /usr/src/debug/webkitgtk4-2.18.5-1.fc27.x86_64/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:508
        webView = 0x55e3c6bcbdd0 [EphyWebView]
#8  0x00007f05c2c56e5c in g_object_run_dispose (object=0x55e3c6bcbdd0 [EphyWebView]) at gobject.c:1100
        __func__ = &quot;g_object_run_dispose&quot;
#9  0x00007f05c1eee690 in gtk_overlay_forall (overlay=&lt;optimized out&gt;, include_internals=&lt;optimized out&gt;, callback=0x7f05c2003750 &lt;gtk_widget_destroy&gt;, callback_data=0x0) at gtkoverlay.c:625
        priv = 0x55e3c72845c0
        child = &lt;optimized out&gt;
        children = &lt;optimized out&gt;
        main_widget = &lt;optimized out&gt;
#10 0x00007f05c1deee0e in gtk_container_destroy (widget=0x55e3c72846f0 [GtkOverlay]) at gtkcontainer.c:1700
        container = 0x55e3c72846f0 [GtkOverlay]
        priv = 0x55e3c72845e0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401796</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-23 13:15:16 -0800</bug_when>
    <thetext>I guess the WaylandCompositor::Surface is already destroyed before the call to flushPendingFrameCallbacks? It&apos;s not clear.

The use of auto list = WTFMove(m_*CallbackList) throughout this file is confusing: I guess that swaps the member variable vector with the default-initialized empty vector, so it&apos;s probably OK, but maybe too clever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401985</commentid>
    <comment_count>2</comment_count>
      <attachid>334595</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-26 00:36:26 -0800</bug_when>
    <thetext>Created attachment 334595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402054</commentid>
    <comment_count>3</comment_count>
      <attachid>334595</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-26 08:47:33 -0800</bug_when>
    <thetext>Comment on attachment 334595
Patch

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

Thanks

&gt; Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp:354
&gt;                      auto* surface = static_cast&lt;WaylandCompositor::Surface*&gt;(wl_resource_get_user_data(resource));
&gt; +                    WaylandCompositor::singleton().willDestroySurface(surface);
&gt;                      delete surface;

Aha, so this is what I missed when staring at this bug the other day.

&gt; Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp:571
&gt; +            break;

You could equivalently use return instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402845</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-01 01:24:36 -0800</bug_when>
    <thetext>Committed r229126: &lt;https://trac.webkit.org/changeset/229126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446173</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-07-30 01:09:50 -0700</bug_when>
    <thetext>Michael, after giving my first son&apos;s blood I managed to get a backtrace with asan for the crash I am having lately that could be causing https://gitlab.gnome.org/GNOME/gtk/issues/1232 and it looks like it is this one? 

Carlos, do you know when this is going to be released in GNOME JHBuild conf?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447924</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-04 11:31:45 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #5)
&gt; Michael, after giving my first son&apos;s blood I managed to get a backtrace with
&gt; asan for the crash

Poor Simon :(

&gt; I am having lately that could be causing
&gt; https://gitlab.gnome.org/GNOME/gtk/issues/1232 and it looks like it is this
&gt; one? 
&gt; 
&gt; Carlos, do you know when this is going to be released in GNOME JHBuild conf?

This was committed way back in March. Exactly what version of WebKitGTK+ are you using? Could you please post the trace from asan?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447926</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-04 11:33:38 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; This was committed way back in March.

And it was backported for 2.19.92.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334595</attachid>
            <date>2018-02-26 00:36:26 -0800</date>
            <delta_ts>2018-02-26 08:47:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-wayland-crash.diff</filename>
            <type>text/plain</type>
            <size>2587</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTA2ZTFhMzI2YTAuLjBiODYxYTVhN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE4LTAyLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMjE1MTQpOiBbR1RLXSBVSSBwcm9jZXNzIGNy
YXNoIGluIFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OmZsdXNoUGVuZGluZ0Zy
YW1lQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODMwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnZhbGlkYXRlIHRoZSBzdXJmYWNlIGluIHRoZSBwYWdlIG1hcCB3aGVuIHRoZSBiYWNr
aW5nIHN0b3JlIGlzIGRlc3Ryb3llZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6d2ls
bERlc3Ryb3lTdXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3Np
dG9yLmg6CisKIDIwMTgtMDItMjUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgRm9udCBzbW9vdGhpbmcgZG9lc24ndCBnZXQgZGlzYWJsZWQgaWYgdGhlIHBy
ZWZlcmVuY2UgaXMgc2V0IGJlZm9yZSBsYXVuY2hpbmcgV2ViQ29udGVudCBwcm9jZXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRl
eCBkNmUxNzJkZDIxZC4uNmFhZDUyN2IwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAtMzUwLDYgKzM1MCw3IEBAIHN0YXRp
YyBjb25zdCBzdHJ1Y3Qgd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UgY29tcG9zaXRvckludGVyZmFj
ZSA9IHsKICAgICAgICAgICAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihzdXJmYWNl
UmVzb3VyY2UsICZzdXJmYWNlSW50ZXJmYWNlLCBuZXcgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZh
Y2UoKSwKICAgICAgICAgICAgICAgICBbXShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKSB7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5k
Q29tcG9zaXRvcjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2Up
KTsKKyAgICAgICAgICAgICAgICAgICAgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLndp
bGxEZXN0cm95U3VyZmFjZShzdXJmYWNlKTsKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHN1
cmZhY2U7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNTYyLDYgKzU2
MywxNiBAQCB2b2lkIFdheWxhbmRDb21wb3NpdG9yOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdl
UHJveHkmIHdlYlBhZ2UpCiAgICAgICAgIHN1cmZhY2UtPnNldFdlYlBhZ2UobnVsbHB0cik7CiB9
CiAKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OndpbGxEZXN0cm95U3VyZmFjZShTdXJmYWNlKiBz
dXJmYWNlKQoreworICAgIGZvciAoYXV0byBpdCA6IG1fcGFnZU1hcCkgeworICAgICAgICBpZiAo
aXQudmFsdWUgPT0gc3VyZmFjZSkgeworICAgICAgICAgICAgaXQudmFsdWUgPSBudWxscHRyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKaW5kZXggZmVh
NzAzNmEwNTAuLjBmYmExYTI2NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2UqLCB1aW50NjRfdCBwYWdlSUQpOwogICAg
IHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCB3aWxsRGVzdHJveVN1cmZhY2UoU3Vy
ZmFjZSopOwogCiAgICAgYm9vbCBnZXRUZXh0dXJlKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkJiwg
V2ViQ29yZTo6SW50U2l6ZSYpOwogCg==
</data>
<flag name="review"
          id="353345"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>