Allow to start up without any outputs
After playing around with the nexdock (in single display mode) and unplugging it, phoc became unhappy (see phoc#239 (comment 1491002)) causing phosh to crash repeatedly:
journal:
Jul 01 12:43:20 poseidon phosh[11802]: Wayland compositor lacks needed globals
outputs: 0, layer_shell: 0xaaaae0091dd0, idle_manager: 0xaaaae00910e0, inhibit: 0xaaaae0091060, xdg_wm: 0xaaaae009e930, xdg_output: 0xaaaae009ec20, wlr_output_manager: 0xaaaae0214a90, wlr_foreign_toplevel_manager: 0xaaaae02150e0, phoc_layer_shell_effects_v1: 0xaaaae00913b0
backtrace from coredump
(gdb) bt
#0 raise (sig=sig@entry=5) at ../sysdeps/unix/sysv/linux/raise.c:49
#1 0x0000aaaac3a07b10 in _phosh_log_abort (breakpoint=1) at ../src/log.c:35
#2 phosh_log_writer_default (log_level=6, fields=0xffffd6b2db30, n_fields=6, log_domains=0x0) at ../src/log.c:104
#3 0x0000ffff9a9114f8 in g_log_structured_array () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#4 0x0000ffff9a911fc4 in g_log_structured_standard () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#5 0x0000aaaac3a16960 in phosh_wayland_constructed (object=<optimized out>) at ../src/phosh-wayland.c:277
#6 0x0000ffff9ad6b42c in () at /lib/aarch64-linux-gnu/libgobject-2.0.so.0
#7 0x0000ffff9ad6cb68 in g_object_new_with_properties () at /lib/aarch64-linux-gnu/libgobject-2.0.so.0
#8 0x0000ffff9ad6d51c in g_object_new () at /lib/aarch64-linux-gnu/libgobject-2.0.so.0
#9 0x0000aaaac3a15e68 in phosh_wayland_get_default () at ../src/phosh-wayland.c:379
#10 0x0000aaaac3978494 in main (argc=<optimized out>, argv=<optimized out>) at ../src/main.c:134
(gdb) frame 5
#5 0x0000aaaac3a16960 in phosh_wayland_constructed (object=<optimized out>) at ../src/phosh-wayland.c:277
277 ../src/phosh-wayland.c: No such file or directory.
(gdb) set directories /home/purism/git/phosh/src
(gdb) l
warning: Source file is more recent than executable.
272 num_outputs = g_hash_table_size(self->wl_outputs);
273 if (!num_outputs || !self->layer_shell || !self->idle_manager ||
274 !self->input_inhibit_manager || !self->xdg_wm_base ||
275 !self->zxdg_output_manager_v1 ||
276 !self->zphoc_layer_shell_effects_v1) {
277 g_error ("Wayland compositor lacks needed globals\n"
278 "outputs: %d, layer_shell: %p, idle_manager: %p, "
279 "inhibit: %p, xdg_wm: %p, "
280 "xdg_output: %p, wlr_output_manager: %p, "
281 "wlr_foreign_toplevel_manager: %p, "
(gdb) p *self
$1 = {parent = {g_type_instance = {Python Exception <class 'gdb.error'> No type named TypeNode.:
g_class = }, ref_count = 1, qdata = 0xaaaadd1aa8c0}, idle_manager = 0xaaaadd1dc250, phosh_private = 0xaaaadd1dc150, phosh_private_version = 6, zwp_virtual_keyboard_manager_v1 = 0xaaaadd18f490, display = 0xaaaadd193120, registry = 0xaaaadd2e86e0,
wl_seat = 0xaaaadd320a90, xdg_wm_base = 0xaaaadd1c45f0, zwlr_foreign_toplevel_manager_v1 = 0xaaaadd1997c0, zwlr_gamma_control_manager_v1 = 0xaaaadd1dc4a0, input_inhibit_manager = 0xaaaadd1dc1d0, layer_shell = 0xaaaadd1c44f0, zwlr_output_manager_v1 = 0xaaaadd380270,
zwlr_output_power_manager_v1 = 0xaaaadd380390, zxdg_output_manager_v1 = 0xaaaadd1bfcd0, zwlr_screencopy_manager_v1 = 0xaaaadd18f4f0, zphoc_layer_shell_effects_v1 = 0xaaaadd1dc520, wl_shm = 0xaaaadd1c4570, Python Exception <class 'gdb.error'> There is no member named keys.:
wl_outputs = 0xaaaadd39bde0,
seat_capabilities = PHOSH_WAYLAND_SEAT_CAPABILITY_NONE}
Please point out if there's anything else you want me to poke at.
Edited by Guido Günther