Critical warning due to zero number of monitors
In practice, this probably only happens on Wayland, as it has never been reported before. It can be reproduced, for example, by switching from one single-monitor setup to another in the minimal display dialog. On Wayland, GDK emits a GdkScreen::monitors-changed
signal for the intermediate state without monitors:
xfce_workspace_get_xinerama_stretch: assertion 'workspace->priv->backdrops != NULL' failed
Core was generated by `/opt/bin/xfdesktop.orig'.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0 g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7ffd61111dc0) at ../glib/glib/gmessages.c:1277
1277 g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
[Current thread is 1 (Thread 0x794268611a00 (LWP 81495))]
(gdb) bt
#0 g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7ffd61111dc0) at ../glib/glib/gmessages.c:1277
#1 0x000079426975e754 in g_log (log_domain=log_domain@entry=0x0, log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x79426981c26a "%s: assertion '%s' failed") at ../glib/glib/gmessages.c:1315
#2 0x000079426975f8fe in g_return_if_fail_warning
(log_domain=log_domain@entry=0x0, pretty_function=pretty_function@entry=0x6088ca1c0960 <__func__.10> "xfce_workspace_get_xinerama_stretch", expression=expression@entry=0x6088ca1bcc08 "workspace->priv->backdrops != NULL") at ../glib/glib/gmessages.c:3000
#3 0x00006088ca18c505 in xfce_workspace_get_xinerama_stretch (workspace=0x6088ca64c040) at xfce-workspace.c:128
#4 0x00006088ca18e9d6 in screen_size_changed_cb (gscreen=<optimized out>, user_data=0x6088ca5a2750) at xfce-desktop.c:585
#5 0x000079426985d730 in g_closure_invoke (closure=0x6088ca5cee80, return_value=0x0, n_param_values=1, param_values=0x7ffd611120b0, invocation_hint=0x7ffd61112000) at ../glib/gobject/gclosure.c:834
#6 0x000079426988c896 in signal_emit_unlocked_R.isra.0
(node=node@entry=0x7ffd61112180, detail=detail@entry=0, instance=instance@entry=0x6088ca3cb180, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd611120b0)
at ../glib/gobject/gsignal.c:3888
#7 0x000079426987d7a2 in signal_emit_valist_unlocked (instance=instance@entry=0x6088ca3cb180, signal_id=signal_id@entry=28, detail=<optimized out>, var_args=var_args@entry=0x7ffd611122c0)
at ../glib/gobject/gsignal.c:3520
#8 0x000079426987dcb0 in g_signal_emit_by_name (instance=instance@entry=0x6088ca3cb180, detailed_signal=detailed_signal@entry=0x794269db0a81 "monitors-changed") at ../glib/gobject/gsignal.c:3624
#9 0x0000794269d7064e in _gdk_wayland_screen_remove_output (id=43, screen=0x6088ca3cb180) at ../gtk/gdk/wayland/gdkscreen-wayland.c:1888
#10 gdk_registry_handle_global_remove (data=0x6088ca3a45c0, registry=<optimized out>, id=43) at ../gtk/gdk/wayland/gdkdisplay-wayland.c:558
#11 0x0000794268d50596 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#12 0x0000794268d4d00e in ffi_call_int (cif=cif@entry=0x7ffd611125d0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#13 0x0000794268d4fbd3 in ffi_call (cif=cif@entry=0x7ffd611125d0, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffd611126a0) at ../src/x86/ffi64.c:710
#14 0x000079426a5e4645 in wl_closure_invoke (closure=closure@entry=0x6088ca793b90, target=<optimized out>, target@entry=0x6088ca3e75e0, opcode=opcode@entry=1, data=<optimized out>, flags=1)
at ../wayland-1.22.0/src/connection.c:1025
#15 0x000079426a5e4e73 in dispatch_event (display=display@entry=0x6088ca3a3400, queue=0x6088ca3a34f0) at ../wayland-1.22.0/src/wayland-client.c:1631
#16 0x000079426a5e513c in dispatch_queue (queue=0x6088ca3a34f0, display=0x6088ca3a3400) at ../wayland-1.22.0/src/wayland-client.c:1777
#17 wl_display_dispatch_queue_pending (display=0x6088ca3a3400, queue=0x6088ca3a34f0) at ../wayland-1.22.0/src/wayland-client.c:2019
#18 0x000079426a5e51a1 in wl_display_dispatch_pending (display=<optimized out>) at ../wayland-1.22.0/src/wayland-client.c:2082
#19 0x0000794269d6aa39 in _gdk_wayland_display_queue_events (display=<optimized out>) at ../gtk/gdk/wayland/gdkeventsource.c:201
#20 0x0000794269d36fa9 in gdk_display_get_event (display=0x6088ca3a45c0) at ../gtk/gdk/gdkdisplay.c:442
#21 0x0000794269d72208 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../gtk/gdk/wayland/gdkeventsource.c:120
#22 0x0000794269759199 in g_main_dispatch (context=0x6088ca398b70) at ../glib/glib/gmain.c:3344
#23 0x00007942697b83bf in g_main_context_dispatch_unlocked (context=0x6088ca398b70) at ../glib/glib/gmain.c:4152
#24 g_main_context_iterate_unlocked.isra.0 (context=0x6088ca398b70, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217
#25 0x0000794269759dc7 in g_main_loop_run (loop=0x6088ca428510) at ../glib/glib/gmain.c:4419
#26 0x0000794269fed2bf in gtk_main () at ../gtk/gtk/gtkmain.c:1329
#27 0x00006088ca1909f9 in xfdesktop_application_start (app=app@entry=0x6088ca394600) at xfdesktop-application.c:820
#28 0x00006088ca190bc9 in xfdesktop_application_startup (g_application=0x6088ca394600) at xfdesktop-application.c:661
#32 0x000079426987da94 in <emit signal '???' on instance ???> (instance=instance@entry=0x6088ca394600, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3583
#29 0x000079426987d8d3 in _g_closure_invoke_va (param_types=0x0, n_params=<optimized out>, args=0x7ffd61113090, instance=0x6088ca394600, return_value=0x0, closure=0x6088ca3938e0)
at ../glib/gobject/gclosure.c:897
#30 signal_emit_valist_unlocked (instance=instance@entry=0x6088ca394600, signal_id=signal_id@entry=6, detail=detail@entry=0, var_args=var_args@entry=0x7ffd61113090) at ../glib/gobject/gsignal.c:3424
#31 0x000079426987d9d7 in g_signal_emit_valist (instance=0x6088ca394600, signal_id=6, detail=0, var_args=var_args@entry=0x7ffd61113090) at ../glib/gobject/gsignal.c:3263
#33 0x00007942699824c5 in g_application_register (application=application@entry=0x6088ca394600, cancellable=cancellable@entry=0x0, error=error@entry=0x0) at ../glib/gio/gapplication.c:2352
#34 0x00006088ca19012b in xfdesktop_application_local_command_line (g_application=0x6088ca394600, arguments=0x7ffd61113498, exit_status=0x7ffd61113494) at xfdesktop-application.c:957
#35 0x0000794269982e6c in g_application_run (application=application@entry=0x6088ca394600, argc=argc@entry=1, argv=argv@entry=0x7ffd61113608) at ../glib/gio/gapplication.c:2681
#36 0x00006088ca191375 in xfdesktop_application_run (app=app@entry=0x6088ca394600, argc=argc@entry=1, argv=argv@entry=0x7ffd61113608) at xfdesktop-application.c:829
#37 0x00006088ca17e9f8 in main (argc=1, argv=0x7ffd61113608) at main.c:54