Segfault in wl_proxy_get_user_data() when opening a file with Gtk
Steps to reproduce
Open a file from the Gtk file chooser using a finger double tap on a touch screen.
To reproduce with the gtk3-demo
- Launch the gtk3-demo application
- Select "Pickers" on the left side pannel
- Use the file picker. You a touch screen with a double tap to open the file.
NOTE: I'm doing this on a small screen, so some of the file picker window is off screen (including the open button).
Version information
This occurs on an OpenEmbedded image built for an ARM target (Pine64).
gtk3-demo 3.24.22
gtk+3 3.24.22
Linux 5.9.1 (although it happens on others as well)
Weston 9.0.0
You can see the build options here: https://git.openembedded.org/openembedded-core/tree/meta/recipes-gnome/gtk+/gtk+3.inc#n43
Warnings
(gtk3-demo:538): dbind-WARNING **: 17:45:45.773: Could not open X display
Backtrace
#0 wl_proxy_get_user_data (proxy=proxy@entry=0x0) at ../wayland-1.18.0/src/wayland-client.c:2040
#1 0x0000fffff778f418 in wl_surface_get_user_data (wl_surface=0x0)
at /usr/include/wayland-client-protocol.h:3538
#2 gdk_wayland_seat_add_touch (surface=0x0, id=0, seat=0x642050)
at ../../../gtk+-3.24.22/gdk/wayland/gdkdevice-wayland.c:2346
#3 touch_handle_down (data=0x642050, wl_touch=<optimized out>, serial=445, time=1041048,
wl_surface=0x0, id=0, x=103680, y=41984)
at ../../../gtk+-3.24.22/gdk/wayland/gdkdevice-wayland.c:2463
#4 0x0000fffff6788c98 in ffi_call_SYSV () at ../libffi-3.3/src/aarch64/sysv.S:114
#5 0x0000fffff6788410 in ffi_call_int (cif=cif@entry=0xfffffffff6c0,
fn=0xfffff67890e8 <ffi_type_uint32>, orig_rvalue=0x642050, orig_rvalue@entry=0x0,
avalue=avalue@entry=0xfffffffff790, closure=0x100000000, closure@entry=0x0)
at ../libffi-3.3/src/aarch64/ffi.c:747
#6 0x0000fffff678888c in ffi_call (cif=cif@entry=0xfffffffff6c0, fn=<optimized out>,
rvalue=rvalue@entry=0x0, avalue=avalue@entry=0xfffffffff790)
at ../libffi-3.3/src/aarch64/ffi.c:756
#7 0x0000fffff69c4cc0 in wl_closure_invoke (closure=closure@entry=0x63df50, flags=flags@entry=1,
target=<optimized out>, target@entry=0x63ded0, opcode=opcode@entry=0, data=<optimized out>)
at ../wayland-1.18.0/src/connection.c:1018
#8 0x0000fffff69c186c in dispatch_event (display=0x60c5e0, queue=<optimized out>,
queue=<optimized out>) at ../wayland-1.18.0/src/wayland-client.c:1445
#9 0x0000fffff69c2c70 in dispatch_queue (queue=0x60c6b0, display=0x60c5e0)
at ../wayland-1.18.0/src/wayland-client.c:1584
#10 wl_display_dispatch_queue_pending (display=0x60c5e0, queue=0x60c6b0)
at ../wayland-1.18.0/src/wayland-client.c:1833
#11 0x0000fffff69c2ce8 in wl_display_dispatch_pending (display=<optimized out>)
at ../wayland-1.18.0/src/wayland-client.c:1896
#12 0x0000fffff7795ff0 in _gdk_wayland_display_queue_events (display=<optimized out>)
at ../../../gtk+-3.24.22/gdk/wayland/gdkeventsource.c:201
#13 0x0000fffff7739950 in gdk_display_get_event (display=display@entry=0x612000)
at ../../gtk+-3.24.22/gdk/gdkdisplay.c:441
#14 0x0000fffff7795cd0 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>,
data=<optimized out>) at ../../../gtk+-3.24.22/gdk/wayland/gdkeventsource.c:120
#15 0x0000fffff7202af0 in g_main_dispatch (context=0x5ebc50) at ../glib-2.64.5/glib/gmain.c:3309
#16 g_main_context_dispatch (context=0x5ebc50) at ../glib-2.64.5/glib/gmain.c:3974
#17 0x0000fffff7202d5c in g_main_context_iterate (context=context@entry=0x5ebc50,
block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../glib-2.64.5/glib/gmain.c:4047
#18 0x0000fffff7202e14 in g_main_context_iteration (context=context@entry=0x5ebc50,
may_block=may_block@entry=1) at ../glib-2.64.5/glib/gmain.c:4108
#19 0x0000fffff743cd08 in g_application_run (application=application@entry=0x5e60f0,
argc=argc@entry=1, argv=argv@entry=0xfffffffffc28) at ../glib-2.64.5/gio/gapplication.c:2559
#20 0x0000000000417990 in main (argc=1, argv=0xfffffffffc28)
at ../../../gtk+-3.24.22/demos/gtk-demo/main.c:1208
Edited by Alistair Francis