gtk_primary_selection_device_set_selection(source = NULL) crashes Mutter
Core was generated by `/usr/bin/gnome-shell'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f0737009914 in wl_resource_get_user_data ()
from /lib64/libwayland-server.so.0
[Current thread is 1 (Thread 0x7f0735ff0d00 (LWP 1618))]
Missing separate debuginfos, use: dnf debuginfo-install gnome-shell-3.30.0-9.fc29.x86_64
(gdb) bt
#0 0x00007f0737009914 in wl_resource_get_user_data ()
at /lib64/libwayland-server.so.0
#1 0x00007f0739d20350 in primary_device_set_selection
(client=<optimized out>, resource=<optimized out>, source_resource=0x0, serial=516) at wayland/meta-wayland-data-device.c:1720
#2 0x00007f0739026ace in ffi_call_unix64 () at /lib64/libffi.so.6
#3 0x00007f073902648f in ffi_call () at /lib64/libffi.so.6
#4 0x00007f073700e31d in () at /lib64/libwayland-server.so.0
#5 0x00007f073700ac69 in () at /lib64/libwayland-server.so.0
#6 0x00007f073700c2e2 in wl_event_loop_dispatch () at /lib64/libwayland-server.so.0
#7 0x00007f0739d1894b in wayland_event_source_dispatch
(base=<optimized out>, callback=<optimized out>, data=<optimized out>)
at wayland/meta-wayland.c:90
#8 0x00007f073a87626d in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#9 0x00007f073a876638 in () at /lib64/libglib-2.0.so.0
#10 0x00007f073a876962 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#11 0x00007f0739cdf1b0 in meta_run () at core/main.c:689
#12 0x0000560c8d482b96 in ()
#13 0x00007f0739a59413 in __libc_start_main () at /lib64/libc.so.6
#14 0x0000560c8d482cee in ()
(gdb) up
#1 0x00007f0739d20350 in primary_device_set_selection (client=<optimized out>,
resource=<optimized out>, source_resource=0x0, serial=516)
at wayland/meta-wayland-data-device.c:1720
1720 source = wl_resource_get_user_data (source_resource);
The protocol defines source
as nullable, but Mutter calls wl_resource_get_user_data (source_resource)
without (or before) checking it against NULL
.
There may very well be many similar mistakes elsewhere in Mutter...
Edited by Sergey Bugaev