<?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>121099</bug_id>
          
          <creation_ts>2013-09-10 09:48:12 -0700</creation_ts>
          <short_desc>[WK2][GTK] Frequent crashes when showing context menus in Debug builds</short_desc>
          <delta_ts>2013-09-10 11:34: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>WebKitGTK</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>svillar</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>927343</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-09-10 09:48:12 -0700</bug_when>
    <thetext>It&apos;s becoming quite common to get a crash in the UIProcess when showing context menus at least with Debug builds. After debugging it a bit it looks like the problem happens inside WebContextMenuProxyGtk::contextMenuItemVisibilityChanged, here

    GOwnPtr&lt;GList&gt; items(gtk_container_get_children(GTK_CONTAINER(menu)));

Basically the problem is that the menu reference is invalid. That likely means that the menu was freed and then we&apos;re trying to use it. Since this is a signal callback the problem is likely that we aren&apos;t disconnecting the signals when destroying the context menu.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927349</commentid>
    <comment_count>1</comment_count>
      <attachid>211208</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-09-10 09:52:44 -0700</bug_when>
    <thetext>Created attachment 211208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927354</commentid>
    <comment_count>2</comment_count>
      <attachid>211208</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-10 09:58:05 -0700</bug_when>
    <thetext>Comment on attachment 211208
Patch

I wonder if we could use g_signal_connect_object and we don&apos;t need to keep a map of signal handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927365</commentid>
    <comment_count>3</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-09-10 10:12:19 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 211208 [details])
&gt; I wonder if we could use g_signal_connect_object and we don&apos;t need to keep a map of signal handlers.

You mean using the GtkMenu as the object? Yeah I guess that could work as well...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927378</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-10 10:39:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 211208 [details] [details])
&gt; &gt; I wonder if we could use g_signal_connect_object and we don&apos;t need to keep a map of signal handlers.
&gt; 
&gt; You mean using the GtkMenu as the object? Yeah I guess that could work as well...

I meant for the GtkAction, but doesn&apos;t make sense since it&apos;s the menu what is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927379</commentid>
    <comment_count>5</comment_count>
      <attachid>211208</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-10 10:42:21 -0700</bug_when>
    <thetext>Comment on attachment 211208
Patch

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

LGTM

&gt; Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:174
&gt; +    for (HashMap&lt;unsigned long, GtkAction*&gt;::const_iterator iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter)
&gt; +        g_signal_handler_disconnect(iter-&gt;value, iter-&gt;key);

I&apos;m not C++ expert, but now that we are using C++ 11 features I wonder if we could use auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927385</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-09-10 11:14:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 211208 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211208&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:174
&gt; &gt; +    for (HashMap&lt;unsigned long, GtkAction*&gt;::const_iterator iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter)
&gt; &gt; +        g_signal_handler_disconnect(iter-&gt;value, iter-&gt;key);
&gt; 
&gt; I&apos;m not C++ expert, but now that we are using C++ 11 features I wonder if we could use auto here.

I think you&apos;re right. See Source/JavaScriptCore/runtime/MapData.cpp for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927393</commentid>
    <comment_count>7</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-09-10 11:34:00 -0700</bug_when>
    <thetext>Committed r155459: &lt;http://trac.webkit.org/changeset/155459&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211208</attachid>
            <date>2013-09-10 09:52:44 -0700</date>
            <delta_ts>2013-09-10 10:42:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121099-20130910185239.patch</filename>
            <type>text/plain</type>
            <size>3690</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhY2U1OTZiMjQwYzYy
MDIwMTVkYzYzZjI1ZTk1Y2VmODBhOTdmMS4uNmUwN2Y4ZGFhNThhN2E0ZjFkNzI3Y2YwNjRiYjFi
Njk0NWE0YjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA5LTEwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdW0dU
S10gRnJlcXVlbnQgY3Jhc2hlcyB3aGVuIHNob3dpbmcgY29udGV4dCBtZW51cyBpbiBEZWJ1ZyBi
dWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERp
c2Nvbm5lY3Qgc2lnbmFsIGhhbmRsZXJzIHdoZW4gZGVzdHJveWluZyB0aGUgY29udGV4dCBtZW51
IHByb3h5CisgICAgICAgIG9iamVjdC4gVGhpcyBhdm9pZHMgdXNlLWFmdGVyLWZyZWUgY3Jhc2hl
cyB3aGVuIG9wZW5pbmcgc2V2ZXJhbAorICAgICAgICBjb250ZXh0IG1lbnVzIGluIGEgcm93Lgor
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6YXBwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6fldlYkNvbnRleHRNZW51UHJveHlHdGsp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oOgorCiAy
MDEzLTA5LTA5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
R0xdIEFsbG93IG11bHRpdGhyZWFkZWQgT3BlbkdMIGNvbnRleHRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcAppbmRl
eCBkN2QwNjgzNDAzNmQ0NTBkYTg0NzBhNWQ0ODUyYzI4NmZiMGY4NTlkLi5hMmVjMzU3MzBkMmZi
YTNkMTEzZTBlYTBmYmRlMmU5MWM5NWU3MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKQEAgLTg0LDE2ICs4
NCwxOSBAQCBzdGF0aWMgdm9pZCBjb250ZXh0TWVudUl0ZW1WaXNpYmlsaXR5Q2hhbmdlZChHdGtB
Y3Rpb24qIGFjdGlvbiwgR1BhcmFtU3BlYyosIFdlYgogCiB2b2lkIFdlYkNvbnRleHRNZW51UHJv
eHlHdGs6OmFwcGVuZChDb250ZXh0TWVudUl0ZW0mIG1lbnVJdGVtKQogeworICAgIHVuc2lnbmVk
IGxvbmcgc2lnbmFsSGFuZGxlcklkOwogICAgIEd0a0FjdGlvbiogYWN0aW9uID0gbWVudUl0ZW0u
Z3RrQWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbikgewogICAgICAgICBzd2l0Y2ggKG1lbnVJdGVt
LnR5cGUoKSkgewogICAgICAgICBjYXNlIEFjdGlvblR5cGU6CiAgICAgICAgIGNhc2UgQ2hlY2th
YmxlQWN0aW9uVHlwZToKICAgICAgICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGFj
dGlvbiksIGdDb250ZXh0TWVudUFjdGlvbklkLCBHSU5UX1RPX1BPSU5URVIobWVudUl0ZW0uYWN0
aW9uKCkpKTsKLSAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoYWN0aW9uLCAiYWN0aXZhdGUi
LCBHX0NBTExCQUNLKGNvbnRleHRNZW51SXRlbUFjdGl2YXRlZENhbGxiYWNrKSwgbV9wYWdlKTsK
KyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoYWN0aW9uLCAi
YWN0aXZhdGUiLCBHX0NBTExCQUNLKGNvbnRleHRNZW51SXRlbUFjdGl2YXRlZENhbGxiYWNrKSwg
bV9wYWdlKTsKKyAgICAgICAgICAgIG1fc2lnbmFsSGFuZGxlcnMuc2V0KHNpZ25hbEhhbmRsZXJJ
ZCwgYWN0aW9uKTsKICAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICAgICAgY2FzZSBT
dWJtZW51VHlwZToKLSAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoYWN0aW9uLCAibm90aWZ5
Ojp2aXNpYmxlIiwgR19DQUxMQkFDSyhjb250ZXh0TWVudUl0ZW1WaXNpYmlsaXR5Q2hhbmdlZCks
IHRoaXMpOworICAgICAgICAgICAgc2lnbmFsSGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVjdChh
Y3Rpb24sICJub3RpZnk6OnZpc2libGUiLCBHX0NBTExCQUNLKGNvbnRleHRNZW51SXRlbVZpc2li
aWxpdHlDaGFuZ2VkKSwgdGhpcyk7CisgICAgICAgICAgICBtX3NpZ25hbEhhbmRsZXJzLnNldChz
aWduYWxIYW5kbGVySWQsIGFjdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBTZXBhcmF0b3JUeXBlOgogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjcsNiArMTcwLDkgQEAg
V2ViQ29udGV4dE1lbnVQcm94eUd0azo6V2ViQ29udGV4dE1lbnVQcm94eUd0ayhHdGtXaWRnZXQq
IHdlYlZpZXcsIFdlYlBhZ2VQcm94eSoKIAogV2ViQ29udGV4dE1lbnVQcm94eUd0azo6fldlYkNv
bnRleHRNZW51UHJveHlHdGsoKQogeworICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBH
dGtBY3Rpb24qPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fc2lnbmFsSGFuZGxlcnMuYmVnaW4o
KTsgaXRlciAhPSBtX3NpZ25hbEhhbmRsZXJzLmVuZCgpOyArK2l0ZXIpCisgICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJfZGlzY29ubmVjdChpdGVyLT52YWx1ZSwgaXRlci0+a2V5KTsKKwogICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXRUJLSVRfV0VCX1ZJRVdf
QkFTRShtX3dlYlZpZXcpLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAppbmRleCAxNDQ2NTVmNGQ1ZGUwZjVi
ZjkxOTljZmY1YjgyYWFjOWUxZjExMWViLi5kZWQ0YjdhODQ4MjNmYThhMDkyNDI0MGU2ZTY2YTkz
YjZlZThmODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNv
bnRleHRNZW51UHJveHlHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YkNvbnRleHRNZW51UHJveHlHdGsuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51UHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC02Miw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFn
ZVByb3h5KiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6Q29udGV4dE1lbnUgbV9tZW51OwogICAgIFdl
YkNvcmU6OkludFBvaW50IG1fcG9wdXBQb3NpdGlvbjsKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxv
bmcsIEd0a0FjdGlvbio+IG1fc2lnbmFsSGFuZGxlcnM7CiB9OwogCiAK
</data>
<flag name="review"
          id="233267"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>