Bug 132127

Summary: [GTK] Plugin process crashes with GTK2 windowed plugins
Product: WebKit Reporter: Carlos Garcia Campos <cgarcia>
Component: WebKit2Assignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: gustavo
Priority: P2 Keywords: Gtk
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch mrobinson: review+

Description Carlos Garcia Campos 2014-04-24 09:10:27 PDT
It happens sometimes because the socket is used before the plug has been added. A runtime critical warning can be seen:

(WebKitPluginProcess2:24445): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

And the it sometimes ends up crashing:

(gdb) bt
#0  0x00007ffff4ecd250 in gdk_window_add_update_window (window=window@entry=0x2855c60) at gdkwindow.c:5309
#1  0x00007ffff4ed027d in impl_window_add_update_area (impl_window=0x2855c60, region=0x285b610) at gdkwindow.c:5878
#2  0x00007ffff4ed056d in gdk_window_invalidate_maybe_recurse_full (window=<optimized out>, region=<optimized out>, clear_bg=CLEAR_BG_ALL, child_func=<optimized out>, 
    user_data=<optimized out>) at gdkwindow.c:5986
#3  0x00007ffff4ed04bb in gdk_window_invalidate_maybe_recurse_full (window=0x2855b40, region=0x28566d0, clear_bg=CLEAR_BG_ALL, child_func=0x7ffff4eccd40 <true_predicate>, user_data=0x0)
    at gdkwindow.c:5951
#4  0x00007ffff4ed90cc in gdk_window_invalidate_region_full (clear_bg=CLEAR_BG_ALL, invalidate_children=1, region=0x28566d0, window=<optimized out>) at gdkwindow.c:6041
#5  gdk_window_move_resize_internal (window=0x2855c60, with_move=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>) at gdkwindow.c:7696
#6  0x00007ffff51fb2b6 in gtk_drawing_area_size_allocate (widget=0x2857950, allocation=0x7fffffffd020) at gtkdrawingarea.c:125
#7  0x00007ffff43ccd00 in g_cclosure_marshal_VOID__BOXEDv (closure=0x2829a60, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, 
    n_params=<optimized out>, param_types=0x2829ad0) at gmarshal.c:1160
#8  0x00007ffff43ca0af in _g_closure_invoke_va (closure=0x2829a60, return_value=0x0, instance=0x2857950, args=0x7fffffffcf48, n_params=1, param_types=0x2829ad0) at gclosure.c:831
#9  0x00007ffff43e37cd in g_signal_emit_valist (instance=0x2857950, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffcf48) at gsignal.c:3215
#10 0x00007ffff43e4462 in g_signal_emit (instance=instance@entry=0x2857950, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3363
#11 0x00007ffff538386a in IA__gtk_widget_size_allocate (widget=0x2857950, allocation=allocation@entry=0x7fffffffd070) at gtkwidget.c:4115
#12 0x00007ffff529e98a in gtk_plug_size_allocate (widget=0x28582e0, allocation=0x7fffffffd390) at gtkplug.c:777
#13 0x00007ffff43ccd00 in g_cclosure_marshal_VOID__BOXEDv (closure=0x2829a60, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, 
    n_params=<optimized out>, param_types=0x2829ad0) at gmarshal.c:1160
#14 0x00007ffff43ca0af in _g_closure_invoke_va (closure=0x2829a60, return_value=0x0, instance=0x28582e0, args=0x7fffffffd2b8, n_params=1, param_types=0x2829ad0) at gclosure.c:831
#15 0x00007ffff43e37cd in g_signal_emit_valist (instance=0x28582e0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd2b8) at gsignal.c:3215
#16 0x00007ffff43e4462 in g_signal_emit (instance=instance@entry=0x28582e0, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3363
#17 0x00007ffff538386a in IA__gtk_widget_size_allocate (widget=0x28582e0, allocation=allocation@entry=0x7fffffffd3e0) at gtkwidget.c:4115
#18 0x00007ffff52da357 in gtk_socket_size_allocate (widget=0x2840c30, allocation=0x7fffffffd700) at gtksocket.c:528
#19 0x00007ffff43ccd00 in g_cclosure_marshal_VOID__BOXEDv (closure=0x2829a60, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, 
    n_params=<optimized out>, param_types=0x2829ad0) at gmarshal.c:1160
#20 0x00007ffff43ca0af in _g_closure_invoke_va (closure=0x2829a60, return_value=0x0, instance=0x2840c30, args=0x7fffffffd628, n_params=1, param_types=0x2829ad0) at gclosure.c:831
#21 0x00007ffff43e37cd in g_signal_emit_valist (instance=0x2840c30, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd628) at gsignal.c:3215
#22 0x00007ffff43e4462 in g_signal_emit (instance=instance@entry=0x2840c30, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3363
#23 0x00007ffff538386a in IA__gtk_widget_size_allocate (widget=0x2840c30, allocation=allocation@entry=0x7fffffffd750) at gtkwidget.c:4115
#24 0x00007ffff538d1ea in gtk_window_size_allocate (widget=0x28581a0, allocation=0x7fffffffdaa0) at gtkwindow.c:4994
#25 0x00007ffff529e943 in gtk_plug_size_allocate (widget=0x28581a0, allocation=0x7fffffffdaa0) at gtkplug.c:755
#26 0x00007ffff43ccd00 in g_cclosure_marshal_VOID__BOXEDv (closure=0x2829a60, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, 
    n_params=<optimized out>, param_types=0x2829ad0) at gmarshal.c:1160
#27 0x00007ffff43ca137 in _g_closure_invoke_va (closure=0x2829a60, return_value=0x0, instance=0x28581a0, args=0x7fffffffd9c8, n_params=1, param_types=0x2829ad0) at gclosure.c:831
#28 0x00007ffff43e37cd in g_signal_emit_valist (instance=0x28581a0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd9c8) at gsignal.c:3215
#29 0x00007ffff43e4462 in g_signal_emit (instance=instance@entry=0x28581a0, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3363
#30 0x00007ffff538386a in IA__gtk_widget_size_allocate (widget=widget@entry=0x28581a0, allocation=allocation@entry=0x28581e0) at gtkwidget.c:4115
#31 0x00007ffff51f7a55 in IA__gtk_container_resize_children (container=container@entry=0x28581a0) at gtkcontainer.c:1478
#32 0x00007ffff538e488 in gtk_window_move_resize (window=0x28581a0) at gtkwindow.c:6403
#33 gtk_window_check_resize (container=0x28581a0) at gtkwindow.c:5408
#34 0x00007ffff43ca137 in _g_closure_invoke_va (closure=0x27a2f60, return_value=0x0, instance=0x28581a0, args=0x7fffffffddb8, n_params=0, param_types=0x0) at gclosure.c:831
#35 0x00007ffff43e37cd in g_signal_emit_valist (instance=0x28581a0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffddb8) at gsignal.c:3215
#36 0x00007ffff43e4462 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3363
#37 0x00007ffff51f79e0 in gtk_container_idle_sizer (data=<optimized out>) at gtkcontainer.c:1357
#38 0x00007ffff4eb1797 in gdk_threads_dispatch (data=0x284f280) at gdk.c:512
#39 0x00007ffff40d7715 in g_main_dispatch (context=0x279a550) at gmain.c:3066
#40 g_main_context_dispatch (context=context@entry=0x279a550) at gmain.c:3641
---Type <return> to continue, or q <return> to quit---
#41 0x00007ffff40d7a78 in g_main_context_iterate (context=0x279a550, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3712
#42 0x00007ffff40d7d3a in g_main_loop_run (loop=0x27b1640) at gmain.c:3906
#43 0x0000000000b73eec in PluginProcessMainUnix ()
#44 0x00007fffef0fbb45 in __libc_start_main (main=0xb5e7a0 <main>, argc=3, argv=0x7fffffffe138, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
    stack_end=0x7fffffffe128) at libc-start.c:287
#45 0x0000000000b5e8b4 in _start ()
Comment 1 Carlos Garcia Campos 2014-04-24 09:21:18 PDT
Created attachment 230083 [details]
Patch
Comment 2 Carlos Garcia Campos 2014-04-25 00:59:09 PDT
Committed r167795: <http://trac.webkit.org/changeset/167795>