Public bug reported:
ENVIRONMENT
-----------
- Ubuntu 26.04 (resolute), kernel 7.0.0-38-generic
- gnome-shell 50.1-0ubuntu1.3, mutter 50.1-0ubuntu2.4 (libmutter-18-0)
- libglib2.0-0t64 2.88.0-1ubuntu0.1, libgjs0 1.88.0-1
- Wayland session, Intel Arc Graphics (Meteor Lake-P, 00:02.0 [8086:7d55], i915)
- Single internal panel eDP-1 2880x1920@120 with fractional scaling 1.6667; no
external monitors
- suspend via lid close, mem_sleep = s2idle
ACTUAL BEHAVIOUR
----------------
On wake, 1–20 s after PM: suspend exit, gnome-shell dies:
gnome-shell[4150628]: segfault at 36 ip 00007eb904ab2c89 sp 00007ffe664096d0
error 4
in libglib-2.0.so.0.8800.0[4bc89,7eb904a86000+a6000]
systemd[3801]: [email protected]: Main process exited,
code=dumped, status=11/SEGV
gnome-calendar[4154001]: Lost connection to Wayland compositor.
The session ends and gdm shows the login screen; every running
application is terminated.
FREQUENCY
---------
9 crashes in 32 resumes between 2026-10-23 and 2026-10-29 (~28 %). All 9 within
20 s of
PM: suspend exit; zero crashes at any other time.
EXPECTED BEHAVIOUR
------------------
Session survives resume; clients keep running.
STACK (GDB ATTACHED TO THE LIVE COMPOSITOR, CAUGHT BEFORE THE PROCESS DIED)
---------------------------------------------------------------------------
#0 0x00005632b6cd3860 in ??? ()
#1 g_hash_table_remove ()
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 ???
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 ???
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 ???
/usr/lib/x86_64-linux-gnu/libmutter-18.so.0
#5 g_object_unref ()
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 g_list_foreach ()
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 g_list_free_full ()
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#8 ???
/usr/lib/x86_64-linux-gnu/libmutter-18.so.0
#9 ???
/usr/lib/x86_64-linux-gnu/libmutter-18.so.0
#10 ???
/usr/lib/x86_64-linux-gnu/libmutter-18.so.0
#11 cogl_onscreen_swap_buffers_with_damage ()
/usr/lib/x86_64-linux-gnu/mutter-18/libmutter-cogl-18.so.0
#12 ???
/usr/lib/x86_64-linux-gnu/libmutter-18.so.0
#13 ???
/usr/lib/x86_64-linux-gnu/libmutter-18.so.0
#14 ???
/usr/lib/x86_64-linux-gnu/mutter-18/libmutter-clutter-18.so.0
#15 clutter_frame_clock_dispatch ()
/usr/lib/x86_64-linux-gnu/mutter-18/libmutter-clutter-18.so.0
#16 ???
/usr/lib/x86_64-linux-gnu/mutter-18/libmutter-clutter-18.so.0
Read bottom-up: during swap_buffers_with_damage mutter goes through a list of
frames
(g_list_free_full → g_object_unref → object finalize → signal emission) and
ends up in
g_hash_table_remove() with a corrupted hash function pointer (call *0x30(%r15)
with r15 = 6,
fault at address 0x36). Other crashes of the same period show instruction fetch
from garbage
addresses (error 14/15), i.e. the object bookkeeping of MetaFrameNative (or its
signal handlers)
is corrupted — a double free / use-after-free rather than a logic error in GLib.
ADDITIONAL OBSERVATIONS
-----------------------
1. During the same boot, i915 rejected direct-scanout atomic commits thousands
of times:
Direct scanout page flip failed: drmModeAtomicCommit: Invalid argument —
5396 lines.
2. Setting MUTTER_DEBUG_PAINT=disable-direct-scanout made the crashes disappear:
14 resumes across 4 reboots, 0 crashes, and the atomic-commit failures went
to zero
(p ≤ 0.01 against the 28 % base rate). Caveat: on the same day 133 GB of
build artifacts were
deleted and swap grew from 8 to 16 GiB, so the improvement is not fully
attributed.
A 60-second-window correlation between the scanout failures and the crashes
was *not* found
(0/9 crashes had one vs 3/23 clean resumes), so the link needs upstream
analysis rather than
being claimed.
3. meta_frame_native_release: assertion '!frame_native->kms_update' failed is
logged 400+ times
per boot, 407 of 417 on **suspend entry** and only 10 on resume; it does not
correlate with the
crashes (25 % crash rate with it, 30 % without), so it is likely unrelated
or only a symptom of
the same suspend-time frame handling.
STEPS TO REPRODUCE
------------------
1. Plain Ubuntu 26.04 Wayland session on Intel Arc MTS, s2idle suspend.
2. Close/open the lid repeatedly.
3. Roughly one wakeup in three ends with the login screen (session gone).
To capture the stack (does not need symbols): sudo sysctl -w
kernel.yama.ptrace_scope=0, attach
gdb -p $(pgrep -f 'gnome-shell --mode=ubuntu') with handle SIGSEGV stop,
continue; the trace
is printed before the process dies.
ATTACHMENTS THAT WOULD HELP / NOTES
-----------------------------------
- apport produced a _usr_bin_gnome-shell.1000.crash (88 MB) but the embedded
core is corrupt:
the gzip payload has a valid header (CoreDump) and a broken deflate stream
(invalid stored block lengths) — reproduced twice, so attaching it is
pointless; the gdb trace
above was captured live instead.
- journalctl -b -1 around the crash contains the segfault at 36 … in
libglib-2.0.so.0
line and the service failure.
** Affects: mutter (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2173026
Title:
gnome-shell segfaults on resume from suspend: SIGSEGV in
g_hash_table_remove() via cogl_onscreen_swap_buffers_with_damage(),
whole session is lost
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/2173026/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs