Version: unspecified (using Devel) OS: Linux gnome-disk-utility-3.0.2 (palimpsest) crashes when moving cursor over input fields in connect to server window. Reproducible: Sometimes Steps to Reproduce: 1. Start gnome-disk-utility-3.0.2 (palimpsest). 2. Open File - Connect to server 3. Try to move cursor above server and username input fields several times Actual Results: Crash: $ gdb palimpsest hGNU gdb (GDB) Fedora (7.4.50.20120103-5.fc17) Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-redhat-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /usr/bin/palimpsest...Reading symbols from /usr/lib/debug/usr/bin/palimpsest.debug...done. done. (gdb) r Starting program: /usr/bin/palimpsest [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1". [New Thread 0xb7fd6b40 (LWP 1698)] Gtk-WARNING **: Error setting gtk-auto-mnemonics in /home/user/.config/gtk-3.0/settings.ini: Key file contains key 'gtk-auto-mnemonics' which has a value that cannot be interpreted. Gtk-WARNING **: Error setting gtk-button-images in /home/user/.config/gtk-3.0/settings.ini: Key file contains key 'gtk-button-images' which has a value that cannot be interpreted. Gtk-WARNING **: Error setting gtk-menu-images in /home/user/.config/gtk-3.0/settings.ini: Key file contains key 'gtk-menu-images' which has a value that cannot be interpreted. Detaching after fork from child process 1699. Detaching after fork from child process 1700. Oxygen::WidgetLookup::find - context: 0xba6460 type: GtkWindow - no match found Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Oxygen::WidgetLookup::find - context: 0xba6460 type: GtkWindow - no match found Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Program received signal SIGSEGV, Segmentation fault. 0x0151d000 in Oxygen::WidgetLookup::find (this=this@entry=0x80fde2c, context=context@entry=0xba6460, type=134738168) at /usr/src/debug/oxygen-gtk3-1.2.0/src/oxygenwidgetlookup.cpp:82 82 if( G_OBJECT_TYPE( *iter ) == type ) Missing separate debuginfos, use: debuginfo-install atk-2.3.3-1.fc17.i686 avahi-glib-0.6.30-6.fc17.i686 avahi-libs-0.6.30-6.fc17.i686 avahi-ui-gtk3-0.6.30-6.fc17.i686 cairo-1.10.2-5.fc17.i686 cairo-gobject-1.10.2-5.fc17.i686 dbus-glib-0.92-2.fc15.i686 dbus-libs-1.4.10-3.fc17.i686 expat-2.0.1-11.fc15.i686 fontconfig-2.8.0-4.fc16.i686 freetype-freeworld-2.4.8-2.fc17.i686 gdbm-1.10-1.fc17.i686 gdk-pixbuf2-2.25.0-1.fc17.i686 glibc-2.15-1.fc17.i686 gvfs-1.11.1-1.fc17.i686 libX11-1.4.99.1-2.fc17.i686 libXau-1.0.6-2.fc15.i686 libXcomposite-0.4.3-2.fc15.i686 libXcursor-1.1.12-1.fc17.i686 libXdamage-1.1.3-2.fc15.i686 libXext-1.3.0-1.fc17.i686 libXfixes-5.0-1.fc16.i686 libXi-1.5.99.2-1.20111222gitae0187c87.fc17.i686 libXinerama-1.1.1-2.fc15.i686 libXrandr-1.3.1-2.fc15.i686 libXrender-0.9.6-2.fc15.i686 libatasmart-0.18-1.fc17.i686 libbluray-0.2.1-1.fc17.i686 libffi-3.0.10-1.fc17.i686 libgcc-4.7.0-0.5.fc17.i686 libgcrypt-1.5.0-2.fc17.i686 libgnome-keyring-3.3.3-1.fc17.i686 libgpg-error-1.10-1.fc16.i686 libpng-1.5.7-1.fc17.i686 libselinux-2.1.9-2.fc17.i686 libstdc++-4.7.0-0.5.fc17.i686 libudev-175-1.fc17.i686 libxcb-1.7-3.fc16.i686 libxml2-2.7.8-6.fc16.i686 pango-1.29.5-1.fc17.i686 pixman-0.24.0-1.fc17.i686 unique3-3.0.2-2.fc17.i686 zlib-1.2.5-5.fc17.i686 (gdb) bt #0 0x0151d000 in Oxygen::WidgetLookup::find (this=this@entry=0x80fde2c, context=context@entry=0xba6460, type=134738168) at /usr/src/debug/oxygen-gtk3-1.2.0/src/oxygenwidgetlookup.cpp:82 #1 0x0151d18c in Oxygen::WidgetLookup::find (this=0x80fde2c, context=0xba6460, path=0x81d7b38) at /usr/src/debug/oxygen-gtk3-1.2.0/src/oxygenwidgetlookup.cpp:61 #2 0x01518f00 in Oxygen::render_background (engine=0x80f3c80, context=0xba6460, x=0, y=0, w=199, h=27) at /usr/src/debug/oxygen-gtk3-1.2.0/src/oxygenthemingengine.cpp:210 #3 0x005b8ef4 in gtk_render_background (context=context@entry=0x8342c58, cr=cr@entry=0xba6460, x=0, x@entry=<error reading variable: Could not find type for DW_OP_GNU_const_type>, y=0, y@entry=<error reading variable: Could not find type for DW_OP_GNU_const_type>, width=199, height=27) at gtkstylecontext.c:3778 #4 0x0062a6ac in paint_background_and_frame (tooltip=tooltip@entry=0x82e9c70, cr=cr@entry=0xba6460) at gtktooltip.c:598 #5 0x0062aa46 in maybe_update_shape (tooltip=0x82e9c70) at gtktooltip.c:624 #6 maybe_update_shape (tooltip=0x82e9c70) at gtktooltip.c:605 #7 0x00cd3d14 in g_cclosure_marshal_VOID__VOID (closure=0x82e83f8, return_value=0x0, n_param_values=1, param_values=0x81024a8, invocation_hint=0xbfffdf00, marshal_data=0x0) at gmarshal.c:85 #8 0x00cd2735 in g_closure_invoke (closure=0x82e83f8, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x81024a8, invocation_hint=invocation_hint@entry=0xbfffdf00) at gclosure.c:774 #9 0x00ce37d5 in signal_emit_unlocked_R (node=node@entry=0x8071700, detail=detail@entry=0, instance=instance@entry=0x80bec58, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x81024a8) at gsignal.c:3302 #10 0x00ceb31a in g_signal_emit_valist (instance=instance@entry=0x80bec58, signal_id=signal_id@entry=8, detail=detail@entry=0, var_args=var_args@entry=0xbfffe0ac "\370\360\a\b\223F\317") at gsignal.c:3033 #11 0x00ceb4a4 in g_signal_emit (instance=instance@entry=0x80bec58, signal_id=8, detail=detail@entry=0) at gsignal.c:3090 #12 0x006883ef in gtk_widget_realize (widget=0x80bec58) at gtkwidget.c:4403 #13 0x0062bb40 in gtk_tooltip_position (new_tooltip_widget=0x83221d8, display=0x808e800, tooltip=0x82e9c70) at gtktooltip.c:1068 #14 gtk_tooltip_show_tooltip (display=display@entry=0x808e800) at gtktooltip.c:1281 #15 0x0062c701 in tooltip_popup_timeout (data=0x808e800) at gtktooltip.c:1364 #16 0x0089cf8f in gdk_threads_dispatch (data=data@entry=0x81c3bd0) at gdk.c:745 #17 0x00d67710 in g_timeout_dispatch (source=0x835be70, callback=0x89cf50 <gdk_threads_dispatch>, user_data=0x81c3bd0) at gmain.c:3857 #18 0x00d6696a in g_main_dispatch (context=0x809aaf8) at gmain.c:2513 #19 g_main_context_dispatch (context=context@entry=0x809aaf8) at gmain.c:3050 #20 0x00d66d75 in g_main_context_iterate (dispatch=1, block=14108704, context=0x809aaf8, self=<optimized out>) at gmain.c:3121 #21 g_main_context_iterate (context=0x809aaf8, block=14108704, dispatch=1, self=0x8077500) at gmain.c:3058 #22 0x00d671df in g_main_loop_run (loop=0x83294e8) at gmain.c:3315 #23 0x0048d569 in gtk_dialog_run (dialog=0x8317810) at gtkdialog.c:1111 #24 0x08050d87 in on_file_connect_action (action=action@entry=0x807d4e8, user_data=0x80a7478) at gdu-shell.c:738 #25 0x00cd3d14 in g_cclosure_marshal_VOID__VOID (closure=0x81c65e0, return_value=0x0, n_param_values=1, param_values=0x8309868, invocation_hint=0xbfffe550, marshal_data=0x0) at gmarshal.c:85 #26 0x00cd2735 in g_closure_invoke (closure=0x81c65e0, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x8309868, invocation_hint=invocation_hint@entry=0xbfffe550) at gclosure.c:774 ---Type <return> to continue, or q <return> to quit--- #27 0x00ce37d5 in signal_emit_unlocked_R (node=node@entry=0x814f238, detail=detail@entry=0, instance=instance@entry=0x807d4e8, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x8309868) at gsignal.c:3302 #28 0x00ceb31a in g_signal_emit_valist (instance=instance@entry=0x807d4e8, signal_id=signal_id@entry=175, detail=detail@entry=0, var_args=var_args@entry=0xbfffe6fc "\006L\326") at gsignal.c:3033 #29 0x00ceb4a4 in g_signal_emit (instance=instance@entry=0x807d4e8, signal_id=175, detail=detail@entry=0) at gsignal.c:3090 #30 0x00414887 in _gtk_action_emit_activate (action=action@entry=0x807d4e8) at gtkaction.c:799 #31 0x0041505d in gtk_action_activate (action=0x807d4e8) at gtkaction.c:829 #32 0x0052ff86 in gtk_real_menu_item_activate (menu_item=menu_item@entry=0x826d0d0) at gtkmenuitem.c:1754 #33 0x00cd3d14 in g_cclosure_marshal_VOID__VOID (closure=0x8079448, return_value=0x0, n_param_values=1, param_values=0x8309a50, invocation_hint=0xbfffe8b0, marshal_data=0x52ff60) at gmarshal.c:85 #34 0x00cd112e in g_type_class_meta_marshal (closure=0x8079448, return_value=0x0, n_param_values=1, param_values=0x8309a50, invocation_hint=0xbfffe8b0, marshal_data=0x1fc) at gclosure.c:885 #35 0x00cd2735 in g_closure_invoke (closure=closure@entry=0x8079448, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x8309a50, invocation_hint=invocation_hint@entry=0xbfffe8b0) at gclosure.c:774 #36 0x00ce3c17 in signal_emit_unlocked_R (node=node@entry=0x8079498, detail=detail@entry=0, instance=instance@entry=0x826d0d0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x8309a50) at gsignal.c:3232 #37 0x00ceb31a in g_signal_emit_valist (instance=instance@entry=0x826d0d0, signal_id=signal_id@entry=75, detail=detail@entry=0, var_args=var_args@entry=0xbfffea5c "") at gsignal.c:3033 #38 0x00ceb4a4 in g_signal_emit (instance=instance@entry=0x826d0d0, signal_id=75, detail=detail@entry=0) at gsignal.c:3090 #39 0x0067b105 in gtk_widget_activate (widget=widget@entry=0x826d0d0) at gtkwidget.c:6165 #40 0x00536d3a in gtk_menu_shell_activate_item (menu_shell=0x826a008, menu_item=menu_item@entry=0x826d0d0, force_deactivate=force_deactivate@entry=1) at gtkmenushell.c:1432 #41 0x005371d9 in gtk_menu_shell_button_release (widget=0x826a008, event=0x80a4b70) at gtkmenushell.c:831 #42 0x005288b7 in gtk_menu_button_release (event=0x80a4b70, widget=0x826a008) at gtkmenu.c:3479 #43 gtk_menu_button_release (widget=widget@entry=0x826a008, event=0x80a4b70) at gtkmenu.c:3443 #44 0x0051ce6a in _gtk_marshal_BOOLEAN__BOXED (closure=0x8074f98, return_value=0xbfffecd4, n_param_values=2, param_values=0x82cb9b8, invocation_hint=0xbfffecc0, marshal_data=0x5287c0) at gtkmarshalers.c:85 #45 0x00cd112e in g_type_class_meta_marshal (closure=0x8074f98, return_value=0xbfffecd4, n_param_values=2, param_values=0x82cb9b8, invocation_hint=0xbfffecc0, marshal_data=0xc4) at gclosure.c:885 #46 0x00cd2735 in g_closure_invoke (closure=closure@entry=0x8074f98, return_value=return_value@entry=0xbfffecd4, n_param_values=2, param_values=param_values@entry=0x82cb9b8, invocation_hint=invocation_hint@entry=0xbfffecc0) at gclosure.c:774 #47 0x00ce3df7 in signal_emit_unlocked_R (node=node@entry=0x8074888, detail=detail@entry=0, instance=instance@entry=0x826a008, emission_return=emission_return@entry=0xbfffee0c, instance_and_params=instance_and_params@entry=0x82cb9b8) at gsignal.c:3340 #48 0x00ceb238 in g_signal_emit_valist (instance=instance@entry=0x826a008, signal_id=signal_id@entry=29, detail=detail@entry=0, var_args=0xbfffee70 "\234\356\377\277pK\n\b", var_args@entry=0xbfffee6c "pK\n\b\234\356\377\277pK\n\b") at gsignal.c:3043 #49 0x00ceb4a4 in g_signal_emit (instance=instance@entry=0x826a008, signal_id=29, detail=detail@entry=0) at gsignal.c:3090 #50 0x0067bf63 in gtk_widget_event_internal (widget=widget@entry=0x826a008, event=event@entry=0x80a4b70) at gtkwidget.c:6134 #51 0x0067c1df in gtk_widget_event (widget=widget@entry=0x826a008, event=event@entry=0x80a4b70) at gtkwidget.c:5850 ---Type <return> to continue, or q <return> to quit--- #52 0x0051c5b2 in gtk_propagate_event (widget=0x826a008, widget@entry=0x826d0d0, event=event@entry=0x80a4b70) at gtkmain.c:2411 #53 0x0051ca38 in gtk_main_do_event (event=0x80a4b70) at gtkmain.c:1686 #54 0x008a6a7d in _gdk_event_emit (event=event@entry=0x80a4b70) at gdkevents.c:71 #55 0x008d4759 in gdk_event_source_dispatch (source=0x809aab0, callback=0, user_data=0x0) at gdkeventsource.c:360 #56 0x00d6696a in g_main_dispatch (context=0x809aaf8) at gmain.c:2513 #57 g_main_context_dispatch (context=context@entry=0x809aaf8) at gmain.c:3050 #58 0x00d66d75 in g_main_context_iterate (dispatch=1, block=14108704, context=0x809aaf8, self=<optimized out>) at gmain.c:3121 #59 g_main_context_iterate (context=0x809aaf8, block=14108704, dispatch=1, self=0x8077500) at gmain.c:3058 #60 0x00d671df in g_main_loop_run (loop=loop@entry=0x82ded88) at gmain.c:3315 #61 0x0051bca5 in gtk_main () at gtkmain.c:1159 #62 0x0804f7ac in main (argc=1, argv=0xbffff1a4) at gdu-main.c:202 (gdb) q Expected Results: No crash. When moving cursor over input fields window may loose window decorations. See screenshot. palimpsest running with gtk-3.3.6.
Created attachment 67633 [details] palimpsest without window border
palimpsest crashes with last oxygen-gtk3 snapshot and with older one made before changes in bug 291007.
Indeed. Likely unrelated to recent change. Stupid question: "palimpseste" and "gnome-disk-utility" are the same app ? I cannot get this code running here so cannot reproduce, but the origin of the crash might be that some widget in the stack has been deleted and hence crashes at G_OBJECT_TYPE. Maybe I can try keep track of cached widgets, and remove them from the stack at deletion. If you don't mind, I'll post a patch here for you to test (maybe not today, but soon).
Yes, this is the same application http://git.gnome.org/browse/gnome-disk-utility/tree/
Git commit 6de77bc956013e6dc885821fd03cca52f499c9a8 by Hugo Pereira Da Costa. Committed on 10/01/2012 at 15:11. Pushed by hpereiradacosta into branch 'gtk3'. keep track of registered widgets, remove from stack when deleted. M +49 -11 src/oxygenwidgetlookup.cpp M +17 -3 src/oxygenwidgetlookup.h http://commits.kde.org/oxygen-gtk/6de77bc956013e6dc885821fd03cca52f499c9a8
Nucleo: would you give it another shot after the commit above ? It may -or not- fix the issue. (but is safer anyway). Thanks !
I am not able reproduce crash with last snapshot (with gtk-3.3.6). But there are still appears messages when tooltips shown: Oxygen::WidgetLookup::find - context: 0xba6460 type: GtkWindow - no match found Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed Oxygen::WidgetLookup::find - context: 0xba6460 type: GtkWindow - no match found Gtk-CRITICAL **: gtk_widget_get_window: assertion `GTK_IS_WIDGET (widget)' failed And main window lost border when was tooltips shown after I switched to konsole and back to connect to server window.
For the "no match found", well, there isn't much we can do about it. It means there is something funny in the way the application uses context to paint on widgets which prevents us to look up the widget from the context. At least the crash being gone when this look-up fails is a good thing ... (The details: the whole gtk3 idea of passing only GtkContext to the style, and not the associated GtkWidget is completely incompatible with the way oxygen renders and animates widgets. So we use a "trick" to match a given context to its associated widget, and get the missing information we need from the widget. Now, for some reason, this trick does not work whith palimpseste, whereas it does work with the other applications I checked, such as gedit, oxygen-gtk3-demo, audacious, and gtk3-demo). For the window decoration being lost, unless I'm mistaken, its completely unrelated. Oxygen-gtk does not render the window decoration, does it ? Or rather: are you running on kde, or gnome (or IceWM) ? are you sure oxygen-gtk is used to render the window decoration ? Thanks again for the feedback.
> For the window decoration being lost, unless I'm mistaken, its completely > unrelated. Oxygen-gtk does not render the window decoration, does it ? Maybe there's a bug in kwin's interaction with the X11 properties which oxygen sets?
I am testing palimpsest under KDE 4.8 rc2 with Oxygen window decoration. I don't know why window lost its border but this not happens when I set gtk3 theme to Raleigh.
Created attachment 67663 [details] debug messages after switching back from konsole to palimpsest and showing tooltips
(In reply to comment #11) > Created an attachment (id=67663) [details] > debug messages after switching back from konsole to palimpsest and showing > tooltips Maybe somewhere in this messages can be found moment when window lost its border.
eheh. Reading it right now :)
I mean: reading the backlog just to see if I can find some clue.
@nucleo Could you attach messages from kwin when the border disappears (after restarting it as "kwin --replace")?
There is no any messages when running "kwin --replace" (excpet first message when kwin just started).
Problem with window border appears only with gtk-3.3.6, no problem with 3.2.2. Also no Gtk-CRITICAL messages with 3.2.2.. gtk-3.2.2 is in Fedora 16, gtk-3.3.6 in Fedora Rawhide (development branch), there are many other changes, not only newer gtk3.
And also different KDE in Fedora 16 (4.7.4) and in Rawhide (4.8 rc2).
@nucleo Most likely it's really kde4.8 kwin's fault that window decoration disappears. Try filing a kwin bug for this. As for the crash, since it no longer happens, I think it's time to close this bug.
I agree. Fine with closing. Thanks ! We'll see what kwin guys say.