gnome-shell crash while connecting to remote desktop
Affected version
- qemu virtual machine (libvirt, QXL graphics)
- Debian unstable rolling release, with GNOME 3.37.x from experimental
- mutter 3.37.92-1
- gnome-shell 3.37.92-3
- gnome-remote-desktop 0.1.8-1
- pipewire 0.3.10-2
Bug summary
Shell crashes when I connect a VNC client.
Steps to reproduce
- Enable screen sharing
- Connect a VNC client
What happened
Crash and core dump
What did you expect to happen
A VNC connection
Relevant logs, screenshots, screencasts etc.
#0 0x00007fc8266b4ef7 in meta_monitor_get_display_name (monitor=0x0) at ../src/backends/meta-monitor.c:1953
#1 0x00007fc8266acd55 in mapping_helper_apply (helper=helper@entry=0x7ffe68731090, mapper=mapper@entry=0x7fc810004480)
at ../src/backends/meta-input-mapper.c:455
#2 0x00007fc8266ad387 in mapper_recalculate_input (input=0x55993ec4add0, mapper=0x7fc810004480)
at ../src/backends/meta-input-mapper.c:504
#3 meta_input_mapper_add_device (mapper=0x7fc810004480, device=0x7ffe68731090, device@entry=0x55993d4832c0,
builtin=<optimized out>) at ../src/backends/meta-input-mapper.c:652
#4 0x00007fc8266aed11 in meta_input_settings_delegate_on_mapper (device=0x55993d4832c0, input_settings=0x55993d0bae20)
at ../src/backends/meta-input-settings.c:1020
#5 update_device_display (input_settings=input_settings@entry=0x55993d0bae20, settings=0x559941095350, device=0x55993d4832c0)
at ../src/backends/meta-input-settings.c:1104
#6 0x00007fc8266af1e6 in apply_mappable_device_settings (info=0x7fc810032840, input_settings=0x55993d0bae20)
at ../src/backends/meta-input-settings.c:1746
#7 check_add_mappable_device (input_settings=0x55993d0bae20, device=0x55993d4832c0)
at ../src/backends/meta-input-settings.c:1746
#8 0x00007fc8273befd2 in g_closure_invoke (closure=0x55993d4fe2f0, return_value=0x0, n_param_values=2,
param_values=0x7ffe68731340, invocation_hint=0x7ffe687312c0) at ../../../gobject/gclosure.c:810
#9 0x00007fc8273d2784 in signal_emit_unlocked_R (node=node@entry=0x55993d476190, detail=detail@entry=0,
instance=instance@entry=0x55993d47d510, emission_return=emission_return@entry=0x0,
instance_and_params=instance_and_params@entry=0x7ffe68731340) at ../../../gobject/gsignal.c:3742
#10 0x00007fc8273dd54f in g_signal_emit_valist (instance=instance@entry=0x55993d47d510, signal_id=signal_id@entry=59,
detail=detail@entry=0, var_args=var_args@entry=0x7ffe68731578) at ../../../gobject/gsignal.c:3498
#11 0x00007fc8273de98c in g_signal_emit_by_name (instance=0x55993d47d510, detailed_signal=0x7fc8267a0ec9 "device-added")
at ../../../gobject/gsignal.c:3594
#12 0x00007fc8273c48b6 in g_object_new_internal (class=class@entry=0x559941855e00, params=params@entry=0x7ffe68731850,
n_params=n_params@entry=2) at ../../../gobject/gobject.c:1977
#13 0x00007fc8273c65e9 in g_object_new_valist (object_type=<optimized out>, first_property_name=<optimized out>,
var_args=var_args@entry=0x7ffe687319a0) at ../../../gobject/gobject.c:2262
#14 0x00007fc8273c6939 in g_object_new (object_type=<optimized out>, first_property_name=<optimized out>)
at ../../../gobject/gobject.c:1780
#15 0x00007fc826741c23 in meta_remote_desktop_session_start (error=0x7ffe68731a80, session=0x5599417d7080)
at ../src/backends/meta-remote-desktop-session.c:135
#16 handle_start (skeleton=0x5599417d7080, invocation=0x7fc8100e2ea0) at ../src/backends/meta-remote-desktop-session.c:302
#17 0x00007fc825b59ccd in ffi_call_unix64 () at ../src/x86/unix64.S:101
#18 0x00007fc825b5925a in ffi_call_int (cif=0x7ffe68731c80, fn=0x7fc826741b60 <handle_start>, rvalue=<optimized out>,
avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:669
#19 0x00007fc8273bf7fc in g_cclosure_marshal_generic (closure=0x5599405cb4e0, return_gvalue=0x7ffe68731e50,
n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>,
marshal_data=<optimized out>) at ../../../gobject/gclosure.c:1500
#20 0x00007fc8273befd2 in g_closure_invoke (closure=0x5599405cb4e0, return_value=0x7ffe68731e50, n_param_values=2,
param_values=0x55993d84cfe0, invocation_hint=0x7ffe68731e30) at ../../../gobject/gclosure.c:810
#21 0x00007fc8273d1f06 in signal_emit_unlocked_R (node=node@entry=0x559940e54590, detail=detail@entry=0,
instance=instance@entry=0x5599417d7080, emission_return=emission_return@entry=0x7ffe68731f80,
instance_and_params=instance_and_params@entry=0x55993d84cfe0) at ../../../gobject/gsignal.c:3780
#22 0x00007fc8273dc8af in g_signal_emitv (instance_and_params=instance_and_params@entry=0x55993d84cfe0,
signal_id=signal_id@entry=870, detail=detail@entry=0, return_value=return_value@entry=0x7ffe68731f80)
at ../../../gobject/gsignal.c:3230
#23 0x00007fc82669dc5c in _meta_dbus_remote_desktop_session_skeleton_handle_method_call (connection=<optimized out>,
sender=<optimized out>, object_path=<optimized out>,
interface_name=0x7fc810049160 "org.gnome.Mutter.RemoteDesktop.Session", method_name=0x7fc810041680 "Start",
parameters=<optimized out>, invocation=0x7fc8100e2ea0, user_data=0x5599417d7080) at src/meta-dbus-remote-desktop.c:4443
#24 0x00007fc827529d1a in g_dbus_interface_method_dispatch_helper (interface=<optimized out>,
method_call_func=0x7fc82669daa0 <_meta_dbus_remote_desktop_session_skeleton_handle_method_call>,
invocation=0x7fc8100e2ea0) at ../../../gio/gdbusinterfaceskeleton.c:613
#25 0x00007fc827510de0 in call_in_idle_cb (user_data=<optimized out>) at ../../../gio/gdbusconnection.c:4888
#26 0x00007fc8272d54ce in g_main_dispatch (context=0x55993d04d6c0) at ../../../glib/gmain.c:3309
#27 g_main_context_dispatch (context=context@entry=0x55993d04d6c0) at ../../../glib/gmain.c:3974
#28 0x00007fc8272d5880 in g_main_context_iterate (context=0x55993d04d6c0, block=block@entry=1, dispatch=dispatch@entry=1,
self=<optimized out>) at ../../../glib/gmain.c:4047
#29 0x00007fc8272d5b53 in g_main_loop_run (loop=0x55993d50dc10) at ../../../glib/gmain.c:4241
#30 0x00007fc82670283c in meta_run_main_loop () at ../src/core/main.c:658
#31 0x00007fc82670284e in meta_run () at ../src/core/main.c:673
There is a single monitor, and a single logical monitor:
(gdb) frame 1
#1 0x00007fc8266acd55 in mapping_helper_apply (helper=helper@entry=0x7ffe68731090, mapper=mapper@entry=0x7fc810004480)
at ../src/backends/meta-input-mapper.c:455
455 ../src/backends/meta-input-mapper.c: No such file or directory.
(gdb) p *mapper->monitor_manager->monitors
$1 = {data = 0x55993d4f22a0, next = 0x0, prev = 0x0}
(gdb) p *mapper->monitor_manager->logical_monitors
$2 = {data = 0x55993d0c7630, next = 0x0, prev = 0x0}
and a single set of device candidates:
(gdb) p *helper->device_maps
$4 = {data = 0x55993d4ffc00 "\320\255\304>\231U", len = 1}
(gdb) p *(DeviceCandidates *)helper->device_maps->data
$5 = {input = 0x55993ec4add0, matches = 0x7fc810096720, best = 0}
with a single match:
(gdb) p *$5->matches
$7 = {data = 0x55993f8e55c0 "", len = 1}
but the match has a NULL monitor:
(gdb) p *(DeviceMatch *)$7->data
$8 = {monitor = 0x0, score = 0}
I think this might have been set up by:
if (info->matches->len == 0)
{
DeviceMatch match = { 0 };
match.monitor =
meta_monitor_manager_get_laptop_panel (mapper->monitor_manager);
g_array_append_val (info->matches, match);
info->best = 0;
}
in the absence of a laptop panel?