gnome-shell crashes (segfault) after disconnecting docking station and closing lid [no extensions]
Affected version
- NixOS 23.05
- GNOME Shell 44.2
- wayland
- No extensions enabled
Bug summary
Similar repro as #2846 (closed) but no extensions are used and backtrace different.
Segfault in g_queue_peek_head
called from on_swap_buffer_update_result
after disconnecting monitors.
Steps to reproduce
Sequence of events that seem to lead to this crash (happens weekly)
- Lock screen
- Disconnect docking station
- Close lid
What happened
Gnome shell segfaults.
What did you expect to happen
Handle disconnecting displays gracefully without crashing.
Relevant logs, screenshots, screencasts etc.
Journal from docking station disconnect to crash:
Jul 13 16:43:32 nixos boltd[925]: [00f06168-8a33-WD19TB Thunderbolt Dock ] disconnected (/sys/devices/pci0000:00/0000:00:0d.2/domain0/0-0/0-3)
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc73ae0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a3ea60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd45b1c70e0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc74e60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a40940 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e05c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e2640 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd39bbfa8c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc73ae0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a3ea60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd45b1c70e0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc74e60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a40940 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e05c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e2640 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd39bbfa8c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc73ae0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a3ea60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd45b1c70e0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc74e60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a40940 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e05c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e2640 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd39bbfa8c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc73ae0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a3ea60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd45b1c70e0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc74e60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a40940 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e05c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e2640 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd39bbfa8c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc73ae0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a3ea60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd45b1c70e0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc74e60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a40940 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e05c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e2640 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd39bbfa8c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc73ae0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a3ea60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd45b1c70e0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd3dbc74e60 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd4a3a40940 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e05c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fcd769e2640 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .firefox-wrappe[30453]: Couldn't map window 0x7fd39bbfa8c0 as subsurface because its parent is not mapped.
Jul 13 16:43:33 nixos .gnome-shell-wr[1877]: Page flip failed: drmModeAtomicCommit: No such file or directory
Jul 13 16:43:33 nixos kernel: traps: .gnome-shell-wr[1877] general protection fault ip:7fab0c13f37d sp:7ffd23454948 error:0 in libglib-2.0.so.0.7600.2[7fab0c0f0000+96000]
Attached:
- Journal logs gnome-crash.log
- gdb backtrace gnome-bt-full.log
Additionally the value of *onscreen
in cogl_onscreen_peek_head_frame_info
appears to contain junk:
#1 0x00007fab0bd02e31 in cogl_onscreen_peek_head_frame_info (onscreen=onscreen@entry=0x7dbc720) at ../cogl/cogl/cogl-onscreen.c:492
492 return g_queue_peek_head (&priv->pending_frame_infos);
(gdb) p *onscreen
$1 = {parent_instance = {parent_instance = {g_type_instance = {g_class = 0xaaaaaaaaaaaaaaaa}, ref_count = 2863311530, qdata = 0xaaaaaaaaaaaaaaaa}}}