On resume: gnome-shell segfault at [...] error 4 in libmutter-10.so.0.0.0 [...]
Affected version
- ArchLinux (rolling)
- mutter 42.0-2
- gnome-shell 1:42.0-1
- Wayland
Bug summary
Since around GNOME 41 (I think), gnome-shell would occasionally / infrequently crash on resume from suspend. Since around GNOME 42 (I think), this is happening on most (but not all) resumes. I don't have stack traces from the former so can't be sure it's the same issue, but seems similar enough (both were gnome-shell segfaults in libmutter-{9,10}.so).
Steps to reproduce
- Start a new gnome-shell session
- Use the session a bit (I couldn't reproduce on a fresh session but maybe I didn't try enough times)
- Either suspend through menu or via inactivity timeout.
- Resume.
What happened
On resume, I'm back at GDM and login starts a new session.
What did you expect to happen
Resume into previous / existing session without crashing.
Relevant logs, screenshots, screencasts etc.
From the journal:
Apr 20 17:48:44 dragon kernel: gnome-shell[3219]: segfault at 20 ip 00007f4fd2ccc821 sp 00007fff9a54b860 error 4 in libmutter-10.so.0.0.0[7f4fd2ba4000+1a1000]
Apr 20 17:48:44 dragon kernel: Code: 1f 84 00 00 00 00 00 66 90 f3 0f 1e fa 41 56 49 89 f6 41 55 41 89 d5 41 54 55 48 89 fd 48 89 cf 53 ff 15 32 f4 10 00 48 89 ee <48> 8b 78 20 49 89 c4 ff 15 7a f4 10 00 48 85 c0 74 5d 48 89 c3 4c
Output of gdb bt full
with debugging symbols:
#0 0x00007f08b09e1821 in meta_wayland_pointer_get_pointer_client (pointer=<optimized out>, pointer=<optimized out>, client=<optimized out>)
at ../mutter/src/wayland/meta-wayland-pointer.c:183
pointer_client = <optimized out>
res = <optimized out>
pointer = <optimized out>
#1 meta_wayland_pointer_gesture_pinch_create_new_resource
(id=<optimized out>, gestures_resource=<optimized out>, client=<optimized out>, pointer=<optimized out>)
at ../mutter/src/wayland/meta-wayland-pointer-gesture-pinch.c:157
pointer_client = <optimized out>
res = <optimized out>
pointer = <optimized out>
#2 gestures_get_pinch (client=0x559146f52eb0, resource=0x559146fb8be0, id=273, pointer_resource=<optimized out>)
at ../mutter/src/wayland/meta-wayland-pointer-gestures.c:54
pointer = <optimized out>
#3 0x00007f08afce9536 in ffi_call_unix64 () at ../src/x86/unix64.S:105
#4 0x00007f08afce6037 in ffi_call_int
(cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:672
classes = {X86_64_INTEGER_CLASS, 21905, 1120600896, 21905}
stack = <optimized out>
argp = 0x7fff4594a9b0 ""
arg_types = <optimized out>
gprcount = 4
ssecount = <optimized out>
ngpr = 1
nsse = 0
i = <optimized out>
avn = <optimized out>
flags = <optimized out>
reg_args = <optimized out>
#5 0x00007f08b024eaf2 in wl_closure_invoke (closure=closure@entry=0x559145701000, target=<optimized out>, target@entry=0x559146fb8be0, opcode=opcode@entry=1, data=<optimized out>, data@entry=0x559146f52eb0, flags=<optimized out>) at ../wayland-1.20.0/src/connection.c:1025
count = <optimized out>
cif = {abi = FFI_UNIX64, nargs = 4, arg_types = 0x7fff4594ab10, rtype = 0x7f08afcea1a0 <ffi_type_void>, bytes = 0, flags = 0}
ffi_types = {0x7f08afcea2a0 <ffi_type_pointer>, 0x7f08afcea2a0 <ffi_type_pointer>, 0x7f08afcea240 <ffi_type_uint32>, 0x7f08afcea2a0 <ffi_type_pointer>, 0x5591467f1b00, 0x2f56063ac728db00, 0x7fff4594abd0, 0x7f08b1715c83 <value_from_ffi_type+35>, 0x7fff4594ac90, 0x7fff4594ac30, 0x7fff4594acf0, 0x7fff4594ac30, 0x7fff4594acf0, 0x7f08b171644c <g_cclosure_marshal_generic+1308>, 0x55914440b8b8, 0x55914440b8d0, 0x55914440b8e8, 0x55914440b900, 0x55914440b918, 0x55914440b930, 0x55914440b948, 0x7f08b15f5dfa <g_hash_table_lookup+42>}
ffi_args = {0x7fff4594aad0, 0x7fff4594aad8, 0x559145701018, 0x559145701020, 0x559146768510, 0x0, 0x2800003, 0x7fff4594af70, 0x559146768510, 0x7f08b099acb7 <meta_window_reload_property_from_xwindow+87>, 0x0, 0x7f08b0250402 <log_closure+82>, 0x0, 0x55914323d1b0, 0x0, 0x2800003, 0x559146566da0, 0x2f56063ac728db00, 0x1, 0xffffffffffffff80, 0x7f08b0aece38 <zwp_pointer_gestures_v1_requests.lto_priv+24>, 0x7f08b0a6f343}
implementation = <optimized out>
#6 0x00007f08b0252e14 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x559146f52eb0) at ../wayland-1.20.0/src/wayland-server.c:437
connection = 0x55914702fef0
resource = <optimized out>
object = 0x559146fb8be0
closure = 0x559145701000
message = 0x7f08b0aece38 <zwp_pointer_gestures_v1_requests.lto_priv+24>
p = {19, 1048577}
resource_flags = 0
opcode = 1
size = <optimized out>
since = <optimized out>
len = <optimized out>
#7 0x00007f08b025184a in wl_event_loop_dispatch (loop=0x5591432162f0, timeout=timeout@entry=0) at ../wayland-1.20.0/src/event-loop.c:1027
ep = {{events = 1, data = {ptr = 0x559146f4ad10, fd = 1190440208, u32 = 1190440208, u64 = 94082449059088}}, {events = 1, data = {ptr = 0x559146fb68e0, fd = 1190881504, u32 = 1190881504, u64 = 94082449500384}}, {events = 0, data = {ptr = 0xb167562800000000, fd = 0, u32 = 0, u64 = 12783280797113122816}}, {events = 32520, data = {ptr = 0x7f08b166d071, fd = -1318662031, u32 = 2976305265, u64 = 139675312771185}}, {events = 1167372192, data = {ptr = 0x4594b0d000007fff, fd = 32767, u32 = 32767, u64 = 5013826692569923583}}, {events = 32767, data = {ptr = 0x7f08b16d55f7, fd = -1318234633, u32 = 2976732663, u64 = 139675313198583}}, {events = 2976297005, data = {ptr = 0x4594afc000007f08, fd = 32520, u32 = 32520, u64 = 5013825524338818824}}, {events = 32767, data = {ptr = 0xf592285a0b, fd = -1842849269, u32 = 2452118027, u64 = 1054719105547}}, {events = 29, data = {ptr = 0x200000000, fd = 0, u32 = 0, u64 = 8589934592}}, {events = 0, data = {ptr = 0x7f0868196050, fd = 1746493520, u32 = 1746493520, u64 = 139674082959440}}, {events = 0, data = {ptr = 0x4594b0e000000000, fd = 0, u32 = 0, u64 = 5013826761289367552}}, {events = 32767, data = {ptr = 0x2f56063ac728db00, fd = -953623808, u32 = 3341343488, u64 = 3410920617298942720}}, {events = 1179612432, data = {ptr = 0x5591, fd = 21905, u32 = 21905, u64 = 21905}}, {events = 0, data = {ptr = 0x559142ca94c0, fd = 1120572608, u32 = 1120572608, u64 = 94082379191488}}, {events = 2452118027, data = {ptr = 0x4597dab0000000f5, fd = 245, u32 = 245, u64 = 5014717159549436149}}, {events = 21905, data = {ptr = 0x7fff4594b0d0, fd = 1167372496, u32 = 1167372496, u64 = 140734360760528}}, {events = 1167372472, data = {ptr = 0xb1663fb100007fff, fd = 32767, u32 = 32767, u64 = 12782974621779525631}}, {events = 32520, data = {ptr = 0x3000000028, fd = 40, u32 = 40, u64 = 206158430248}}, {events = 1167372416, data = {ptr = 0x4594afc000007fff, fd = 32767, u32 = 32767, u64 = 5013825524338819071}}, {events = 32767, data = {ptr = 0x2f56063ac728db00, fd = -953623808, u32 = 3341343488, u64 = 3410920617298942720}}, {events = 2958206720, data = {ptr = 0xb01455df00007f08, fd = 32520, u32 = 32520, u64 = 12687860466475630344}}, {events = 32520, data = {ptr = 0x7fff4594b000, fd = 1167372288, u32 = 1167372288, u64 = 140734360760320}}, {events = 1179612432, data = {ptr = 0x5591, fd = 21905, u32 = 21905, u64 = 21905}}, {events = 0, data = {ptr = 0x559146c56cc0, fd = 1187343552, u32 = 1187343552, u64 = 94082445962432}}, {events = 1180116896, data = {ptr = 0x5591, fd = 21905, u32 = 21905, u64 = 21905}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 3341343488, data = {ptr = 0x4594b0c42f56063a, fd = 794166842, u32 = 794166842, u64 = 5013826641824450106}}, {events = 32767, data = {ptr = 0x5591464f7510, fd = 1179612432, u32 = 1179612432, u64 = 94082438231312}}, {events = 0, data = {ptr = 0xb074b2a400000000, fd = 0, u32 = 0, u64 = 12714984065418133504}}, {events = 32520, data = {ptr = 0x559145363560, fd = 1161180512, u32 = 1161180512, u64 = 94082419799392}}, {events = 8, data = {ptr = 0x4594b06000000000, fd = 0, u32 = 0, u64 = 5013826211533553664}}, {events = 32767, data = {ptr = 0x8, fd = 8, u32 = 8, u64 = 8}}}
source = <optimized out>
i = 1
count = <optimized out>
has_timers = <optimized out>
#8 0x00007f08b09cc1ad in wayland_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../mutter/src/wayland/meta-wayland.c:104
source = <optimized out>
loop = <optimized out>
#9 0x00007f08b1613163 in g_main_dispatch (context=0x559142ca94c0) at ../glib/glib/gmain.c:3417
dispatch = 0x7f08b09cc190 <wayland_event_source_dispatch>
prev_source = 0x0
begin_time_nsec = 1054719106574
was_in_call = <optimized out>
user_data = 0x0
callback = 0x0
cb_funcs = 0x0
cb_data = 0x0
need_destroy = <optimized out>
source = 0x55914323d2f0
current = 0x559142cc8c30
i = 0
#10 g_main_context_dispatch (context=0x559142ca94c0) at ../glib/glib/gmain.c:4135
#11 0x00007f08b16699e9 in g_main_context_iterate.constprop.0 (context=0x559142ca94c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4211
max_priority = 120
timeout = 0
some_ready = 1
nfds = 20
allocated_nfds = 20
fds = 0x559144cf07c0
begin_time_nsec = 1054719091918
#12 0x00007f08b16126a3 in g_main_loop_run (loop=0x559144786750) at ../glib/glib/gmain.c:4411
__func__ = "g_main_loop_run"
#13 0x00007f08b09576db in meta_context_run_main_loop (context=context@entry=0x559142ca40c0, error=error@entry=0x7fff4594b260) at ../mutter/src/core/meta-context.c:437
priv = 0x559142ca4050
__func__ = "meta_context_run_main_loop"
#14 0x0000559140ff848f in main (argc=<optimized out>, argv=<optimized out>) at ../gnome-shell/src/main.c:566
context = 0x559142ca40c0
error = 0x0
ecode = 0
Other possibly relevant info
- External monitor, laptop lip closed
- Nvidia proprietary driver
- Disabling all extensions makes no difference
- Sometimes I'll briefly see the GNOME lockscreen on resume before gnome-shell crashes.
- Touchpad is disabled in Settings > Mouse and Touchpad.
Happy to provide any other info that can help. Thanks!
I originally reported this as mutter#2237 (closed) but I'm not really sure where the actual problem is. Even if I disable the Touchpad in GNOME Settings -> Mouse and Touchpad before suspending, I still have this issue. Of course I'll close whichever issue is less relevant with some guidance.