gnome-shell crashes when logging out of wayland session
Affected version
Arch Linux: Mutter 43.1 6a962803 + cherrypicked 61cc31c3
Bug summary
Log out and gnome-shell crashes
What happened
Crashed
What did you expect to happen
To not crash
Relevant logs, screenshots, screencasts etc.
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0)
at pthread_kill.c:44
#1 0x00007fa292ea16b3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007fa292e51958 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x000055a2d826fb19 in dump_gjs_stack_on_signal_handler (signo=6) at ../gnome-shell/src/main.c:369
#4 0x00007fa292e51a00 in <signal handler called> () at /usr/lib/libc.so.6
#5 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0)
at pthread_kill.c:44
#6 0x00007fa292ea16b3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#7 0x00007fa292e51958 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8 0x00007fa292e3b53d in __GI_abort () at abort.c:79
#9 0x00007fa293f1006a in g_assertion_message
(domain=<optimized out>, file=0x7fa293458b78 "../mutter/clutter/clutter/clutter-main.c", line=<optimized out>, func=<optimized out>, message=<optimized out>) at ../glib/glib/gtestutils.c:3256
#10 0x00007fa293f6bae0 in g_assertion_message_expr
(domain=domain@entry=0x7fa293454015 "Clutter", file=file@entry=0x7fa293458b78 "../mutter/clutter/clutter/clutter-main.c", line=line@entry=477, func=0x7fa29345a7f0 <__func__.5.lto_priv.3> "_clutter_context_get_default", expr=expr@entry=0x7fa29345524d "ClutterCntx") at ../glib/glib/gtestutils.c:3282
#11 0x00007fa2933c4493 in _clutter_context_get_default () at ../mutter/clutter/clutter/clutter-main.c:477
#12 _clutter_context_get_default () at ../mutter/clutter/clutter/clutter-main.c:475
#13 clutter_get_default_backend () at ../mutter/clutter/clutter/clutter-backend.c:520
#14 0x00007fa293e8bdb6 in st_theme_context_finalize (object=0x55a2d8f3a940)
at ../gnome-shell/src/st/st-theme-context.c:108
#15 0x00007fa2945671bf in g_object_unref (_object=<optimized out>) at ../glib/gobject/gobject.c:3909
#16 g_object_unref (_object=0x55a2d8f3a940) at ../glib/gobject/gobject.c:3784
#17 0x00007fa293502be0 in ObjectInstance::disassociate_js_gobject() (this=0x55a2d95c3300) at ../gjs/gi/object.cpp:1750
#18 0x00007fa293568f36 in std::function<void (ObjectInstance*)>::operator()(ObjectInstance*) const
(__args#0=0x55a2d95c3300, this=0x7ffd2d0bb650) at /usr/include/c++/12.2.0/bits/std_function.h:591
#19 operator() (link=0x55a2d95c3300, __closure=0x7ffd2d0bb630) at ../gjs/gi/object.cpp:1305
#20 __gnu_cxx::__ops::_Iter_pred<ObjectInstance::remove_wrapped_gobjects_if(const Predicate&, const Action&)::<lambda(ObjectInstance*)> >::operator()<__gnu_cxx::__normal_iterator<ObjectInstance**, std::vector<ObjectInstance*> > >Python Exception <class 'gdb.error'>: value has been optimized out
(__it=, this=0x7ffd2d0bb630) at /usr/include/c++/12.2.0/bits/predefined_ops.h:318
#21 std::__remove_if<__gnu_cxx::__normal_iterator<ObjectInstance**, std::vector<ObjectInstance*> >, __gnu_cxx::__ops::_Iter_pred<ObjectInstance::remove_wrapped_gobjects_if(const Predicate&, const Action&)::<lambda(ObjectInstance*)> > >
Python Exception <class 'gdb.error'>: value has been optimized out
(__pred=..., __last=0x0, __first=) at /usr/include/c++/12.2.0/bits/stl_algobase.h:2140
#22 std::remove_if<__gnu_cxx::__normal_iterator<ObjectInstance**, std::vector<ObjectInstance*> >, ObjectInstance::remove_wrapped_gobjects_if(const Predicate&, const Action&)::<lambda(ObjectInstance*)> >Python Exception <class 'gdb.error'>: value has been optimized out
Python Exception <class 'gdb.error'>: value has been optimized out
(__pred=..., __last=, __first=)
at /usr/include/c++/12.2.0/bits/stl_algo.h:877
#23 ObjectInstance::remove_wrapped_gobjects_if(std::function<bool (ObjectInstance*)> const&, std::function<void (ObjectInstance*)> const&) [clone .constprop.0] (predicate=..., action=...) at ../gjs/gi/object.cpp:1301
#24 0x00007fa293500935 in ObjectInstance::update_heap_wrapper_weak_pointers(JSTracer*, JS::Compartment*, void*)
(trc=<optimized out>) at ../gjs/gi/object.cpp:1598
#25 0x00007fa29189e9ca in js::gc::GCRuntime::callWeakPointerCompartmentCallbacks(JSTracer*, JS::Compartment*) const
(this=<optimized out>, trc=0x55a2d8d445a0, comp=0x55a2d8ce7e50)
at /usr/src/debug/firefox-102.4.0/js/src/gc/GC.cpp:1355
#26 0x00007fa29189d077 in js::gc::GCRuntime::sweepEmbeddingWeakPointers(JS::GCContext*)
(this=0x55a2d8d43a90, gcx=0x55a2d8d43aa8) at /usr/src/debug/firefox-102.4.0/js/src/gc/Sweeping.cpp:1427
#27 js::gc::GCRuntime::beginSweepingSweepGroup(JS::GCContext*, js::SliceBudget&)
(this=0x55a2d8d43a90, gcx=0x55a2d8d43aa8, budget=<optimized out>)
at /usr/src/debug/firefox-102.4.0/js/src/gc/Sweeping.cpp:1493
#28 0x00007fa291c66032 in sweepaction::SweepActionSequence::run(js::gc::SweepAction::Args&)
(this=0x55a2d8d56770, args=...) at /usr/src/debug/firefox-102.4.0/js/src/gc/Sweeping.cpp:2085
#29 0x00007fa291c64d57 in sweepaction::SweepActionForEach<js::gc::SweepGroupsIter, JSRuntime*>::run(js::gc::SweepAction::Args&) (this=0x55a2d8d56830, args=...) at /usr/src/debug/firefox-102.4.0/js/src/gc/Sweeping.cpp:2120
#30 0x00007fa291723d01 in js::gc::GCRuntime::performSweepActions(js::SliceBudget&) (this=0x55a2d8d43a90, budget=...)
at /usr/src/debug/firefox-102.4.0/js/src/gc/Sweeping.cpp:2256
#31 0x00007fa291720203 in js::gc::GCRuntime::incrementalSlice(js::SliceBudget&, JS::GCReason, bool)
(this=0x55a2d8d43a90, budget=..., reason=JS::GCReason::COMPONENT_UTILS, budgetWasIncreased=<optimized out>)
at /usr/src/debug/firefox-102.4.0/js/src/gc/GC.cpp:3251
#32 0x00007fa29171b276 in js::gc::GCRuntime::gcCycle(bool, js::SliceBudget const&, JS::GCReason)
(this=0x55a2d8d43a90, nonincrementalByAPI=<optimized out>, budgetArg=<optimized out>, reason=JS::GCReason::ALLOC_TRIGGER) at /usr/src/debug/firefox-102.4.0/js/src/gc/GC.cpp:3732
#33 0x00007fa291719f64 in js::gc::GCRuntime::collect(bool, js::SliceBudget const&, JS::GCReason)
--Type <RET> for more, q to quit, c to continue without paging--
(this=0x55a2d8d43a90, nonincrementalByAPI=true, budget=..., reason=JS::GCReason::COMPONENT_UTILS)
at /usr/src/debug/firefox-102.4.0/js/src/gc/GC.cpp:3917
#34 0x00007fa2918d2d76 in js::gc::GCRuntime::gc(JS::GCOptions, JS::GCReason)
(this=0x1e0d, options=<optimized out>, reason=2464814668) at /usr/src/debug/firefox-102.4.0/js/src/gc/GC.cpp:3994
#35 0x00007fa293527f0c in GjsContextPrivate::dispose() (this=0x55a2d8d2d1a0) at ../gjs/gjs/context.cpp:444
#36 GjsContextPrivate::dispose() (this=0x55a2d8d2d1a0) at ../gjs/gjs/context.cpp:421
#37 gjs_context_dispose(GObject*) (object=<optimized out>) at ../gjs/gjs/context.cpp:401
#38 0x00007fa294567104 in g_object_unref (_object=<optimized out>) at ../glib/gobject/gobject.c:3867
#39 g_object_unref (_object=0x55a2d8d2d310) at ../glib/gobject/gobject.c:3784
#40 0x00007fa29422adae in _shell_global_destroy_gjs_context (self=<optimized out>)
at ../gnome-shell/src/shell-global.c:702
#41 0x000055a2d826f506 in main (argc=<optimized out>, argv=<optimized out>) at ../gnome-shell/src/main.c:593
Edited by David Bohman