After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 763400 - gtkperf on xwayland-1.17.4 crashes gnome-shell-3.18.3
gtkperf on xwayland-1.17.4 crashes gnome-shell-3.18.3
Status: RESOLVED OBSOLETE
Product: mutter
Classification: Core
Component: wayland
3.18.x
Other Linux
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
Depends on:
Blocks:
 
 
Reported: 2016-03-09 22:12 UTC by Yaroslav Isakov
Modified: 2021-07-05 13:53 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Yaroslav Isakov 2016-03-09 22:12:35 UTC
Hello! I'm running gtkperf-0.40 on gnome-shell with wayland-1.10.0/xwayland-1.17.4. Distribution is gentoo. GtkCombobox/GtkCompoboxEntry test are crashing gnome-shell 100% of time after some large number of rounds (10000 rounds are enough on my machine, but YMMV). I could only get crashdump for gtk-shell, gtkperf says
GtkComboBox - gtkperf: Fatal IO error 11 (Resource temporarily unavailable) on X server ":1" 

For gnome-shell here is a stack-trace:
  • #0 g_logv
    at /var/tmp/portage/dev-libs/glib-2.46.2-r2/work/glib-2.46.2/glib/gmessages.c line 1086
  • #1 g_log
    at /var/tmp/portage/dev-libs/glib-2.46.2-r2/work/glib-2.46.2/glib/gmessages.c line 1119
  • #2 x_io_error
    at wayland/meta-xwayland.c line 387
  • #3 _XIOError
    from /usr/lib64/libX11.so.6
  • #4 _XReply
    from /usr/lib64/libX11.so.6
  • #5 _XGetWindowAttributes
    from /usr/lib64/libX11.so.6
  • #6 XGetWindowAttributes
    from /usr/lib64/libX11.so.6
  • #7 meta_window_x11_new
    at x11/window-x11.c line 2881
  • #8 handle_other_xevent
    at x11/events.c line 1340
  • #9 meta_display_handle_xevent
    at x11/events.c line 1747
  • #10 xevent_filter
    at x11/events.c line 1786
  • #11 gdk_event_apply_filters
    at /var/tmp/portage/x11-libs/gtk+-3.18.7/work/gtk+-3.18.7/gdk/x11/gdkeventsource.c line 81
  • #12 gdk_event_source_translate_event
    at /var/tmp/portage/x11-libs/gtk+-3.18.7/work/gtk+-3.18.7/gdk/x11/gdkeventsource.c line 195
  • #13 _gdk_x11_display_queue_events
    at /var/tmp/portage/x11-libs/gtk+-3.18.7/work/gtk+-3.18.7/gdk/x11/gdkeventsource.c line 338
  • #14 gdk_display_get_event
    at /var/tmp/portage/x11-libs/gtk+-3.18.7/work/gtk+-3.18.7/gdk/gdkdisplay.c line 340
  • #15 gdk_event_source_dispatch
    at /var/tmp/portage/x11-libs/gtk+-3.18.7/work/gtk+-3.18.7/gdk/x11/gdkeventsource.c line 360
  • #16 g_main_dispatch
    at /var/tmp/portage/dev-libs/glib-2.46.2-r2/work/glib-2.46.2/glib/gmain.c line 3154
  • #17 g_main_context_dispatch
    at /var/tmp/portage/dev-libs/glib-2.46.2-r2/work/glib-2.46.2/glib/gmain.c line 3769
  • #18 g_main_context_iterate
    at /var/tmp/portage/dev-libs/glib-2.46.2-r2/work/glib-2.46.2/glib/gmain.c line 3840
  • #19 g_main_loop_run
    at /var/tmp/portage/dev-libs/glib-2.46.2-r2/work/glib-2.46.2/glib/gmain.c line 4034
  • #20 meta_run
    at core/main.c line 437
  • #21 main
    at main.c line 471

(full log is here http://pastebin.com/bfFhzhTR)

This cannot be reproduced on weston, that's why I'm reporting this bug here.
Comment 1 Yaroslav Isakov 2016-03-09 22:24:07 UTC
Oh, and gtk+ version is 2.24.28 (gtkperf is not using gtk3...)
Comment 2 Olivier Fourdan 2016-05-26 08:23:28 UTC
From the pastebin:

        msg = 0x4c4e6b0 "Connection to xwayland lost"

So my guess is that gtkperf crashes xwayland and takes mutter with it (unlike weston, mutter requires Xwayland), so this is most likely an Xwayland bug.
Comment 3 Olivier Fourdan 2016-05-26 08:39:39 UTC
I can reproduce with Xwayland from Xserver 1.18.3 as well, but it's not a crash, it's an abort:

(gdb) bt
  • #0 __GI__exit
    at ../sysdeps/unix/sysv/linux/_exit.c line 27
  • #1 __run_exit_handlers
    at exit.c line 97
  • #2 __GI_exit
    at exit.c line 104
  • #3 AbortServer
    at log.c line 878
  • #4 FatalError
    at log.c line 1015
  • #5 xwl_dispatch_events
    at xwayland.c line 495
  • #6 BlockHandler
    at dixutils.c line 394
  • #7 WaitForSomething
    at WaitFor.c line 211
  • #8 Dispatch
    at dispatch.c line 359
  • #9 dix_main
    at main.c line 302
  • #10 __libc_start_main
    at ../csu/libc-start.c line 289
  • #11 _start

Comment 4 Olivier Fourdan 2016-05-26 09:24:19 UTC
(EE) failed to write to XWayland fd: Resource temporarily unavailable

So my take is that the socket is full because mutter can't cope with the amount of data sent by Xwayland.

But interestingly, waiting for the Wayland socket to be writeable again (using poll() for example) can't work either because at the same time gnome-shell/mutter is waiting on the X socket (in XGetWindowAttributes), so we basically end up in a dead lock, mutter trying to write to the X11 socket whereas Xwayland is filling up the Wayland socket, so once the Wayland socket is full, I don't see a way for Xwayland to recover...

=> Moving to mutter.
Comment 5 Olivier Fourdan 2016-05-26 09:54:58 UTC
Comment #0 mentions that the problem doesn't occur with weston, which I also concur, on weston Xwayland doesn't abort in the same scenario, possibly because weston uses xcb and makes async X calls?
Comment 6 GNOME Infrastructure Team 2021-07-05 13:53:18 UTC
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org.
As part of that, we are mass-closing older open tickets in bugzilla.gnome.org
which have not seen updates for a longer time (resources are unfortunately
quite limited so not every ticket can get handled).

If you can still reproduce the situation described in this ticket in a recent
and supported software version, then please follow
  https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines
and create a new ticket at
  https://gitlab.gnome.org/GNOME/mutter/-/issues/

Thank you for your understanding and your help.