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 773307 - [Wayland] crash at gdk_flush() called from "draw" signal handler during resize
[Wayland] crash at gdk_flush() called from "draw" signal handler during resize
Status: RESOLVED DUPLICATE of bug 773274
Product: gtk+
Classification: Platform
Component: Backend: Wayland
3.22.x
Other Linux
: Normal normal
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks: WaylandRelated
 
 
Reported: 2016-10-21 10:11 UTC by Martin Stransky
Modified: 2016-11-03 07:57 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
testcase - resize the window until crash (866 bytes, text/x-csrc)
2016-10-21 10:11 UTC, Martin Stransky
Details

Description Martin Stransky 2016-10-21 10:11:40 UTC
Created attachment 338172 [details]
testcase - resize the window until crash

That bug comes from Firefox on Wayland. Constantly crashes when it's resized. There's a minimized testcase. 

Wayland backend calls drop_cairo_surfaces() in configure event. When gdk_flush() is called in expose event, the configure event is fired and drop_cairo_surfaces() deletes active wayland surfaces and gdk then crashes when tries to finish painting after return from expose handler.

bt:
  • #4 drop_cairo_surfaces
    at gdkwindow-wayland.c line 273
  • #5 gdk_wayland_window_update_size
    at gdkwindow-wayland.c line 333
  • #6 gdk_wayland_window_configure
    at gdkwindow-wayland.c line 1025
  • #7 xdg_surface_configure
    at gdkwindow-wayland.c line 1390
  • #8 ffi_call_unix64
    at ../src/x86/unix64.S line 76
  • #9 ffi_call
    at ../src/x86/ffi64.c line 525
  • #10 wl_closure_invoke
    at src/connection.c line 935
  • #11 dispatch_event
    at src/wayland-client.c line 1310
  • #12 dispatch_queue
    at src/wayland-client.c line 1456
  • #13 wl_display_dispatch_queue_pending
    at src/wayland-client.c line 1698
  • #14 wl_display_roundtrip_queue
    at src/wayland-client.c line 1121
  • #15 gdk_flush
    at gdkdisplay.c line 598
  • #37 draw_window_of_widget(_GtkWidget*, _GdkWindow*, _cairo*)
    at /home/komat/tmp676-trunk-gtk3/src3/widget/gtk/nsWindow.cpp line 5616
  • #38 expose_event_cb(GtkWidget*, cairo_t*)
    at /home/komat/tmp676-trunk-gtk3/src3/widget/gtk/nsWindow.cpp line 5639
  • #39 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 86
  • #40 gtk_widget_draw_marshaller
    at gtkwidget.c line 937
  • #44 <emit signal ??? on instance 0x7fffbe789070 [MozContainer]>
    at gsignal.c line 3447
  • #45 gtk_widget_draw_internal
    at gtkwidget.c line 7008
  • #46 gtk_container_propagate_draw
    at gtkcontainer.c line 3838
  • #47 gtk_container_draw
    at gtkcontainer.c line 3658
  • #48 gtk_window_draw
    at gtkwindow.c line 10211
  • #49 gtk_widget_draw_internal
    at gtkwidget.c line 7015
  • #50 gtk_widget_render

Comment 1 Olivier Fourdan 2016-11-03 07:57:18 UTC
Thanks Martin, I used your reproducer and explanation from comment 0 to investigate this issue and the one from bug 773274 and pushed a fix to both git master and branch gtk-3-22 that fix this particular problem.

Therefore it should be fixed now, if not please give me a shout! :)

*** This bug has been marked as a duplicate of bug 773274 ***