GNOME Bugzilla – Bug 708170
Empathy dumps core when running on Wayland compositor
Last modified: 2016-03-19 16:30:22 UTC
Backtrace and program output here Starting program: /usr/bin/empathy warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1". [New Thread 0x7fffdcff5700 (LWP 20762)] [New Thread 0x7fffd7fff700 (LWP 20763)] libEGL warning: failed to create a pipe screen for i965 libEGL warning: failed to create DRM screen [New Thread 0x7fffc731b700 (LWP 20764)] [New Thread 0x7fffc64bb700 (LWP 20765)] (empathy:20758): GLib-GObject-WARNING **: invalid cast from 'GdkWindowImplWayland' to 'GdkWindowImplX11' [New Thread 0x7fffbd615700 (LWP 20766)] [New Thread 0x7fffbce14700 (LWP 20767)] [New Thread 0x7fffb3fff700 (LWP 20768)] *** BUG *** In pixman_region32_init_rect: Invalid rectangle passed Set a breakpoint on '_pixman_log_error' to debug (empathy:20758): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -45 and height 21 (empathy:20758): Gtk-CRITICAL **: gtk_distribute_natural_allocation: assertion 'extra_space >= 0' failed (empathy:20758): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -5 and height 32 (empathy:20758): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -11 and height 32 (empathy:20758): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -11 and height 32 (empathy:20758): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -11 and height 32 (empathy:20758): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -11 and height 32 (empathy:20758): Gdk-CRITICAL **: gdkwindow-wayland.c:668: mmap'ping temporary file failed: Invalid argument Program received signal SIGSEGV, Segmentation fault. wl_proxy_create (factory=factory@entry=0x0, interface=0x7fffeda20120 <wl_buffer_interface>) at wayland-client.c:220 220 wayland-client.c: No such file or directory.
+ Trace 232492
(In reply to comment #0) > (empathy:20758): GLib-GObject-WARNING **: invalid cast from > 'GdkWindowImplWayland' to 'GdkWindowImplX11' Seems like you're running empathy on wayland? What version of webkitgtk do you have, and are other webkit-using applications running properly? Please get a new backtrace with G_DEBUG=fatal-warnings set, so we know who is making that invalid cast.
It's empathy, it uses gdk_x11_* symbols. libempathy-gtk/empathy-avatar-image.c: atom = gdk_x11_get_xatom_by_name ("_NET_CURRENT_DESKTOP"); libempathy-gtk/empathy-avatar-image.c: window = gdk_x11_get_default_root_xwindow (); libempathy-gtk/empathy-avatar-image.c: display = gdk_x11_get_default_xdisplay (); libempathy-gtk/empathy-ui-utils.c: xev.xclient.message_type = gdk_x11_get_xatom_by_name ("_NET_CURRENT_DESKTOP"); libempathy-gtk/empathy-ui-utils.c: gdk_x11_get_xatom_by_name ("_NET_WM_DESKTOP"), &number)) libempathy-gtk/empathy-ui-utils.c: xscreen = gdk_x11_screen_get_xscreen (screen); libempathy-gtk/empathy-ui-utils.c: gdk_x11_window_get_xid (gdk_window)); telepathy-account-widgets/tp-account-widgets/tpaw-utils.c: gdk_x11_window_move_to_current_desktop (gdk_window); Last one was the one that caused core dump according to gdb when ran with G_DEBUG=fatal-warnings. Reassigning to Empathy. Please wrap and/or replace gdk_x11_* calls with runtime checks and gdk wayland equivalent functions (if any).
Workspace management won't have Wayland equivalents. What are you using the workspace management calls for?
(Hi all it's me!) Empathy would appear to include a copy of a bunch of wnck methods in order to do workspace switching. My GTK+ coding is rusty, but it would appear that if nothing else has handled the event (i.e. the shell's chat client) then it will move workspace to the chat window. I'm not sure what this gets replaced with in a Wayland world. If if we really even want it over say gtk_window_present_with_time(). The code makes this note: /* Don't use tpaw_window_present_with_time () which would move the window * to our current desktop but move to the window's desktop instead. This is * more coherent with Shell's 'app is ready' notication which moves the view * to the app desktop rather than moving the app itself. */ ~ There's also use of gdk_window_set_filter (is this wayland safe?) which seems to be used to remove a popup (that I'm not sure how to even trigger) if you change workspace. This code could probably be safely removed...
I disabled all the wnck stuff when running under Wayland a while back, should work in git master.