Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Memory leak on simpledrm #3710

Closed
AlanGriffiths opened this issue Jan 3, 2025 · 38 comments · Fixed by #3721
Closed

Memory leak on simpledrm #3710

AlanGriffiths opened this issue Jan 3, 2025 · 38 comments · Fixed by #3721
Assignees
Labels
bug triaged Triage into JIRA to plan it in

Comments

@AlanGriffiths
Copy link
Collaborator

We have reports of problems:

https://discourse.ubuntu.com/t/ubuntu-frame-memory-leak-on-meteor-lake-cpu/51778/

@Saviq
Copy link
Collaborator

Saviq commented Jan 7, 2025

I've been able to reproduce this locally (Alder Lake) by way of:

while snap restart wpe-webkit-mir-kiosk; do sleep 15; done

Can probably be simplified further, and I doubt it has to be WPE to trigger it, but at least grim doesn't.

So we seem to be leaking on client disconnection.

@Saviq Saviq changed the title Memory leak on Meteor Lake Memory leak on client disconnection Jan 7, 2025
@Saviq Saviq added bug triaged Triage into JIRA to plan it in labels Jan 7, 2025
@AlanGriffiths
Copy link
Collaborator Author

AlanGriffiths commented Jan 7, 2025

Confirmed with a slight variation (running on my laptop):

WAYLAND_DISPLAY=wayland-99
ubuntu-frame&
while wpe-webkit-mir-kiosk.cog& sleep 5; killall /snap/wpe-webkit-mir-kiosk/102/usr/bin/cog; do :; done

Leak appears to be of the order of 0.1Mb per iteration

@AlanGriffiths AlanGriffiths self-assigned this Jan 7, 2025
@Saviq
Copy link
Collaborator

Saviq commented Jan 8, 2025

Another thing came to mind - worth checking whether the atomic-kms platform is also affected.

@AlanGriffiths
Copy link
Collaborator Author

Another thing came to mind - worth checking whether the atomic-kms platform is also affected.

As it affects both the gbm-kms and x11 display platforms, I doubt the display platform is a factor

@AlanGriffiths
Copy link
Collaborator Author

Whatever is going on, it is far more pronounced (~0.1Mb per iteration) with the ubuntu-frame snap than with a local build of miral-kiosk (~0.01Mb per iteration)

@AlanGriffiths
Copy link
Collaborator Author

AlanGriffiths commented Jan 8, 2025

OK, there's a lot of "noise" in a valgrind report, but this seems to be the most significant sources of leaks in this scenario:

==258827== 1,900 bytes in 2 blocks are possibly lost in loss record 4,809 of 4,937
==258827==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==258827==    by 0x8BD6699: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==258827==    by 0x8BD6888: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==258827==    by 0x8E31553: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==258827==    by 0x8DEF17E: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==258827==    by 0x5A73239: (anonymous namespace)::link_shader((anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&, (anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&) (egl_buffer_copy.cpp:214)
==258827==    by 0x5A754EF: mir::graphics::EGLBufferCopier::Impl::initialise() (egl_buffer_copy.cpp:354)
==258827==    by 0x5A7474A: mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}::operator()() const (egl_buffer_copy.cpp:244)
==258827==    by 0x5A797E9: void std::__invoke_impl<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>(std::__invoke_other, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&) (invoke.h:61)
==258827==    by 0x5A7893B: std::enable_if<is_invocable_r_v<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>, void>::type std::__invoke_r<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>(mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&) (invoke.h:111)
==258827==    by 0x5A776F2: std::_Function_handler<void (), mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:290)
==258827==    by 0x5A4D247: std::function<void ()>::operator()() const (std_function.h:591)

and

==290503== 65,184 bytes in 1 blocks are possibly lost in loss record 5,435 of 5,452
==290503==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==290503==    by 0x8B31F9C: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==290503==    by 0x8B31FF4: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==290503==    by 0x9A2A5FF: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==290503==    by 0x8BC38B7: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==290503==    by 0x8AF2FFE: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==290503==    by 0x8AF6DBF: ??? (in /usr/lib/x86_64-linux-gnu/dri/iris_dri.so)
==290503==    by 0x832BAA5: ??? (in /usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0.0.0)
==290503==    by 0x831D972: ??? (in /usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0.0.0)
==290503==    by 0x7DC1031: (anonymous namespace)::make_share_only_context(void*, std::optional<void*>) (buffer_allocator.cpp:100)
==290503==    by 0x7DC1211: (anonymous namespace)::SurfacelessEGLContext::SurfacelessEGLContext(void*, void*) (buffer_allocator.cpp:119)
==290503==    by 0x7DC2D1C: std::__detail::_MakeUniq<(anonymous namespace)::SurfacelessEGLContext>::__single_object std::make_unique<(anonymous namespace)::SurfacelessEGLContext, void*&, void*&>(void*&, void*&) (unique_ptr.h:1070)
$ grep graphics::EGLBufferCopier::Impl::initialise miral-kiosk.vlog | wc -l
63

(Other sources of leaks are in the single digits, i.e. not corresponding to five minutes of five second iterations)

@AlanGriffiths
Copy link
Collaborator Author

OK, the first one is easy to fix.

diff --git a/src/platform/graphics/egl_buffer_copy.cpp b/src/platform/graphics/egl_buffer_copy.cpp
--- a/src/platform/graphics/egl_buffer_copy.cpp	(revision d2dfa075e494a57ba492ee330fb152d21c31f88e)
+++ b/src/platform/graphics/egl_buffer_copy.cpp	(revision ed267cf5eacbddd665b569c4f47271ab61314b2f)
@@ -255,7 +255,7 @@
     ~Impl()
     {
         // Ensure EGL resources are cleaned up in the right context
-        egl_delegate->spawn([state = state]() mutable { state = nullptr; });
+        egl_delegate->spawn([state = std::move(state)]() mutable { state = nullptr; });
     }
 
     auto blit(EGLImage from, EGLImage to, geometry::Size size) -> std::optional<mir::Fd>

The latter has some variations:

$ grep  SurfacelessEGLContext::SurfacelessEGLContext miral-kiosk.vlog  | sort | uniq -c
     38 ==479239==    by 0x7DBC211: (anonymous namespace)::SurfacelessEGLContext::SurfacelessEGLContext(void*, void*) (buffer_allocator.cpp:119)
      4 ==479239==    by 0x7DCF2E6: (anonymous namespace)::SurfacelessEGLContext::SurfacelessEGLContext(void*) (rendering_platform.cpp:121)
     23 ==479239==    by 0x7DCF3B1: (anonymous namespace)::SurfacelessEGLContext::SurfacelessEGLContext(void*, void*) (rendering_platform.cpp:127)

@AlanGriffiths
Copy link
Collaborator Author

Here's a summary of the leak information after a 15min run:

valgrind --trace-children=yes --log-file=miral-kiosk.vlog --leak-check=full --undef-value-errors=no --enable-debuginfod=yes ~/CLionProjects/mir/cmake-build-debug/bin/miral-kiosk
$ cat miral-kiosk.vlog  | sort | uniq -c | sort -n | grep -v "???" | grep -v "^      1"
      2 ==104893==    by 0x11F10A: (anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*)::{lambda()#1}::operator()() const (sw_splash.cpp:63)
      2 ==104893==    by 0x11F1E2: (anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*) (sw_splash.cpp:48)
      2 ==104893==    by 0x11FA40: std::_Function_handler<void (), (anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:290)
      2 ==104893==    by 0x11FC46: std::enable_if<is_invocable_r_v<void, (anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*)::{lambda()#1}&>, void>::type std::__invoke_r<void, (anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*)::{lambda()#1}&>((anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*)::{lambda()#1}&) (invoke.h:111)
      2 ==104893==    by 0x11FEB3: void std::__invoke_impl<void, (anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*)::{lambda()#1}&>(std::__invoke_other, (anonymous namespace)::draw_new_stuff((anonymous namespace)::DrawContext*)::{lambda()#1}&) (invoke.h:61)
      2 ==104893==    by 0x12CB41: wl_shm_pool_create_buffer (wayland-client-protocol.h:1383)
      2 ==104893==    by 0x12D7D9: WaylandShm::get_buffer(mir::geometry::generic::Size<int>, mir::geometry::generic::Value<int, mir::geometry::StrideTag>) (wayland_shm.cpp:183)
      2 ==104893==    by 0x400571E: call_init.part.0 (dl-init.c:74)
      2 ==104893==    by 0x4005823: call_init (dl-init.c:120)
      2 ==104893==    by 0x4005823: _dl_init (dl-init.c:121)
      2 ==104893==    by 0x4A57401: wl_event_loop_dispatch (in /usr/lib/x86_64-linux-gnu/libwayland-server.so.0.22.0)
      2 ==104893==    by 0x4A57C44: wl_display_run (in /usr/lib/x86_64-linux-gnu/libwayland-server.so.0.22.0)
      2 ==104893==    by 0x5252A07: mir::DefaultServerConfiguration::the_display()::{lambda()#1}::operator()() const (default_configuration.cpp:381)
      2 ==104893==    by 0x52546F0: std::enable_if<is_invocable_r_v<std::shared_ptr<mir::graphics::Display>, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&>, std::shared_ptr<mir::graphics::Display> >::type std::__invoke_r<std::shared_ptr<mir::graphics::Display>, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&>(mir::DefaultServerConfiguration::the_display()::{lambda()#1}&) (invoke.h:116)
      2 ==104893==    by 0x52550EA: std::shared_ptr<mir::graphics::Display> std::__invoke_impl<std::shared_ptr<mir::graphics::Display>, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&>(std::__invoke_other, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&) (invoke.h:61)
      2 ==104893==    by 0x54FBB39: mir::renderer::gl::Renderer::render(std::vector<std::shared_ptr<mir::graphics::Renderable>, std::allocator<std::shared_ptr<mir::graphics::Renderable> > > const&) const (renderer.cpp:366)
      2 ==104893==    by 0x59EBFF8: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.8000.0)
      2 ==104893==    by 0x5A6DE4B: (anonymous namespace)::compile_shader(unsigned int, char const*) (egl_buffer_copy.cpp:187)
      2 ==104893==    by 0x5A6DF2E: (anonymous namespace)::compile_shader(unsigned int, char const*) (egl_buffer_copy.cpp:193)
      2 ==104893==    by 0x5A6DF44: (anonymous namespace)::compile_shader(unsigned int, char const*) (egl_buffer_copy.cpp:194)
      2 ==104893==    by 0x5A6E5A4: (anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader>::GLTypedHandle(unsigned int) (egl_buffer_copy.cpp:183)
      2 ==104893==    by 0x5A707F8: mir::graphics::EGLBufferCopier::Impl::initialise() (egl_buffer_copy.cpp:359)
      2 ==104893==    by 0x6005E6D: xcb_wait_for_reply (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
      2 ==104893==    by 0x7DD1F7C: std::__detail::_MakeUniq<(anonymous namespace)::SurfacelessEGLContext>::__single_object std::make_unique<(anonymous namespace)::SurfacelessEGLContext, void* const&>(void* const&) (unique_ptr.h:1070)
      3 ==104893==    by 0x1265EF: std::function<void ()>::operator()() const (std_function.h:591)
      3 ==104893==    by 0x4A815D4: wl_proxy_marshal_array_flags (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.22.0)
      3 ==104893==    by 0x4A82407: wl_proxy_marshal_flags (in /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.22.0)
      3 ==104893==    by 0x5C3DA3E: g_thread_new (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
      4 ==104893==    by 0x5A6C0A4: mir::graphics::common::EGLContextExecutor::process_loop(mir::graphics::common::EGLContextExecutor*) (egl_context_executor.cpp:58)
      4 ==104893==    by 0x5A6DD08: std::__invoke_result<void (*)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*>::type std::__invoke<void (*)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*>(void (*&&)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*&&) (invoke.h:96)
      4 ==104893==    by 0x5A6DD95: void std::__invoke_impl<void, void (*)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*>(std::__invoke_other, void (*&&)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*&&) (invoke.h:61)
      4 ==104893==    by 0x5A707E0: mir::graphics::EGLBufferCopier::Impl::initialise() (egl_buffer_copy.cpp:359)
      4 ==104893==    by 0x7DD12E6: (anonymous namespace)::SurfacelessEGLContext::SurfacelessEGLContext(void*) (rendering_platform.cpp:121)
      6 ==104893==    at 0x4846FA3: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
      6 ==104893==    by 0x40145AB: allocate_dtv (dl-tls.c:370)
      6 ==104893==    by 0x40145AB: calloc (rtld-malloc.h:44)
      6 ==104893==    by 0x40145AB: _dl_allocate_tls (dl-tls.c:629)
      6 ==104893==    by 0x4DD1606: allocate_stack (allocatestack.c:429)
      6 ==104893==    by 0x4DD1606: pthread_create@@GLIBC_2.34 (pthread_create.c:655)
      8 ==104893==    by 0x7DBE688: mir::graphics::egl::generic::BufferAllocator::BufferAllocator(void*, void*, std::shared_ptr<mir::graphics::DMABufEGLProvider>) (buffer_allocator.cpp:163)
      8 ==104893==    by 0x7DBE6C9: mir::graphics::egl::generic::BufferAllocator::BufferAllocator(void*, void*, std::shared_ptr<mir::graphics::DMABufEGLProvider>) (buffer_allocator.cpp:165)
      8 ==104893==    by 0x7DD1B24: mir::graphics::egl::generic::RenderingPlatform::RenderingPlatform(std::tuple<void*, bool>) (rendering_platform.cpp:212)
      9 ==104893==    at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
      9 ==104893==    by 0x5A482C7: std::function<void ()>::operator()() const (std_function.h:591)
     10 ==104893==    by 0x5A6E251: (anonymous namespace)::link_shader((anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&, (anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&) (egl_buffer_copy.cpp:213)
     10 ==104893==    by 0x5A6E5F4: (anonymous namespace)::GLHandle<&glCreateProgram, &glDeleteProgram>::GLHandle() (egl_buffer_copy.cpp:182)
     15 ==104893==    by 0x7DBE5C5: (anonymous namespace)::SurfacelessEGLContext::make_share_context() const (buffer_allocator.cpp:146)
     15 ==104893==    by 0x7DBFD1C: std::__detail::_MakeUniq<(anonymous namespace)::SurfacelessEGLContext>::__single_object std::make_unique<(anonymous namespace)::SurfacelessEGLContext, void*&, void*&>(void*&, void*&) (unique_ptr.h:1070)
     15 ==104893==    by 0x7DD1765: (anonymous namespace)::SurfacelessEGLContext::make_share_context() const (rendering_platform.cpp:154)
     17 ==104893==    by 0x5A72D22: std::_Function_handler<void (), mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:290)
     23 ==104893==    by 0x7DD13B1: (anonymous namespace)::SurfacelessEGLContext::SurfacelessEGLContext(void*, void*) (rendering_platform.cpp:127)
     27 ==104893==    by 0x5A74061: std::enable_if<is_invocable_r_v<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>, void>::type std::__invoke_r<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>(mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&) (invoke.h:111)
     35 ==104893==    by 0x7DD1111: (anonymous namespace)::make_share_only_context(void*, std::optional<void*>) (rendering_platform.cpp:108)
     38 ==104893==    by 0x7DBE211: (anonymous namespace)::SurfacelessEGLContext::SurfacelessEGLContext(void*, void*) (buffer_allocator.cpp:119)
     44 ==104893==    by 0x7DBE031: (anonymous namespace)::make_share_only_context(void*, std::optional<void*>) (buffer_allocator.cpp:100)
     51 ==104893==    by 0x5A6E2B9: (anonymous namespace)::link_shader((anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&, (anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&) (egl_buffer_copy.cpp:216)
     53 ==104893==    by 0x5A74F33: void std::__invoke_impl<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>(std::__invoke_other, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&) (invoke.h:61)
     54 ==104893==    by 0x5A7080F: mir::graphics::EGLBufferCopier::Impl::initialise() (egl_buffer_copy.cpp:359)
     59 ==104893==    by 0x5A6F9C0: mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}::operator()() const (egl_buffer_copy.cpp:246)
     73 ==104893==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    222 ==104893==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    315 ==104893== 

I've tried a puts(__PRETTY_FUNCTION__); in EGLBufferCopier::Impl::~Impl(): it is NEVER hit.

@AlanGriffiths
Copy link
Collaborator Author

AlanGriffiths commented Jan 9, 2025

I think the leaks I mention above are a "red-herring", they occur without ever starting a client:

$ valgrind --trace-children=yes --log-file=miral-kiosk.vlog --leak-check=full --undef-value-errors=no --enable-debuginfod=yes ~/CLionProjects/mir/cmake-build-debug/bin/miral-kiosk --show-splash false
$ sort miral-kiosk.vlog | uniq -c | sort -n | grep -v "???" | grep -v "^      1"
      2 ==280706==    by 0x400571E: call_init.part.0 (dl-init.c:74)
      2 ==280706==    by 0x4005823: call_init (dl-init.c:120)
      2 ==280706==    by 0x4005823: _dl_init (dl-init.c:121)
      2 ==280706==    by 0x50605D7: mir::GLibMainLoop::spawn(std::function<void ()>&&) (glib_main_loop.cpp:461)
      2 ==280706==    by 0x50622AE: void std::_Function_base::_Base_manager<mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1}>::_M_init_functor<mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1} const&>(std::_Any_data&, mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1} const&) (std_function.h:215)
      2 ==280706==    by 0x506234C: std::_Function_handler<void (), mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1}>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (std_function.h:282)
      2 ==280706==    by 0x5063B32: void std::_Function_base::_Base_manager<mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1}>::_M_create<mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1} const&>(std::_Any_data&, mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1} const&, std::integral_constant<bool, false>) (std_function.h:161)
      2 ==280706==    by 0x5063C79: std::_Function_base::_Base_manager<mir::GLibMainLoop::spawn(std::function<void ()>&&)::{lambda()#1}>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) (std_function.h:198)
      2 ==280706==    by 0x5251D3D: mir::DefaultServerConfiguration::the_rendering_platforms() (default_configuration.cpp:302)
      2 ==280706==    by 0x52526F6: mir::DefaultServerConfiguration::the_buffer_allocator()::{lambda()#1}::operator()() const (default_configuration.cpp:366)
      2 ==280706==    by 0x5252A07: mir::DefaultServerConfiguration::the_display()::{lambda()#1}::operator()() const (default_configuration.cpp:381)
      2 ==280706==    by 0x52546F0: std::enable_if<is_invocable_r_v<std::shared_ptr<mir::graphics::Display>, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&>, std::shared_ptr<mir::graphics::Display> >::type std::__invoke_r<std::shared_ptr<mir::graphics::Display>, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&>(mir::DefaultServerConfiguration::the_display()::{lambda()#1}&) (invoke.h:116)
      2 ==280706==    by 0x5255010: std::shared_ptr<mir::graphics::GraphicBufferAllocator> std::__invoke_impl<std::shared_ptr<mir::graphics::GraphicBufferAllocator>, mir::DefaultServerConfiguration::the_buffer_allocator()::{lambda()#1}&>(std::__invoke_other, mir::DefaultServerConfiguration::the_buffer_allocator()::{lambda()#1}&) (invoke.h:61)
      2 ==280706==    by 0x52550EA: std::shared_ptr<mir::graphics::Display> std::__invoke_impl<std::shared_ptr<mir::graphics::Display>, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&>(std::__invoke_other, mir::DefaultServerConfiguration::the_display()::{lambda()#1}&) (invoke.h:61)
      2 ==280706==    by 0x54FBB39: mir::renderer::gl::Renderer::render(std::vector<std::shared_ptr<mir::graphics::Renderable>, std::allocator<std::shared_ptr<mir::graphics::Renderable> > > const&) const (renderer.cpp:366)
      2 ==280706==    by 0x59EBFF8: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.8000.0)
      2 ==280706==    by 0x5A6DE59: (anonymous namespace)::compile_shader(unsigned int, char const*) (egl_buffer_copy.cpp:187)
      2 ==280706==    by 0x5A6DF3C: (anonymous namespace)::compile_shader(unsigned int, char const*) (egl_buffer_copy.cpp:193)
      2 ==280706==    by 0x5A6DF52: (anonymous namespace)::compile_shader(unsigned int, char const*) (egl_buffer_copy.cpp:194)
      2 ==280706==    by 0x5A6E5C0: (anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader>::GLTypedHandle(unsigned int) (egl_buffer_copy.cpp:183)
      2 ==280706==    by 0x5A70814: mir::graphics::EGLBufferCopier::Impl::initialise() (egl_buffer_copy.cpp:359)
      2 ==280706==    by 0x6005E6D: xcb_wait_for_reply (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
      3 ==280706==    by 0x5066446: std::function<void ()>::function(std::function<void ()> const&) (std_function.h:391)
      3 ==280706==    by 0x506D559: mir::detail::add_server_action_gsource(_GMainContext*, void const*, std::function<void ()> const&, std::function<bool (void const*)> const&) (glib_main_loop_sources.cpp:248)
      3 ==280706==    by 0x5C3DA3E: g_thread_new (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0)
      4 ==280706==    by 0x5A6C0B2: mir::graphics::common::EGLContextExecutor::process_loop(mir::graphics::common::EGLContextExecutor*) (egl_context_executor.cpp:58)
      4 ==280706==    by 0x5A6DD16: std::__invoke_result<void (*)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*>::type std::__invoke<void (*)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*>(void (*&&)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*&&) (invoke.h:96)
      4 ==280706==    by 0x5A6DDA3: void std::__invoke_impl<void, void (*)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*>(std::__invoke_other, void (*&&)(mir::graphics::common::EGLContextExecutor*), mir::graphics::common::EGLContextExecutor*&&) (invoke.h:61)
      4 ==280706==    by 0x5A707FC: mir::graphics::EGLBufferCopier::Impl::initialise() (egl_buffer_copy.cpp:359)
      6 ==280706==    by 0x40145AB: allocate_dtv (dl-tls.c:370)
      6 ==280706==    by 0x40145AB: calloc (rtld-malloc.h:44)
      6 ==280706==    by 0x40145AB: _dl_allocate_tls (dl-tls.c:629)
      6 ==280706==    by 0x4DD1606: allocate_stack (allocatestack.c:429)
      6 ==280706==    by 0x4DD1606: pthread_create@@GLIBC_2.34 (pthread_create.c:655)
      9 ==280706==    at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
      9 ==280706==    by 0x5A482C7: std::function<void ()>::operator()() const (std_function.h:591)
     10 ==280706==    by 0x5A6E25F: (anonymous namespace)::link_shader((anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&, (anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&) (egl_buffer_copy.cpp:213)
     10 ==280706==    by 0x5A6E610: (anonymous namespace)::GLHandle<&glCreateProgram, &glDeleteProgram>::GLHandle() (egl_buffer_copy.cpp:182)
     12 ==280706==    at 0x4846FA3: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
     17 ==280706==    by 0x5A72D3E: std::_Function_handler<void (), mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:290)
     27 ==280706==    by 0x5A7407D: std::enable_if<is_invocable_r_v<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>, void>::type std::__invoke_r<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>(mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&) (invoke.h:111)
     51 ==280706==    by 0x5A6E2C7: (anonymous namespace)::link_shader((anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&, (anonymous namespace)::GLTypedHandle<&glCreateShader, &glDeleteShader> const&) (egl_buffer_copy.cpp:216)
     53 ==280706==    by 0x5A74F4F: void std::__invoke_impl<void, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&>(std::__invoke_other, mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}&) (invoke.h:61)
     54 ==280706==    by 0x5A7082B: mir::graphics::EGLBufferCopier::Impl::initialise() (egl_buffer_copy.cpp:359)
     59 ==280706==    by 0x5A6F9DC: mir::graphics::EGLBufferCopier::Impl::Impl(std::shared_ptr<mir::graphics::common::EGLContextExecutor>)::{lambda()#1}::operator()() const (egl_buffer_copy.cpp:246)
     60 ==280706==    at 0x484D953: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    216 ==280706==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    302 ==280706== 

Afternote Digging a bit further into the "red-herring" - most of this is we leak one EGLBufferCopier::Impl with multiple associated blocks never being released. (Presumably because we intentionally leak the platform at shutdown)

@thmsclrk
Copy link

OP here from the ubuntu forum. Thanks for your attention so far on this issue @AlanGriffiths @Saviq.

Given that we're seeing this issue on Meteor Lake which hasn't specifically been reproduced above, I'm happy to provide similar valgrind logs to the above on our hardware (with some guidance) to catch any potential differences if it would be useful?

@Saviq
Copy link
Collaborator

Saviq commented Jan 13, 2025

@thmsclrk that's, we _did _ reproduce on Meteor Lake initially. But it was more interesting that it's not specific to that hw, which is why I didn't mention it :)

Thanks for the help!

@AlanGriffiths
Copy link
Collaborator Author

OK, using different tooling[massif, below] I've now traced unbounded memory consumption to ParameterKeymap::make_unique_xkb_keymap() (the memory allocated in xkb_keymap_new_from_names() is not released until shutdown. (It IS released on shutdown, so not pedantically a leak, but clearly a problem)

$ valgrind --tool=massif --num-callers=500 --trace-children=yes --log-file=miral-kiosk.vlog --enable-debuginfod=yes ~/CLionProjects/mir/cmake-build-debug/bin/miral-kiosk --show-splash false

@AlanGriffiths
Copy link
Collaborator Author

@thmsclrk you can check the fix I've proposed addresses your scenario:

snap refresh --channel=edge/mir-pr3720 ubuntu-frame

It definitely fixes a problem, and it would be good to know if that includes what you are seeing

@Saviq
Copy link
Collaborator

Saviq commented Jan 13, 2025

@AlanGriffiths doesn't seem to affect what I'm seeing:

rss

@thmsclrk
Copy link

@AlanGriffiths didn't fix our particular issue, snap.ubuntu-frame.daemon still shows leaks
image

@Saviq
Copy link
Collaborator

Saviq commented Jan 14, 2025

@thmsclrk and just to confirm - if you turn off your screenshotting service, does that avoid the problem?

github-merge-queue bot pushed a commit that referenced this issue Jan 14, 2025
Every time an app supporting text-input-v3 starts we allocate a
"virtual-keyboard", we should also deallocate it as appropriate.

This was identified while investigating #3710, and is part of the fix
(possibly all the fix - still testing)
@thmsclrk
Copy link

thmsclrk commented Jan 14, 2025

@Saviq yes, just re-tested and still seeing issues on a clean server 24.04 install with nothing installed/running other than ubuntu-frame(edge/mir-pr3720) and wpe-webkit-mir-kiosk.

~$ snap services
Service                               Startup   Current   Notes
ubuntu-frame.daemon                   enabled   active    -
ubuntu-frame.launcher                 disabled  inactive  -
wpe-webkit-mir-kiosk.daemon           enabled   active    -
wpe-webkit-mir-kiosk.restart-watcher  enabled   active    -
~$ snap list
Name                  Version              Rev    Tracking       Publisher   Notes
core22                20241119             1722   latest/stable  canonical✓  base
core24                20240920             609    latest/stable  canonical✓  base
mesa-2404             24.0.9               143    latest/stable  canonical✓  -
mesa-core22           23.2.1               311    latest/stable  canonical✓  -
snapd                 2.67                 23545  latest/stable  canonical✓  snapd
ubuntu-frame          201-mir2.19.2+dev27  11823  24/edge/…      canonical✓  -
wpe-webkit-mir-kiosk  2.38.5               102    22/stable      glancr      -

Complete steps taken below:

sudo snap install ubuntu-frame --channel=edge/mir-pr3720
sudo snap set ubuntu-frame daemon=true # ubuntu-frame gradient appears
sudo snap install wpe-webkit-mir-kiosk
sudo snap connect wpe-webkit-mir-kiosk:wayland
sudo snap set wpe-webkit-mir-kiosk daemon=true # website appears
sudo snap set wpe-webkit-mir-kiosk url=https://weather.com/ # leak starts to appear

Some public urls that produce leaks:
https://weather.com/
https://edition.cnn.com/

@Saviq
Copy link
Collaborator

Saviq commented Jan 14, 2025

@thmsclrk thanks for these details, that shows the plot thickens even more. Locally (Alder Lake) the only way I was able to reproduce was the (unlikely in production) cyclic restarting of WPE. Using the websites above didn't change anything.

We're looking into things on Meteor Lake, if it's a leak just displaying the above websites, that would hopefully help pinpoint the issue.

@AlanGriffiths
Copy link
Collaborator Author

I now have (remote) access to Meteor Lake:

Testing with:

valgrind --tool=massif --num-callers=500 --trace-children=yes --log-file=miral-kiosk.vlog --enable-debuginfod=yes build/bin/miral-kiosk

and

while wpe-webkit-mir-kiosk.cog& sleep 5; killall -g cog; do :; done; killall -g wayland-launch

I see no memory growth:

screenshot-2025-01-14T14:08:33+00:00

Maybe what remains is Frame specific?

But first I'll try the above websites

@AlanGriffiths
Copy link
Collaborator Author

AlanGriffiths commented Jan 14, 2025

But first I'll try the above websites

Unfortunately, not reproduced with these either (still using miral-kiosk as that is simpler to instrument)

@AlanGriffiths
Copy link
Collaborator Author

Hmm, instrumenting Frame doesn't show anything wrong either:

screenshot-2025-01-14T15:13:02+00:00

@AlanGriffiths
Copy link
Collaborator Author

AlanGriffiths commented Jan 14, 2025

Still on Meteor Lake...

It seems from the above that tracking heap memory doesn't help as it remains stable. However...

  • Running the same frame binary and monitoring with ps v, DOES show memory growth. Which confirms the problem is there still.
  • Running the same miral-kiosk binary and monitoring with ps v, DOES NOT show memory growth.

Hypothesis: whatever is increasing the memory footprint, isn't heap memory allocations running wild, and is specific to Frame.

[edit]

I can reproduce these findings on the X11 backend on my AMD system. (Which is obviously not Meteor Lake, so may be yet another false lead)

@AlanGriffiths
Copy link
Collaborator Author

@thmsclrk I've another test you can help with:

sudo snap refresh ubuntu-frame --channel=24/edge/pr212

This disables one of the Frame subsystems (which paints the background and shows diagnostics). In my testing that results in the memory footprint being much more stable, especially on the website you mention above (I only checked the first).

I see the same expansion of resident memory set on other devices, so I am still not convinced this is the same issue you identify with Meteor Lake, but I tested both the restart and sitting on weather.com scenarios on Meteor Lake with it.

(Disabling this subsystem clearly isn't a long term solution, but can at least prove whether I'm looking at the right thing)

@AlanGriffiths
Copy link
Collaborator Author

@Saviq @thmsclrk I now have a proposed solution that doesn't involve killing a whole subsystem:

canonical/ubuntu-frame#213

Needs testing (and we shouldn't forget #3720 is also a problem)

sudo snap refresh ubuntu-frame --channel=24/edge/pr213

@Saviq
Copy link
Collaborator

Saviq commented Jan 15, 2025

Needs testing (and we shouldn't forget #3720 is also a problem)

The fix for that is in edge, so Frame at pr213 should also have that fixed.

@AlanGriffiths
Copy link
Collaborator Author

Needs testing (and we shouldn't forget #3720 is also a problem)

The fix for that is in edge, so Frame at pr213 should also have that fixed.

Yes, but won't be picked up automatically in beta

@Saviq
Copy link
Collaborator

Saviq commented Jan 15, 2025

Looks very promising from where I'm looking at it:

Image

@AlanGriffiths
Copy link
Collaborator Author

Looks very promising

Yeah, but the fix isn't Meteor Lake specific. So I worry there's something else

@thmsclrk
Copy link

Hi @AlanGriffiths,

Neither --channel=24/edge/pr212 nor --channel=24/edge/pr213 worked for us. Any logs I can provide to assist?

@Saviq
Copy link
Collaborator

Saviq commented Jan 15, 2025

@thmsclrk by "didn't work", you mean it never started up?

Or that snap refresh ubuntu-frame --channel=24/edge/pr213 didn't work?

snap info ubuntu-frame and snap logs -n1000 would help to understand what's wrong.

Possibly snap changes, and snap tasks <change> if the change failed…

@thmsclrk
Copy link

@Saviq meaning the memory usage patterns remain unchanged/unimproved, refreshing ubuntu-frame with both alternate channels proposed above. See logs below as requested.

snap-info

name:      ubuntu-frame
summary:   The foundation for many embedded graphical display implementations
publisher: Canonical✓
store-url: https://snapcraft.io/ubuntu-frame
contact:   https://github.com/MirServer/ubuntu-frame/issues
license:   GPL-3.0
description: |
  Ubuntu Frame is an easy-to-use, reliable and secure display server for embedded Linux devices
  allowing developers to deploy graphic applications for kiosks, digital signage, IoT, robotics and
  more.
  
  With Ubuntu Frame, the graphic application you choose or design gets a fullscreen kiosk window. It
  enables windows behaviours, input from touch, keyboard, and mouse, on-screen keyboard, power
  saving and more.
  
  Ubuntu Frame streamlines the build and development of products that need graphical output.
  
  **Benefits**
  * Create maintainable images for kiosks and digital signage solutions in under an hour.
  * Out of the box features such as kiosk mode, on-screen keyboard and power saving for your
  devices.
  * Less code for you to integrate and maintain as it bundles communication protocols, input
  protocols, and security policies into a single kit
  * Compatible with popular toolkits for creating graphical user interfaces like Qt, Flutter,
  electron, and also html5 and java.
  * Built-in security and long-term supported by Canonical.
  
  If you want to enable **Ubuntu Frame's on-screen keyboard**, please install ubuntu-frame-osk:
  https://snapcraft.io/ubuntu-frame-osk
  
  To get started with Ubuntu Frame please read the documentation: https://mir-server.io/docs
  
  Ubuntu Frame is open source, free to use, and long-term supported by Canonical, and will continue
  to be our recommended way to enable embedded graphics on Ubuntu Core.
commands:
  - ubuntu-frame.screenshot
  - ubuntu-frame
services:
  ubuntu-frame.daemon:   simple, enabled, active
  ubuntu-frame.launcher: simple, disabled, inactive
snap-id:      BPZbvWzvoMTrpec4goCXlckLe2IhfthK
tracking:     24/edge/pr213
refresh-date: today at 23:55 UTC
channels:
  24/stable:        201-mir2.19.2           2024-12-12 (11646) 37MB -
  24/candidate:     ↑                                               
  24/beta:          201-mir2.19.2           2024-12-12 (11695) 37MB -
  24/edge:          201-mir2.19.2+dev27     2025-01-10 (11823) 37MB -
  latest/stable:    99-mir2.13.0            2023-10-05  (5787)  8MB -
  latest/candidate: ↑                                               
  latest/beta:      ↑                                               
  latest/edge:      ↑                                               
  22/stable:        147-mir2.17.2           2024-10-03 (10823)  6MB -
  22/candidate:     ↑                                               
  22/beta:          147-mir2.17.2           2024-09-11 (10823)  6MB -
  22/edge:          ↑                                               
  20/stable:        104-mir2.13.1           2023-12-14  (7692)  8MB -
  20/candidate:     ↑                                               
  20/beta:          106-mir2.13.1           2024-09-23 (10905)  8MB -
  20/edge:          ↑                                               
installed:          3044081-mir2.19.2+dev39            (11842) 37MB -

snap-changes

~$ sudo snap changes ubuntu-frame
ID   Status  Spawn               Ready               Summary
27   Done    today at 21:31 UTC  today at 21:31 UTC  Running service command
28   Done    today at 21:33 UTC  today at 21:33 UTC  Refresh "ubuntu-frame" snap from "24/edge/pr213" channel
31   Done    today at 21:41 UTC  today at 21:41 UTC  Refresh "ubuntu-frame" snap from "24/edge/pr212" channel
34   Done    today at 23:55 UTC  today at 23:55 UTC  Running service command
35   Done    today at 23:55 UTC  today at 23:55 UTC  Refresh "ubuntu-frame" snap from "24/edge/pr213" channel

snap tasks

~$ sudo snap tasks 28
Status  Spawn               Ready               Summary
Done    today at 21:33 UTC  today at 21:33 UTC  Ensure prerequisites for "ubuntu-frame" are available
Done    today at 21:33 UTC  today at 21:33 UTC  Download snap "ubuntu-frame" (11842) from channel "24/edge/pr213"
Done    today at 21:33 UTC  today at 21:33 UTC  Fetch and check assertions for snap "ubuntu-frame" (11842)
Done    today at 21:33 UTC  today at 21:33 UTC  Mount snap "ubuntu-frame" (11842)
Done    today at 21:33 UTC  today at 21:33 UTC  Run pre-refresh hook of "ubuntu-frame" snap if present
Done    today at 21:33 UTC  today at 21:33 UTC  Stop snap "ubuntu-frame" services
Done    today at 21:33 UTC  today at 21:33 UTC  Remove aliases for snap "ubuntu-frame"
Done    today at 21:33 UTC  today at 21:33 UTC  Make current revision for snap "ubuntu-frame" unavailable
Done    today at 21:33 UTC  today at 21:33 UTC  Copy snap "ubuntu-frame" data
Done    today at 21:33 UTC  today at 21:33 UTC  Setup snap "ubuntu-frame" (11842) security profiles
Done    today at 21:33 UTC  today at 21:33 UTC  Make snap "ubuntu-frame" (11842) available to the system
Done    today at 21:33 UTC  today at 21:33 UTC  Automatically connect eligible plugs and slots of snap "ubuntu-frame"
Done    today at 21:33 UTC  today at 21:33 UTC  Set automatic aliases for snap "ubuntu-frame"
Done    today at 21:33 UTC  today at 21:33 UTC  Setup snap "ubuntu-frame" aliases
Done    today at 21:33 UTC  today at 21:33 UTC  Run post-refresh hook of "ubuntu-frame" snap if present
Done    today at 21:33 UTC  today at 21:33 UTC  Start snap "ubuntu-frame" (11842) services
Done    today at 21:33 UTC  today at 21:33 UTC  Clean up "ubuntu-frame" (11842) install
Done    today at 21:33 UTC  today at 21:33 UTC  Run configure hook of "ubuntu-frame" snap if present
Done    today at 21:33 UTC  today at 21:33 UTC  Run health check of "ubuntu-frame" snap
Done    today at 21:33 UTC  today at 21:33 UTC  Monitoring snap "ubuntu-frame" to determine whether extra refresh steps are required
Done    today at 21:33 UTC  today at 21:33 UTC  enable of [ubuntu-frame.daemon]
Done    today at 21:33 UTC  today at 21:33 UTC  start of [ubuntu-frame.daemon]
Done    today at 21:33 UTC  today at 21:33 UTC  Run service command "start" for services ["daemon"] of snap "ubuntu-frame"
Done    today at 21:33 UTC  today at 21:33 UTC  disable of [ubuntu-frame.launcher]
Done    today at 21:33 UTC  today at 21:33 UTC  stop of [ubuntu-frame.launcher]
Done    today at 21:33 UTC  today at 21:33 UTC  Run service command "stop" for services ["launcher"] of snap "ubuntu-frame"

......................................................................
Automatically connect eligible plugs and slots of snap "ubuntu-frame"

2025-01-15T21:33:19Z INFO cannot auto-connect plug ubuntu-frame:wayplug, candidates found: snapd:wayland, ubuntu-frame:wayland
2025-01-15T21:33:19Z INFO cannot auto-connect slot ubuntu-frame:wayland to plug ubuntu-frame:wayplug, candidates found: snapd:wayland, ubuntu-frame:wayland
2025-01-15T21:33:19Z INFO cannot auto-connect slot ubuntu-frame:wayland to plug wpe-webkit-mir-kiosk:wayland, candidates found: snapd:wayland, ubuntu-frame:wayland

......................................................................
Monitoring snap "ubuntu-frame" to determine whether extra refresh steps are required

2025-01-15T21:33:20Z INFO No re-refreshes found.

......................................................................
enable of [ubuntu-frame.daemon]

2025-01-15T21:33:19Z INFO task ignored

......................................................................
start of [ubuntu-frame.daemon]

2025-01-15T21:33:19Z INFO task ignored

......................................................................
disable of [ubuntu-frame.launcher]

2025-01-15T21:33:19Z INFO task ignored

......................................................................
stop of [ubuntu-frame.launcher]

2025-01-15T21:33:19Z INFO task ignored

snap logs

2025-01-16T00:00:35Z systemd[1]: Started snap.ubuntu-frame.daemon.service - Service for snap application ubuntu-frame.daemon.
2025-01-16T00:00:35Z ubuntu-frame.daemon[5057]: ++ snapctl get display
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + '[' -z 'layouts:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: # keys here are layout labels (used for atomically switching between them).
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: # The yaml anchor '\''the_default'\'' is used to alias the '\''default'\'' label
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:   default:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     cards:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     # a list of cards (currently matched by card-id)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     - card-id: 0
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       DisplayPort-1:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-1:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-2:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-3:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       DisplayPort-2:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         position: [0, 0]	# Defaults to [0, 0]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-4:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     - card-id: 1
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       unknown-1-1:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         position: [0, 0]	# Defaults to [0, 0]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:   side_by_side:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     cards:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     # a list of cards (currently matched by card-id)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     - card-id: 0
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       DisplayPort-1:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-1:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-2:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-3:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       DisplayPort-2:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         position: [0, 0]	# Defaults to [0, 0]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       HDMI-A-4:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:     - card-id: 1
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:       unknown-1-1:
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         position: [1920, 0]	# Defaults to [0, 0]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display' ']'
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + disown
2025-01-16T00:00:35Z ubuntu-frame.daemon[5068]: + sh -c 'sleep 5; mkdir "/run/user/007"; rmdir "/run/user/007"'
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + exec nohup /snap/ubuntu-frame/11842/bin/run-frame /snap/ubuntu-frame/11842/bin/gpu-2404-wrapper /snap/ubuntu-frame/11842/usr/local/bin/frame
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + [ /snap/ubuntu-frame/11842/bin/gpu-2404-wrapper = --help ]
2025-01-16T00:00:35Z ubuntu-frame.daemon[5075]: + dirname /run/user/0/snap.ubuntu-frame
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + XDG_RUNTIME_DIR=/run/user/0
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + export XDG_RUNTIME_DIR
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + mkdir -p /run/user/0 -m 700
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + [ -n  ]
2025-01-16T00:00:35Z ubuntu-frame.daemon[4997]: + exec /snap/ubuntu-frame/11842/bin/gpu-2404-wrapper /snap/ubuntu-frame/11842/usr/local/bin/frame
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.012125] < - debug - > miral: Loaded display configuration file: /var/snap/ubuntu-frame/11842/frame.display
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.019633] <information> mirserver: Starting
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.019855] < - debug - > mirserver: Using Linux VT subsystem for session management
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.019938] <information> mircommon: Loading modules from: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.019979] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/graphics-eglstream-kms.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.019987] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/graphics-gbm-kms.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.019992] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/renderer-egl-generic.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.019998] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/server-x11.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.020003] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/input-evdev.so.10
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.020729] <information> mirserver: Found display driver: mir:x11 (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.020750] <information> mirserver: (Unsupported by system environment)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.020932] <information> mirserver: Found display driver: mir:egl-generic (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.021129] <information> mirserver: Found display driver: mir:gbm-kms (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.022165] < - debug - > gbm-kms: Quirks: checking device with devnode: /dev/dri/card1, driver i915
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.045684] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.045811] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.045894] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.045985] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.046070] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.046149] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.046353] < - debug - > gbm-kms: Quirks: checking device with devnode: /dev/dri/card0, driver simple-framebuffer
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: MESA-LOADER: failed to open simpledrm: /snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri//simpledrm_dri.so: cannot open shared object file: No such file or directory (search paths /snap/ubuntu-frame/11842/gpu-2404/usr/lib/x86_64-linux-gnu/dri/:/snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri/, suffix _dri)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.055504] < -warning- > gbm-kms: Failed to detect whether device /dev/dri/card0 supports KMS, continuing with lower confidence
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.056630] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.056898] <information> mirserver: Driver supports:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.056911] <information> mirserver: 	/devices/pci0000:00/0000:00:02.0/drm/card1 (priority 256)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.056914] <information> mirserver: 	/devices/platform/simple-framebuffer.0/drm/card0 (priority 128)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.057242] <information> mirserver: Found display driver: mir:eglstream-kms (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.057636] < - debug - > eglstream: Found EGLDeviceEXT with device extensions: EGL_EXT_device_drm EGL_EXT_device_drm_render_node
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.063781] < -warning- > eglstream: Failed to create EGL context: no EGL_STREAM_BIT_KHR configs supported
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.064091] < - debug - > eglstream: Found EGLDeviceEXT with device extensions: EGL_MESA_device_software EGL_EXT_device_drm_render_node
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.064130] <information> eglstream: Failed to query DRM node for EGLDevice: Failed to determine DRM device node path from EGLDevice: EGL_BAD_PARAMETER (0x300c)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.064136] <information> mirserver: Driver supports:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.064139] <information> mirserver: 	/devices/pci0000:00/0000:00:02.0/drm/card1 (priority 0)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.064175] <information> mirserver: Selected display driver: mir:gbm-kms (version 2.19.2) for device ((null): /dev/dri/card1)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.068272] <information> mirserver: Selected display driver: mir:gbm-kms (version 2.19.2) for device ((null): /dev/dri/card0)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: MESA-LOADER: failed to open simpledrm: /snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri//simpledrm_dri.so: cannot open shared object file: No such file or directory (search paths /snap/ubuntu-frame/11842/gpu-2404/usr/lib/x86_64-linux-gnu/dri/:/snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri/, suffix _dri)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.068600] <information> mircommon: Loading modules from: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.068626] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/graphics-eglstream-kms.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.068632] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/graphics-gbm-kms.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.068635] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/renderer-egl-generic.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.068639] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/server-x11.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.068642] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/input-evdev.so.10
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.069253] <information> mirserver: Found rendering driver: mir:eglstream-kms (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073348] <information> eglstream: EGLDevice found but unsuitable. Missing extension EGL_KHR_stream_consumer_gltexture
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073358] <information> eglstream: EGLDevice found but unsuitable. Missing extension EGL_NV_stream_attrib
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073481] < - debug - > eglstream: Failed to find kernel device for EGLDevice: Failed to determine DRM device node path from EGLDevice: EGL_BAD_PARAMETER (0x300c)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073487] < - debug - > eglstream: EGLDeviceEXTs found, but none are suitable for Mir
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073491] <information> mirserver: Driver supports:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073494] <information> mirserver: 	/devices/pci0000:00/0000:00:02.0/drm/card1 (priority 0)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073501] <information> mirserver: Found rendering driver: mir:gbm-kms (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.073506] < - debug - > gbm-kms: GBM-capable display found
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074257] < - debug - > gbm-kms: Quirks: checking device with devnode: /dev/dri/card1, driver i915
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074395] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074436] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074475] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074514] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074556] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074595] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.074649] < - debug - > gbm-kms: Quirks: checking device with devnode: /dev/dri/renderD128, driver i915
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.081550] < - debug - > gbm-kms: Quirks: checking device with devnode: /dev/dri/card0, driver simple-framebuffer
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: MESA-LOADER: failed to open simpledrm: /snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri//simpledrm_dri.so: cannot open shared object file: No such file or directory (search paths /snap/ubuntu-frame/11842/gpu-2404/usr/lib/x86_64-linux-gnu/dri/:/snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri/, suffix _dri)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.087630] <information> gbm-kms: Detected software renderer: llvmpipe (LLVM 17.0.6, 256 bits)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.088741] < - debug - > gbm-kms: Quirks: checking device with devnode: (null), driver
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.088790] <information> mirserver: Driver supports:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.088800] <information> mirserver: 	/devices/pci0000:00/0000:00:02.0/drm/renderD128 (priority 256)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.088806] <information> mirserver: 	/devices/platform/simple-framebuffer.0/drm/card0 (priority 0)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.088824] <information> mirserver: Found rendering driver: mir:egl-generic (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.098235] <information> mirserver: Driver supports:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.098250] <information> mirserver: 	System (priority 128)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.098261] <information> mirserver: Found rendering driver: mir:x11 (version 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.098316] <information> mirserver: Selected rendering driver: mir:gbm-kms (version 2.19.2) for device ((null): /dev/dri/renderD128)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.098350] < - debug - > gbm-kms: Checking whether /dev/dri/renderD128 is the same device as (/dev/dri/card1, /dev/dri/renderD128)...
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.098353] < - debug - > gbm-kms: 	...yup.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.161041] < -warning- > gbm-kms: Unable to determine the current display mode.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.161170] <information> gbm-kms: DRM device details:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.161187] <information> gbm-kms: /dev/dri/card1: using driver i915 [Intel Graphics] (version: 1.6.0 driver date: 20230929)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.161225] <information> gbm-kms: 	Output: DisplayPort-1 (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.161243] <information> gbm-kms: 	Output: HDMI-A-1 (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.161268] <information> gbm-kms: 	Output: HDMI-A-2 (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.186980] <information> gbm-kms: 	Output: HDMI-A-3 (connected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187036] <information> gbm-kms: 		Mode: 1920×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187040] <information> gbm-kms: 		Mode: 1920×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187042] <information> gbm-kms: 		Mode: 1920×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187045] <information> gbm-kms: 		Mode: 1600×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187047] <information> gbm-kms: 		Mode: 1280×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187051] <information> gbm-kms: 		Mode: 1280×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187053] <information> gbm-kms: 		Mode: 1280×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187055] <information> gbm-kms: 		Mode: 1152×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187058] <information> gbm-kms: 		Mode: 1280×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187060] <information> gbm-kms: 		Mode: 1280×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187062] <information> gbm-kms: 		Mode: 1280×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187065] <information> gbm-kms: 		Mode: 1024×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187067] <information> gbm-kms: 		Mode: 1024×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187070] <information> gbm-kms: 		Mode: 800×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187073] <information> gbm-kms: 		Mode: 800×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187076] <information> gbm-kms: 		Mode: 720×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187078] <information> gbm-kms: 		Mode: 720×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187081] <information> gbm-kms: 		Mode: 720×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187083] <information> gbm-kms: 		Mode: 640×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187085] <information> gbm-kms: 		Mode: 640×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187088] <information> gbm-kms: 		Mode: 640×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187090] <information> gbm-kms: 		Mode: 720×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187134] <information> gbm-kms: 	Output: DisplayPort-2 (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187154] <information> gbm-kms: 	Output: HDMI-A-4 (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187167] < - debug - > miral: Display config using layout: 'default'
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.187227] <information> miral: Display config:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: 8>< ---------------------------------------------------
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: layouts:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:   default:                         # the current layout
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     cards:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     # a list of cards (currently matched by card-id)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     - card-id: 0
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       DisplayPort-1:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-1:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-2:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-3:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         position: [0, 0]	# Defaults to [0, 0]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       DisplayPort-2:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-4:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: 8>< ---------------------------------------------------
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.213159] < -warning- > gbm-kms: Ignoring attempt to set zero length gamma
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238797] < - debug - > gbm-kms: No EDID data available on connector 35
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238813] < -warning- > gbm-kms: Unable to determine the current display mode.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238883] <information> gbm-kms: DRM device details:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238896] <information> gbm-kms: /dev/dri/card0: using driver simpledrm [DRM driver for simple-framebuffer platform devices] (version: 1.0.0 driver date: 20200625)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238906] <information> gbm-kms: 	Output: unknown-1 (connected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238910] <information> gbm-kms: 		Mode: 800×[email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238916] < - debug - > miral: Display config using layout: 'default'
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238934] <information> miral: Display config:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: 8>< ---------------------------------------------------
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: layouts:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:   default:                         # the current layout
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     cards:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     # a list of cards (currently matched by card-id)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     - card-id: 0
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       unknown-1:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         position: [0, 0]	# Defaults to [0, 0]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: 8>< ---------------------------------------------------
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238950] < -warning- > gbm-kms: Ignoring attempt to set zero length gamma
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.238994] < - debug - > miral: Display config using layout: 'default'
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.239011] <information> miral: Display config:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: 8>< ---------------------------------------------------
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: layouts:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:   default:                         # the current layout
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     cards:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     # a list of cards (currently matched by card-id)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     - card-id: 0
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       DisplayPort-1:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-1:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-2:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-3:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected],
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # [email protected], [email protected], [email protected], [email protected], [email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         position: [0, 0]	# Defaults to [0, 0]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       DisplayPort-2:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       HDMI-A-4:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # (disconnected)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:     - card-id: 1
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:       unknown-1-1:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # This output supports the following modes: [email protected]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Uncomment the following to enforce the selected configuration.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         # Or amend as desired.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         #
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         state: enabled	# {enabled, disabled}, defaults to enabled
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         mode: [email protected]	# Defaults to preferred mode
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         position: [0, 0]	# Defaults to [0, 0]
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         orientation: normal	# {normal, left, right, inverted}, defaults to normal
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         scale: 1
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]:         group: 0	# Outputs with the same non-zero value are treated as a single display
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: 8>< ---------------------------------------------------
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: xkbcommon: ERROR: couldn't find a Compose file for locale "en_US.UTF-8" (mapped to "en_US.UTF-8")
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: Failed to create /root/.cache for shader cache (Permission denied)---disabling.
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: MESA-LOADER: failed to open simpledrm: /snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri//simpledrm_dri.so: cannot open shared object file: No such file or directory (search paths /snap/ubuntu-frame/11842/gpu-2404/usr/lib/x86_64-linux-gnu/dri/:/snap/ubuntu-frame/11842/gpu-2404/usr/lib/i386-linux-gnu/dri/, suffix _dri)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.249635] < -warning- > gbm-kms: clear_cursor: drmModeSetCursor failed (No such device or address)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.250234] <information> display: Failed to create hardware cursor
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.250257] <information> mirserver: Using software cursor
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.250550] <information> gbm-kms-buffer-allocator: Enabled linux-dmabuf import support
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.261857] < - ERROR - > mirserver: Unable to watch directory /snap/ubuntu-frame/11842/usr/share/applications
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.261878] < - ERROR - > mirserver: Unable to watch directory /snap/ubuntu-frame/11842/gpu-2404/usr/share/applications
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.262138] <information> mircommon: Loading modules from: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.262178] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/graphics-eglstream-kms.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.262202] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/graphics-gbm-kms.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.262212] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/renderer-egl-generic.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.262220] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/server-x11.so.22
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.262227] <information> mircommon: Loading module: /snap/ubuntu-frame/11842/usr/lib/x86_64-linux-gnu/mir/server-platform/input-evdev.so.10
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.262980] <information> mirserver: Selected input driver: mir:evdev-input (version: 2.19.2)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.263165] <information> mirserver: Mir version 2.19.2
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266328] <information> GLRenderer: EGL vendor: Mesa Project
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266355] <information> GLRenderer: EGL version: 1.5
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266362] <information> GLRenderer: EGL client APIs: OpenGL OpenGL_ES
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266370] <information> GLRenderer: EGL extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_protected_content EGL_EXT_query_reset_notification_strategy EGL_IMG_context_priority EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_gl_interop EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_WL_bind_wayland_display
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266380] <information> GLRenderer: GL vendor: Intel
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266387] <information> GLRenderer: GL renderer: Mesa Intel(R) Graphics (MTL)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266392] <information> GLRenderer: GL version: OpenGL ES 3.2 Mesa 24.0.9-0ubuntu0.1
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266397] <information> GLRenderer: GLSL version: OpenGL ES GLSL ES 3.20
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: - (error decoding original message: message key "MESSAGE" truncated)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.266693] <information> GLRenderer: GL max texture size = 16384
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.268388] <information> GLRenderer: GL framebuffer bits: RGBA=8888, depth=0, stencil=0
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269079] <information> GLRenderer: EGL vendor: Mesa Project
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269102] <information> GLRenderer: EGL version: 1.5
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269110] <information> GLRenderer: EGL client APIs: OpenGL OpenGL_ES
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269118] <information> GLRenderer: EGL extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_protected_content EGL_EXT_query_reset_notification_strategy EGL_IMG_context_priority EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_gl_interop EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_WL_bind_wayland_display
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269125] <information> GLRenderer: GL vendor: Intel
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269131] <information> GLRenderer: GL renderer: Mesa Intel(R) Graphics (MTL)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269136] <information> GLRenderer: GL version: OpenGL ES 3.2 Mesa 24.0.9-0ubuntu0.1
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269141] <information> GLRenderer: GLSL version: OpenGL ES GLSL ES 3.20
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: - (error decoding original message: message key "MESSAGE" truncated)
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.269436] <information> GLRenderer: GL max texture size = 16384
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.270862] <information> GLRenderer: GL framebuffer bits: RGBA=8880, depth=0, stencil=0
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331858] <information> mirserver: Initial display configuration:
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331919] <information> mirserver: * Output 1: DisplayPort disconnected
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331926] <information> mirserver: * Output 2: HDMI-A disconnected
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331933] <information> mirserver: * Output 3: HDMI-A disconnected
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331939] <information> mirserver: * Output 4: HDMI-A connected, used
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331951] <information> mirserver: . |_ EDID monitor name: DELL P2418HT
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331958] <information> mirserver: . |_ EDID manufacturer: DEL
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331976] <information> mirserver: . |_ EDID product code: 16660
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331990] <information> mirserver: . |_ Physical size 24.0" 530x300mm
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.331997] <information> mirserver: . |_ Power is on
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332005] <information> mirserver: . |_ Current mode 1920x1080 60.00Hz
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332013] <information> mirserver: . |_ Preferred mode 1920x1080 60.00Hz
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332019] <information> mirserver: . |_ Orientation normal
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332057] <information> mirserver: . |_ Logical size 1920x1080
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332072] <information> mirserver: . |_ Logical position +0+0
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332079] <information> mirserver: . |_ Scaling factor: 1.00
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332085] <information> mirserver: * Output 5: DisplayPort disconnected
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332090] <information> mirserver: * Output 6: HDMI-A disconnected
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332094] <information> mirserver: * Output 7: unknown connected, used
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332100] <information> mirserver: . |_ Physical size 10.4" 211x158mm
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332105] <information> mirserver: . |_ Power is on
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332110] <information> mirserver: . |_ Current mode 800x600 60.00Hz
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332115] <information> mirserver: . |_ Preferred mode 800x600 60.00Hz
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332119] <information> mirserver: . |_ Orientation normal
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332123] <information> mirserver: . |_ Logical size 800x600
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332128] <information> mirserver: . |_ Logical position +0+0
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332132] <information> mirserver: . |_ Scaling factor: 1.00
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332182] < -warning- > miral: Attempt to read custom output attribute (surface-title) that wasn't added
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332196] < -warning- > miral: Attempt to read custom output attribute (snap-name) that wasn't added
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332335] < - debug - > miral: Configuring pointer: 'basic-window-manager'
2025-01-16T00:00:36Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:36.332360] <information> input-hub: Device configuration: basic-window-manager, capabilities={pointer}
2025-01-16T00:00:38Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:38.513270] <information> frame: New surface for snap="wpe-webkit-mir-kiosk" with title="Cog"
2025-01-16T00:00:38Z ubuntu-frame.daemon[4997]: [2025-01-16 00:00:38.516578] <information> input-hub: Device configuration: virtual-keyboard, capabilities={keyboard}

@Saviq
Copy link
Collaborator

Saviq commented Jan 16, 2025

@thmsclrk thanks for that… unfortunately that doesn't reproduce here. But what I noticed is that you have two displays connected / overlapping. I wonder if that affects things. Can you disconnect / disable one of them?

I've now found a device in our lab with the 125H CPU and dual displays, will report back on what I manage to find out.

@thmsclrk
Copy link

Hi @Saviq, if by two displays you are referring to the 800x600 display - I don't actually know where or what this display is. There is definitely only 1x screen connected to the device, right now via DisplayPort. Looks like maybe a phantom display?

Running sudo snap unset ubuntu-frame display followed immediately by sudo snap get ubuntu-frame display gives the following:

~$ sudo snap get ubuntu-frame display
layouts:
# keys here are layout labels (used for atomically switching between them).
# The yaml anchor 'the_default' is used to alias the 'default' label

  default:
    cards:
    # a list of cards (currently matched by card-id)

    - card-id: 0
      DisplayPort-1:
        # This output supports the following modes: [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected]
        #
        # Uncomment the following to enforce the selected configuration.
        # Or amend as desired.
        #
        state: enabled	# {enabled, disabled}, defaults to enabled
        mode: [email protected]	# Defaults to preferred mode
        position: [0, 0]	# Defaults to [0, 0]
        orientation: normal	# {normal, left, right, inverted}, defaults to normal
        scale: 1
        group: 0	# Outputs with the same non-zero value are treated as a single display

      HDMI-A-1:
        # (disconnected)

      HDMI-A-2:
        # (disconnected)

      HDMI-A-3:
        # (disconnected)

      DisplayPort-2:
        # (disconnected)

      HDMI-A-4:
        # (disconnected)


    - card-id: 1
      unknown-1-1:
        # This output supports the following modes: [email protected]
        #
        # Uncomment the following to enforce the selected configuration.
        # Or amend as desired.
        #
        state: enabled	# {enabled, disabled}, defaults to enabled
        mode: [email protected]	# Defaults to preferred mode
        position: [0, 0]	# Defaults to [0, 0]
        orientation: normal	# {normal, left, right, inverted}, defaults to normal
        scale: 1
        group: 0	# Outputs with the same non-zero value are treated as a single display

  side_by_side:
    cards:
    # a list of cards (currently matched by card-id)

    - card-id: 0
      DisplayPort-1:
        # This output supports the following modes: [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected], [email protected], [email protected],
        # [email protected], [email protected], [email protected]
        #
        # Uncomment the following to enforce the selected configuration.
        # Or amend as desired.
        #
        state: enabled	# {enabled, disabled}, defaults to enabled
        mode: [email protected]	# Defaults to preferred mode
        position: [0, 0]	# Defaults to [0, 0]
        orientation: normal	# {normal, left, right, inverted}, defaults to normal
        scale: 1
        group: 0	# Outputs with the same non-zero value are treated as a single display

      HDMI-A-1:
        # (disconnected)

      HDMI-A-2:
        # (disconnected)

      HDMI-A-3:
        # (disconnected)

      DisplayPort-2:
        # (disconnected)

      HDMI-A-4:
        # (disconnected)


    - card-id: 1
      unknown-1-1:
        # This output supports the following modes: [email protected]
        #
        # Uncomment the following to enforce the selected configuration.
        # Or amend as desired.
        #
        state: enabled	# {enabled, disabled}, defaults to enabled
        mode: [email protected]	# Defaults to preferred mode
        position: [1920, 0]	# Defaults to [0, 0]
        orientation: normal	# {normal, left, right, inverted}, defaults to normal
        scale: 1
        group: 0	# Outputs with the same non-zero value are treated as a single display

I can manually override as such:

~$ sudo snap set ubuntu-frame display="layouts:
  default:
    cards:
    - card-id: 0
      DisplayPort-1:
        state: enabled
        mode: [email protected]
        position: [0, 0]
        orientation: normal
        scale: 1
        group: 0"

But the second screen remains in the logs...

2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.667994] <information> mirserver: Initial display configuration:
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668006] <information> mirserver: * Output 1: DisplayPort connected, used
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668012] <information> mirserver: . |_ EDID monitor name: DELL U3219Q
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668017] <information> mirserver: . |_ EDID manufacturer: DEL
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668021] <information> mirserver: . |_ EDID product code: 41251
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668029] <information> mirserver: . |_ Physical size 20.6" 350x390mm
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668033] <information> mirserver: . |_ Power is on
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668037] <information> mirserver: . |_ Current mode 1920x2160 59.98Hz
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668041] <information> mirserver: . |_ Preferred mode 1920x2160 59.98Hz
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668044] <information> mirserver: . |_ Orientation normal
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668050] <information> mirserver: . |_ Logical size 1920x2160
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668054] <information> mirserver: . |_ Logical position +0+0
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668058] <information> mirserver: . |_ Scaling factor: 1.00
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668061] <information> mirserver: * Output 2: HDMI-A disconnected
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668065] <information> mirserver: * Output 3: HDMI-A disconnected
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668068] <information> mirserver: * Output 4: HDMI-A disconnected
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668072] <information> mirserver: * Output 5: DisplayPort disconnected
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668075] <information> mirserver: * Output 6: HDMI-A disconnected
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668079] <information> mirserver: * Output 7: unknown connected, used
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668083] <information> mirserver: . |_ Physical size 10.4" 211x158mm
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668087] <information> mirserver: . |_ Power is on
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668091] <information> mirserver: . |_ Current mode 800x600 60.00Hz
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668095] <information> mirserver: . |_ Preferred mode 800x600 60.00Hz
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668098] <information> mirserver: . |_ Orientation normal
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668102] <information> mirserver: . |_ Logical size 800x600
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668105] <information> mirserver: . |_ Logical position +0+0
2025-01-16T10:28:09Z ubuntu-frame.daemon[5504]: [2025-01-16 10:28:09.668109] <information> mirserver: . |_ Scaling factor: 1.00

@thmsclrk
Copy link

@Saviq following the 'phantom display' lead... I think I may have actually solved my problem.

Using the steps here, more specifically adding GRUB_CMDLINE_LINUX_DEFAULT=”initcall_blacklist=simpledrm_platform_driver_init” appears to have fixed the issue (at least for the last 15 mins) - will monitor and revert.

@Saviq
Copy link
Collaborator

Saviq commented Jan 16, 2025

And the more pertinent to Meteor Lake

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2084046

Can confirm that disabling the phantom output reins the memory usage in (where it plateaus).

Image

We'll add a quirk to disable simpledrm usage in Mir and put it on the backlog to track the leak down further.

@Saviq Saviq changed the title Memory leak on client disconnection Memory leak on simpledrm Jan 16, 2025
Saviq added a commit that referenced this issue Jan 16, 2025
@Saviq
Copy link
Collaborator

Saviq commented Jan 16, 2025

Thanks @thmsclrk for the help and persistence ;)

Alan did plug a couple smaller leaks while hunting for this ;D

Image

github-merge-queue bot pushed a commit to canonical/ubuntu-frame that referenced this issue Jan 16, 2025
We were failing to release mmapped memory (doing it wrong and at the
wrong time). That lead to the memory footprint growing without bound.

C.f. canonical/mir#3710
github-merge-queue bot pushed a commit that referenced this issue Jan 16, 2025
Saviq pushed a commit that referenced this issue Jan 16, 2025
Every time an app supporting text-input-v3 starts we allocate a
"virtual-keyboard", we should also deallocate it as appropriate.

This was identified while investigating #3710, and is part of the fix
(possibly all the fix - still testing)
Saviq pushed a commit that referenced this issue Jan 16, 2025
@thmsclrk
Copy link

Thanks @AlanGriffiths and @Saviq for your help with this!

@AlanGriffiths
Copy link
Collaborator Author

@thmsclrk thanks you for bringing this to our attention, it improved our code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug triaged Triage into JIRA to plan it in
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants