Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • M mutter
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 975
    • Issues 975
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 124
    • Merge requests 124
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOME
  • mutter
  • Issues
  • #1414

Closed
Open
Created Sep 09, 2020 by Simon McVittie@smcvDeveloper

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?

Assignee
Assign to
Time tracking