[Wayland][Headless] GNOME Shell crashes when run in headless mode with no virtual monitors available
Affected version
Tested GNOME Shell 40.3 on Fedora 34 under Wayland
Bug summary
GNOME Shell crashes when i run it in headless mode gnome-shell --wayland --headless
without adding any virtual monitor (--virtual-monitor wxh)
.
Steps to reproduce
- Setup a separate dbus session: https://gitlab.gnome.org/GNOME/mutter/-/wikis/Debug-tips-and-utilities
- Run:
gnome-shell --wayland --headless
What happened
GNOME-Shell crashed
What did you expect to happen
Not to crash, my guess is that it is trying to draw the ui but it should wait until a virtual monitor is added.
Relevant logs, screenshots, screencasts etc.
Output from command line:
**
Clutter:ERROR:../clutter/clutter/clutter-actor.c:15717:clutter_actor_get_real_resource_scale: assertion failed: (guessed_scale >= 1.f)
Bail out! Clutter:ERROR:../clutter/clutter/clutter-actor.c:15717:clutter_actor_get_real_resource_scale: assertion failed: (guessed_scale >= 1.f)
== Stack trace for context 0x560e8b8b8150 ==
#0 560e8ba54070 i resource:///org/gnome/shell/ui/calendar.js:703 (ed61615c970 @ 108)
#1 560e8ba53fd8 i resource:///org/gnome/shell/ui/calendar.js:428 (ed61615cce0 @ 125)
#2 560e8ba53f40 i resource:///org/gnome/shell/ui/dateMenu.js:893 (78b88e9f880 @ 69)
#3 560e8ba53e98 i resource:///org/gnome/shell/ui/dateMenu.js:916 (78b88e9f7e0 @ 128)
#4 560e8ba53db8 i resource:///org/gnome/shell/ui/dateMenu.js:882 (78b88e9f9c0 @ 1617)
#5 560e8ba53d08 i resource:///org/gnome/shell/ui/panel.js:1018 (78b88e8c880 @ 103)
#6 560e8ba53c38 i resource:///org/gnome/shell/ui/panel.js:1029 (78b88e8c830 @ 109)
#7 560e8ba53b90 i resource:///org/gnome/shell/ui/panel.js:974 (78b88e8c920 @ 109)
#8 560e8ba53ae0 i resource:///org/gnome/shell/ui/panel.js:784 (78b88e8ce20 @ 845)
#9 560e8ba53a48 i resource:///org/gnome/shell/ui/main.js:225 (73cd76d8bf0 @ 620)
#10 560e8ba53998 i resource:///org/gnome/shell/ui/main.js:166 (73cd76d8d30 @ 324)
#11 560e8ba53910 i <main>:1 (73cd768bdd0 @ 48)
Aborted (core dumped)
Stack trace from core dump:
Core was generated by `gnome-shell --wayland --headless'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:49
49 return ret;
[Current thread is 1 (Thread 0x7f3105ce0d80 (LWP 16630))]
(gdb) bt
#0 __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:49
#1 0x0000000000402c25 in dump_gjs_stack_on_signal_handler (signo=6) at ../../../../jhbuild/checkout/gnome-shell/src/main.c:353
#2 <signal handler called>
#3 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#4 0x00007f310a0388a4 in __GI_abort () at abort.c:79
#5 0x00007f310b0f1d8c in g_assertion_message (domain=<optimized out>, file=<optimized out>, line=<optimized out>, func=<optimized out>, message=<optimized out>) at ../../../../jhbuild/checkout/glib/glib/gtestutils.c:3076
#6 0x00007f310b14e46b in g_assertion_message_expr (domain=0x7f310a5cdbbe "Clutter", file=0x7f310a5cdd80 "../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c", line=15717, func=0x7f310a5d40e0 <__func__.78> "clutter_actor_get_real_resource_scale", expr=<optimized out>) at ../../../../jhbuild/checkout/glib/glib/gtestutils.c:3102
#7 0x00007f310a527c4c in clutter_actor_get_real_resource_scale (self=0x24e6010) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15717
#8 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x2fd8060) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#9 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x3320a00) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#10 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x3321450) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#11 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x331ffb0) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#12 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x347ac30) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#13 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x347bbc0) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#14 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x34f7220) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#15 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x33d3b10) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#16 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x3339910) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#17 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x333d3c0) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#18 0x00007f310a527b3b in clutter_actor_get_real_resource_scale (self=0x333daf0) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15690
#19 0x00007f310a527d11 in clutter_actor_get_resource_scale (self=0x333daf0) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-actor.c:15767
#20 0x00007f310a5a1695 in clutter_text_get_preferred_width (self=0x333daf0, for_height=-1, min_width_p=0x0, natural_width_p=0x7fffd85b4f84) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-text.c:2915
#21 0x00007f310a5a4cbd in clutter_text_queue_redraw_or_relayout (self=0x333daf0) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-text.c:4806
#22 0x00007f310a5a4dcb in buffer_notify_text (buffer=0x35c10d0, spec=0x31bc3b0, self=0x333daf0) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-text.c:4824
#23 0x00007f310b2194ff in g_closure_invoke (closure=0x35cda50, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffd85b5170, invocation_hint=invocation_hint@entry=0x7fffd85b5110) at ../../../../jhbuild/checkout/glib/gobject/gclosure.c:810
#24 0x00007f310b22afd6 in signal_emit_unlocked_R (node=node@entry=0x220c400, detail=detail@entry=1175, instance=instance@entry=0x35c10d0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffd85b5170) at ../../../../jhbuild/checkout/glib/gobject/gsignal.c:3741
#25 0x00007f310b231359 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffd85b5308) at ../../../../jhbuild/checkout/glib/gobject/gsignal.c:3497
#26 0x00007f310b231882 in g_signal_emit (instance=instance@entry=0x35c10d0, signal_id=<optimized out>, detail=<optimized out>) at ../../../../jhbuild/checkout/glib/gobject/gsignal.c:3553
#27 0x00007f310b21d944 in g_object_dispatch_properties_changed (object=0x35c10d0, n_pspecs=<optimized out>, pspecs=<optimized out>) at ../../../../jhbuild/checkout/glib/gobject/gobject.c:1206
#28 0x00007f310b21d192 in g_object_notify_queue_thaw (object=0x35c10d0, nqueue=<optimized out>) at ../../../../jhbuild/checkout/glib/gobject/gobject.c:341
#29 0x00007f310b21f94b in g_object_thaw_notify (object=0x35c10d0) at ../../../../jhbuild/checkout/glib/gobject/gobject.c:1443
#30 0x00007f310a5aa598 in clutter_text_buffer_set_text (buffer=0x35c10d0, chars=0x35cd8c0 "August", n_chars=-1) at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-text-buffer.c:573
#31 0x00007f310a5a6c4f in clutter_text_set_text (self=0x333daf0, text=0x35cd8c0 "August") at ../../../../jhbuild/checkout/mutter/clutter/clutter/clutter-text.c:5711
#32 0x00007f3109f921c6 in st_label_set_text (label=0x333d3c0, text=0x35cd8c0 "August") at ../../../../jhbuild/checkout/gnome-shell/src/st/st-label.c:386
#33 0x00007f3109f9167c in st_label_set_property (gobject=0x333d3c0, prop_id=2, value=0x7fffd85b5640, pspec=0x28c5500) at ../../../../jhbuild/checkout/gnome-shell/src/st/st-label.c:85
#34 0x00007f310b21e536 in object_set_property (object=object@entry=0x333d3c0, pspec=0x28c5500, value=value@entry=0x7fffd85b5710, nqueue=nqueue@entry=0x35c8050) at ../../../../jhbuild/checkout/glib/gobject/gobject.c:1565
#35 0x00007f310b22069c in g_object_setv (values=<optimized out>, names=<optimized out>, n_properties=<optimized out>, object=0x333d3c0) at ../../../../jhbuild/checkout/glib/gobject/gobject.c:2410
#36 g_object_setv (object=0x333d3c0, n_properties=<optimized out>, names=<optimized out>, values=<optimized out>) at ../../../../jhbuild/checkout/glib/gobject/gobject.c:2384
#37 0x00007f310b22129b in g_object_set_property (object=<optimized out>, property_name=<optimized out>, value=<optimized out>) at ../../../../jhbuild/checkout/glib/gobject/gobject.c:2701
#38 0x00007f310a679995 in ObjectInstance::prop_setter_impl (this=0x333c9b0, cx=0x250da00, name=..., value=...) at ../../../../jhbuild/checkout/gjs/gjs/jsapi-util.h:134
#39 0x00007f310a679dd3 in ObjectBase::prop_setter (cx=0x250da00, argc=<optimized out>, vp=<optimized out>) at ../../../../jhbuild/checkout/gjs/gi/object.cpp:499
#40 0x00007f3107518508 in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) () from /lib64/libmozjs-78.so.0
#41 0x00007f3107518992 in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) () from /lib64/libmozjs-78.so.0
#42 0x00007f310751905c in js::CallSetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::Handle<JS::Value>) () from /lib64/libmozjs-78.so.0
#43 0x00007f31076ca918 in SetExistingProperty(JSContext*, JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::Handle<js::NativeObject*>, JS::Handle<JS::PropertyResult>, JS::ObjectOpResult&) () from /lib64/libmozjs-78.so.0
#44 0x00007f31076d24b4 in bool js::NativeSetProperty<(js::QualifiedBool)1>(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) () from /lib64/libmozjs-78.so.0
#45 0x00007f310750bdb1 in Interpret(JSContext*, js::RunState&) () from /lib64/libmozjs-78.so.0
#46 0x00007f3107517eee in js::RunScript(JSContext*, js::RunState&) () from /lib64/libmozjs-78.so.0
#47 0x00007f3107518337 in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) () from /lib64/libmozjs-78.so.0
#48 0x00007f3107518992 in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) () from /lib64/libmozjs-78.so.0
#49 0x00007f310758bfd7 in JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) () from /lib64/libmozjs-78.so.0
#50 0x00007f310a691243 in GjsContextPrivate::call_function (this=this@entry=0x2500070, this_obj=..., this_obj@entry=..., func_val=..., func_val@entry=..., args=..., rval=...) at ../../../../jhbuild/checkout/gjs/gjs/context.cpp:1356
#51 0x00007f310a670b33 in ObjectInstance::constructor_impl (this=<optimized out>, context=0x250da00, object=..., argv=...) at /usr/include/mozjs-78/js/RootingAPI.h:1152
#52 0x00007f310a67c1e0 in GIWrapperBase<ObjectBase, ObjectPrototype, ObjectInstance>::constructor (cx=0x250da00, argc=<optimized out>, vp=<optimized out>) at /usr/include/mozjs-78/js/RootingAPI.h:1152
#53 0x00007f3107519331 in InternalConstruct(JSContext*, js::AnyConstructArgs const&) [clone .lto_priv.0] () from /lib64/libmozjs-78.so.0
#54 0x00007f310750a664 in Interpret(JSContext*, js::RunState&) () from /lib64/libmozjs-78.so.0
#55 0x00007f3107517eee in js::RunScript(JSContext*, js::RunState&) () from /lib64/libmozjs-78.so.0
#56 0x00007f3107518337 in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) () from /lib64/libmozjs-78.so.0
#57 0x00007f3107518992 in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) () from /lib64/libmozjs-78.so.0
#58 0x00007f310758bfd7 in JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) () from /lib64/libmozjs-78.so.0
#59 0x00007f310a691243 in GjsContextPrivate::call_function (this=this@entry=0x2500070, this_obj=..., this_obj@entry=..., func_val=..., func_val@entry=..., args=..., rval=...) at ../../../../jhbuild/checkout/gjs/gjs/context.cpp:1356
#60 0x00007f310a670b33 in ObjectInstance::constructor_impl (this=<optimized out>, context=0x250da00, object=..., argv=...) at /usr/include/mozjs-78/js/RootingAPI.h:1152
#61 0x00007f310a67c1e0 in GIWrapperBase<ObjectBase, ObjectPrototype, ObjectInstance>::constructor (cx=0x250da00, argc=<optimized out>, vp=<optimized out>) at /usr/include/mozjs-78/js/RootingAPI.h:1152
#62 0x00007f3107519331 in InternalConstruct(JSContext*, js::AnyConstructArgs const&) [clone .lto_priv.0] () from /lib64/libmozjs-78.so.0
#63 0x00007f310750a664 in Interpret(JSContext*, js::RunState&) () from /lib64/libmozjs-78.so.0
#64 0x00007f3107517eee in js::RunScript(JSContext*, js::RunState&) () from /lib64/libmozjs-78.so.0
#65 0x00007f3107519566 in js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JS::Handle<JSObject*>, JS::Handle<JS::Value>, js::AbstractFramePtr, JS::MutableHandle<JS::Value>) () from /lib64/libmozjs-78.so.0
#66 0x00007f31076181d7 in bool EvaluateSourceBuffer<char16_t>(JSContext*, js::ScopeKind, JS::Handle<JSObject*>, JS::ReadOnlyCompileOptions const&, JS::SourceText<char16_t>&, JS::MutableHandle<JS::Value>) [clone .lto_priv.0] () from /lib64/libmozjs-78.so.0
#67 0x00007f31075fd16e in JS::Evaluate(JSContext*, JS::Handle<JS::StackGCVector<JSObject*, js::TempAllocPolicy> >, JS::ReadOnlyCompileOptions const&, JS::SourceText<char16_t>&, JS::MutableHandle<JS::Value>) () from /lib64/libmozjs-78.so.0
#68 0x00007f310a693639 in GjsContextPrivate::eval_with_scope (this=0x2500070, scope_object=..., script=<optimized out>, script_len=140736823264304, filename=<optimized out>, retval=...) at /usr/include/mozjs-78/js/RootingAPI.h:903
#69 0x00007f310a693927 in GjsContextPrivate::eval (this=0x2500070, script=0x7f310b482278 "imports.ui.environment.init();imports.ui.main.start();", script_len=-1, filename=0x7f310b48226f "<main>", exit_status_p=0x7fffd85b865c, error=0x7fffd85b8660) at /usr/include/mozjs-78/js/RootingAPI.h:596
#70 0x00007f310a693ab9 in gjs_context_eval (js_context=0x2500190, script=0x7f310b482278 "imports.ui.environment.init();imports.ui.main.start();", script_len=-1, filename=0x7f310b48226f "<main>", exit_status_p=0x7fffd85b865c, error=0x7fffd85b8660) at ../../../../jhbuild/checkout/gjs/gjs/context.cpp:1056
#71 0x00007f310b45f5e6 in gnome_shell_plugin_start (plugin=0x26a0f80) at ../../../../jhbuild/checkout/gnome-shell/src/gnome-shell-plugin.c:127
#72 0x00007f310a2c5262 in meta_plugin_manager_new (compositor=0x2463c10) at ../../../../jhbuild/checkout/mutter/src/compositor/meta-plugin-manager.c:113
#73 0x00007f310a2b82b6 in meta_compositor_do_manage (compositor=0x2463c10, error=0x7fffd85b8718) at ../../../../jhbuild/checkout/mutter/src/compositor/compositor.c:556
#74 0x00007f310a2e0c80 in meta_display_open () at ../../../../jhbuild/checkout/mutter/src/core/display.c:920
#75 0x00007f310a2f3316 in meta_start () at ../../../../jhbuild/checkout/mutter/src/core/main.c:921
#76 0x00007f310a2f3346 in meta_run () at ../../../../jhbuild/checkout/mutter/src/core/main.c:942
#77 0x0000000000402fa9 in main (argc=1, argv=0x7fffd85b88a8) at ../../../../jhbuild/checkout/gnome-shell/src/main.c:508