Bug 129738

Summary: [GTK] MiniBrowser crashes when opening several urls passed as command line options
Product: WebKit Reporter: Carlos Garcia Campos <cgarcia>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: svillar
Priority: P2 Keywords: Gtk
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch svillar: review+

Description Carlos Garcia Campos 2014-03-05 05:31:29 PST
It happens when closing the third window, see:

Program received signal SIGSEGV, Segmentation fault.
g_type_check_instance (type_instance=type_instance@entry=0x6a6d70) at gtype.c:4076
4076		  TypeNode *node = lookup_type_node_I (type_instance->g_class->g_type);
(gdb) bt
#0  g_type_check_instance (type_instance=type_instance@entry=0x6a6d70) at gtype.c:4076
#1  0x00007ffff219fab4 in g_signal_handlers_disconnect_matched (instance=0x6a6d70, mask=(G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), signal_id=0, detail=0, closure=0x0, 
    func=0x7ffff5c75ee0 <allowModalDialogsChanged(_WebKitSettings*, _GParamSpec*, _WebKitWebView*)>, data=0x935530) at gsignal.c:2865
#2  0x00007ffff5c75e30 in webkitWebViewDisconnectSettingsSignalHandlers(_WebKitWebView*) () from WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.25
#3  0x00007ffff5c78870 in webkitWebViewDispose(_GObject*) () from WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.25
#4  0x00007ffff218d800 in g_object_run_dispose (object=0x935530) at gobject.c:1071
#5  0x00007ffff3c7090c in gtk_overlay_forall (overlay=0x8e5250, include_internals=<optimized out>, callback=0x7ffff3d77000 <gtk_widget_destroy>, callback_data=0x0) at gtkoverlay.c:552
#6  0x00007ffff3b8b991 in gtk_container_destroy (widget=0x8e5250) at gtkcontainer.c:1395
#7  0x00007ffff2186e82 in g_closure_invoke (closure=0x628300, return_value=0x0, n_param_values=1, param_values=0x7fffffffca80, invocation_hint=0x7fffffffca20) at gclosure.c:768
#8  0x00007ffff21995f4 in signal_emit_unlocked_R (node=node@entry=0x628370, detail=detail@entry=0, instance=instance@entry=0x8e5250, emission_return=emission_return@entry=0x0, 
    instance_and_params=instance_and_params@entry=0x7fffffffca80) at gsignal.c:3667
#9  0x00007ffff21a1222 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffcbf8) at gsignal.c:3307
#10 0x00007ffff21a1462 in g_signal_emit (instance=instance@entry=0x8e5250, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3363
#11 0x00007ffff3d84778 in gtk_widget_dispose (object=0x8e5250) at gtkwidget.c:11329
#12 0x00007ffff218d800 in g_object_run_dispose (object=0x8e5250) at gobject.c:1071
#13 0x00007ffff3b41ea2 in gtk_box_forall (container=<optimized out>, include_internals=<optimized out>, callback=0x7ffff3d77000 <gtk_widget_destroy>, callback_data=0x0) at gtkbox.c:2111
#14 0x00007ffff3b8b991 in gtk_container_destroy (widget=0x927690) at gtkcontainer.c:1395
#15 0x00007ffff2186e82 in g_closure_invoke (closure=0x628300, return_value=0x0, n_param_values=1, param_values=0x7fffffffcef0, invocation_hint=0x7fffffffce90) at gclosure.c:768
#16 0x00007ffff21995f4 in signal_emit_unlocked_R (node=node@entry=0x628370, detail=detail@entry=0, instance=instance@entry=0x927690, emission_return=emission_return@entry=0x0, 
    instance_and_params=instance_and_params@entry=0x7fffffffcef0) at gsignal.c:3667
#17 0x00007ffff21a1222 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd068) at gsignal.c:3307
#18 0x00007ffff21a1462 in g_signal_emit (instance=instance@entry=0x927690, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3363
#19 0x00007ffff3d84778 in gtk_widget_dispose (object=0x927690) at gtkwidget.c:11329
#20 0x00007ffff218d800 in g_object_run_dispose (object=0x927690) at gobject.c:1071
#21 0x00007ffff3d8f59e in gtk_window_forall (container=0x8964f0, include_internals=0, callback=0x7ffff3d77000 <gtk_widget_destroy>, callback_data=0x0) at gtkwindow.c:8069
#22 0x00007ffff3b8b991 in gtk_container_destroy (widget=0x8964f0) at gtkcontainer.c:1395
#23 0x00007ffff2186f08 in g_closure_invoke (closure=0x628300, return_value=0x0, n_param_values=1, param_values=0x7fffffffd360, invocation_hint=0x7fffffffd300) at gclosure.c:768
#24 0x00007ffff21995f4 in signal_emit_unlocked_R (node=node@entry=0x628370, detail=detail@entry=0, instance=instance@entry=0x8964f0, emission_return=emission_return@entry=0x0, 
    instance_and_params=instance_and_params@entry=0x7fffffffd360) at gsignal.c:3667
#25 0x00007ffff21a1222 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd4d8) at gsignal.c:3307
#26 0x00007ffff21a1462 in g_signal_emit (instance=instance@entry=0x8964f0, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3363
#27 0x00007ffff3d84778 in gtk_widget_dispose (object=0x8964f0) at gtkwidget.c:11329
#28 0x00007ffff218d800 in g_object_run_dispose (object=0x8964f0) at gobject.c:1071
#29 0x00007ffff3d7706e in gtk_widget_destroy (widget=<optimized out>) at gtkwidget.c:4307
#30 0x00007ffff3c33f93 in gtk_main_do_event (event=0x9940b0) at gtkmain.c:1629
#31 0x00007ffff3812012 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at gdkeventsource.c:364
#32 0x00007ffff1e94834 in g_main_dispatch (context=0x6590c0) at gmain.c:3066
#33 g_main_context_dispatch (context=context@entry=0x6590c0) at gmain.c:3641
#34 0x00007ffff1e94a78 in g_main_context_iterate (context=0x6590c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3712
#35 0x00007ffff1e94d3a in g_main_loop_run (loop=0xa0fea0) at gmain.c:3906
#36 0x00007ffff3c332e5 in gtk_main () at gtkmain.c:1190
#37 0x0000000000408449 in main ()
Comment 1 Carlos Garcia Campos 2014-03-05 05:35:13 PST
Created attachment 225875 [details]
Patch
Comment 2 Sergio Villar Senin 2014-03-05 07:39:31 PST
Comment on attachment 225875 [details]
Patch

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

r=me with comments

> Tools/MiniBrowser/gtk/main.c:286
> +        g_object_unref(webkitSettings);

I'd prefer using g_clear_object(&webkitSettings);

We could do the same above when we do:

    if (!addSettingsGroupToContext(context, webkitSettings)) {
        g_object_unref(webkitSettings);
        webkitSettings = 0;
    }
Comment 3 Carlos Garcia Campos 2014-03-06 04:00:59 PST
Committed r165181: <http://trac.webkit.org/changeset/165181>