This only happens if creating the Wayland display fails during startup (eg: running from within a Wayland session, and WAYLAND_DISPLAY points to the socket for the running compositor):
...
[2026-04-21 15:33:47.778594] <information> mirserver: Found rendering driver: mir:wayland (version 2.27.0)
[2026-04-21 15:33:47.778630] <information> mirserver: Found rendering driver: mir:x11 (version 2.27.0)
[2026-04-21 15:33:47.778662] <information> mirserver: Found rendering driver: mir:gbm-kms (version 2.27.0)
[2026-04-21 15:33:47.778681] < - debug - > gbm-kms: No outputs capable of accepting GBM input detected
[2026-04-21 15:33:47.778694] < - debug - > gbm-kms: Probing will be skipped
[2026-04-21 15:33:47.778707] <information> mirserver: (Unsupported by system environment)
[2026-04-21 15:33:47.778719] <information> mirserver: Found rendering driver: mir:atomic-kms (version 2.27.0)
[2026-04-21 15:33:47.778754] <information> mirserver: Found rendering driver: mir:egl-generic (version 2.27.0)
[2026-04-21 15:33:47.778770] <information> mirserver: Driver supports:
[2026-04-21 15:33:47.778782] <information> mirserver: System (priority 192)
[2026-04-21 15:33:47.778847] <information> mirserver: Found rendering driver: throw-on-creation (version 2.27.0)
[2026-04-21 15:33:47.778862] <information> mirserver: Driver supports:
[2026-04-21 15:33:47.778873] <information> mirserver: System (priority 0)
[2026-04-21 15:33:47.778891] <information> mirserver: Selected rendering driver: mir:egl-generic (version 2.27.0) for platform
[2026-04-21 15:33:47.795343] < - debug - > x11-error: Detected 120.00Hz host output refresh rate.
[2026-04-21 15:33:47.803207] <information> display: Failed to create hardware cursor
[2026-04-21 15:33:47.803258] <information> mirserver: Using software cursor
[2026-04-21 15:33:47.809967] < -warning- > generic-egl-buffer-allocator: Failed to bind EGL Display to Wayland display, falling back to software buffers: /home/christopher.halse.rogers@canonical.com/Devel/mir/src/platform/graphics/egl_extensions.cpp(111): Throw in function mir::graphics::EGLExtensions::WaylandExtensions::WaylandExtensions(EGLDisplay)
Dynamic exception type: boost::wrapexcept<std::runtime_error>
std::exception::what: EGL display doesn't support EGL_WL_bind_wayland_display
[2026-04-21 15:33:47.810350] <information> generic-egl-buffer-allocator: Enabled linux-dmabuf import support
[2026-04-21 15:33:47.834234] < -warning- > mirserver: Cannot find app info for app with name:QEMU
[2026-04-21 15:33:47.836242] < - ERROR - > mirserver: Unable to watch directory /usr/share/gnome/applications
[2026-04-21 15:33:47.836380] < - ERROR - > mirserver: Unable to watch directory /usr/local/share//applications
unable to lock lockfile /run/user/1009713992/wayland-0.lock, maybe another compositor is running
AddressSanitizer:DEADLYSIGNAL
=================================================================
==1714181==ERROR: AddressSanitizer: SEGV on unknown address 0x000000008eb4 (pc 0x74d7091f423d bp 0x7fff893dc0f0 sp 0x7fff893dc0d0 T0)
==1714181==The signal is caused by a READ memory access.
#0 0x74d7091f423d in wl_global_remove (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0xc23d) (BuildId: 32db75572b771f641b3503dda2af1e6206799cb8)
#1 0x74d7091f42f4 in wl_global_destroy (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0xc2f4) (BuildId: 32db75572b771f641b3503dda2af1e6206799cb8)
#2 0x74d7072d9f6f in mir::wayland::Global::~Global() /home/christopher.halse.rogers@canonical.com/Devel/mir/src/wayland/global.cpp:35:5
#3 0x74d7074f9293 in mir::graphics::LinuxDmaBuf::~LinuxDmaBuf() /home/christopher.halse.rogers@canonical.com/Devel/mir/include/platform/mir/graphics/linux_dmabuf.h:103:7
#4 0x74d7074f9293 in mir::graphics::LinuxDmaBuf::~LinuxDmaBuf() /home/christopher.halse.rogers@canonical.com/Devel/mir/include/platform/mir/graphics/linux_dmabuf.h:103:7
#5 0x74d705d2b404 in std::default_delete<mir::graphics::LinuxDmaBuf>::operator()(mir::graphics::LinuxDmaBuf*) const /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/unique_ptr.h:92:2
#6 0x74d705d2b404 in std::unique_ptr<mir::graphics::LinuxDmaBuf, std::default_delete<mir::graphics::LinuxDmaBuf>>::~unique_ptr() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/unique_ptr.h:398:4
#7 0x74d705d2b404 in mir::graphics::egl::generic::BufferAllocator::~BufferAllocator() /home/christopher.halse.rogers@canonical.com/Devel/mir/src/platforms/renderer-generic-egl/buffer_allocator.cpp:171:40
#8 0x74d705d2ba2d in mir::graphics::egl::generic::BufferAllocator::~BufferAllocator() /home/christopher.halse.rogers@canonical.com/Devel/mir/src/platforms/renderer-generic-egl/buffer_allocator.cpp:171:40
#9 0x74d708318b6e in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:174:2
#10 0x74d708318b6e in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use_cold() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:198:9
#11 0x74d7085dfb03 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:352:8
#12 0x74d7085dfb03 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:1069:11
#13 0x74d7085dfb03 in std::__shared_ptr<mir::graphics::GraphicBufferAllocator, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:1531:31
#14 0x74d7085dfb03 in mir::compositor::DefaultDisplayBufferCompositorFactory::~DefaultDisplayBufferCompositorFactory() /home/christopher.halse.rogers@canonical.com/Devel/mir/src/server/compositor/default_display_buffer_compositor_factory.h:45:7
#15 0x74d708318b6e in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:174:2
#16 0x74d708318b6e in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use_cold() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:198:9
#17 0x74d7085e2039 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:352:8
#18 0x74d7085e2039 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:1069:11
#19 0x74d7085e2039 in std::__shared_ptr<mir::compositor::DisplayBufferCompositorFactory, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:1531:31
#20 0x74d7085e2039 in mir::compositor::MultiThreadedCompositor::~MultiThreadedCompositor() /home/christopher.halse.rogers@canonical.com/Devel/mir/src/server/compositor/multi_threaded_compositor.cpp:315:1
#21 0x74d708318b6e in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:174:2
#22 0x74d708318b6e in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use_cold() /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/shared_ptr_base.h:198:9
#23 0x74d70831d7ec in mir::DisplayServer::Private::Private(mir::ServerConfiguration&) /home/christopher.halse.rogers@canonical.com/Devel/mir/src/server/display_server.cpp:97:5
#24 0x74d70831bf27 in mir::DisplayServer::DisplayServer(mir::ServerConfiguration&) /home/christopher.halse.rogers@canonical.com/Devel/mir/src/server/display_server.cpp:213:11
#25 0x74d70831735c in mir::run_mir(mir::ServerConfiguration&, std::function<void (mir::DisplayServer&)>, std::function<void (int)> const&) /home/christopher.halse.rogers@canonical.com/Devel/mir/src/server/run_mir.cpp:253:19
#26 0x74d70835ce4a in mir::Server::run() /home/christopher.halse.rogers@canonical.com/Devel/mir/src/server/server.cpp:424:9
#27 0x74d708fd033c in miral::MirRunner::Self::run_with(std::initializer_list<std::function<void (mir::Server&)>>) /home/christopher.halse.rogers@canonical.com/Devel/mir/src/miral/runner.cpp:184:13
#28 0x611639416141 in main /home/christopher.halse.rogers@canonical.com/Devel/mir/examples/miral-shell/shell_main.cpp:360:19
#29 0x74d70762a600 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:59:16
#30 0x74d70762a717 in __libc_start_main csu/../csu/libc-start.c:360:3
#31 0x61163932bba4 in _start (/home/christopher.halse.rogers@canonical.com/Devel/mir/build/bin/miral-shell.bin+0x1daba4)
==1714181==Register values:
rax = 0x00000e20e0b9c1f9 rbx = 0x0000713705e271c0 rcx = 0x000074d70781a0c0 rdx = 0x0000000000000000
rdi = 0x0000713705e271c0 rsi = 0x000074d70662d0d8 rbp = 0x00007fff893dc0f0 rsp = 0x00007fff893dc0d0
r8 = 0x00000000000000d8 r9 = 0x0000731705ebe000 r10 = 0x0000000000000000 r11 = 0x000000000000003a
r12 = 0x0000000000008e94 r13 = 0x0000713705e271c0 r14 = 0x000071b705c39600 r15 = 0x0000000100000001
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0xc23d) (BuildId: 32db75572b771f641b3503dda2af1e6206799cb8) in wl_global_remove
==1714181==ABORTING
This only happens if creating the Wayland display fails during startup (eg: running from within a Wayland session, and
WAYLAND_DISPLAYpoints to the socket for the running compositor):