Return to

[Solved] Looking glass client stays open on VM shutdown


First thanks for all the work that has been put into Looking Glass, it’s a great tool.

Ever since installing it I’ve been having an occasional issue where looking-glass-client stays open when shutting down the VM (Using the shutdown button from within the guest OS). When this happens looking-glass-client uses 100% cpu and no longer responde to ScrollLock+Q. I have to manually kill it with SIGINT/SIGTERM.

I’m running the latest release (B4) on an Arch system under Wayland. I’ve run it from a terminal and this is the output I got during one of these issues:

type or paste code here

[user@host ~]$ looking-glass-client
[I] 318000819603              main.c:1064 | main                           | Looking Glass (B4)
[I] 318000819644              main.c:1065 | main                           | Locking Method: Atomic
[I] 318000822469           ivshmem.c:127  | ivshmemOpenDev                 | KVMFR Device     : /dev/shm/looking-glass
[I] 318000868853               egl.c:274  | egl_initialize                 | Double buffering is off
[I] 318000868861              main.c:671  | tryRenderer                    | Using Renderer: EGL
[I] 318000869128                gl.c:57   | waylandGetEGLDisplay           | Using eglGetPlatformDisplay
[I] 318000890057               egl.c:685  | egl_render_startup             | Single buffer mode
[I] 318000893592               egl.c:701  | egl_render_startup             | EGL       : 1.5
[I] 318000893599               egl.c:702  | egl_render_startup             | Vendor    : AMD
[I] 318000893602               egl.c:703  | egl_render_startup             | Renderer  : AMD Radeon RX 560 Series (POLARIS11, DRM 3.42.0, 5.15.2-arch1-1, LLVM 13.0.0)
[I] 318000893604               egl.c:704  | egl_render_startup             | Version   : OpenGL ES 3.2 Mesa 21.2.5
[I] 318000893606               egl.c:705  | egl_render_startup             | EGL APIs  : OpenGL OpenGL_ES
[I] 318000893608               egl.c:706  | egl_render_startup             | 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_swap_buffers_with_damage EGL_KHR_cl_event2 EGL_KHR_config_attribs 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_base EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_WL_bind_wayland_display EGL_WL_create_wayland_buffer_from_image
[I] 318000901830                gl.c:83   | waylandEGLSwapBuffers          | Using EGL_KHR_swap_buffers_with_damage
[I] 318000909841              main.c:897  | lg_run                         | ================================================================================
[I] 318000909852              main.c:898  | lg_run                         | The host application seems to not be running
[I] 318000909856              main.c:899  | lg_run                         | Waiting for the host application to start...
[I] 318001002237              main.c:954  | lg_run                         | Host ready, reported version: B4
[I] 318001002252              main.c:955  | lg_run                         | Starting session
[I] 318002206199              main.c:498  | main_frameThread               | Format: FRAME_TYPE_BGRA 2560x1440 stride:2560 pitch:10240 rotation:0
[E] 318019394487              main.c:617  | spiceThread                    | failed to process spice messages
^C[I] 318275329979              main.c:639  | intHandler                     | Caught second signal, force quitting...

Comparing the above output with a time it closes correctly the output looks exactly the same, including the “failed to process spice messages” warning.

I don’t see any verbose or debug options for looking-glass-client, so is there anything I can do to further debug this? The old reliable strace shows nothing, so I’m guessing it’s stuck reading/writing shared memory.

Edit: I’ve done some more testing, and it seems to only happen when I’ve got capture enabled. Without capture looking-glass-client successfully closes. Hitting “scrolllock” once looking-glass-client has frozen does nothing, and it still requires a SIGINT/SIGTERM to kill it. Wayland capture issue?


I’m not exactly sure about why this might occur. I have a bit of software that closes Looking Glass and SCREAM receiver (host-guest audio bridge) when the QEMU PID closes.

And a follow up question I guess. If I was going to compile with debug symbols and pull out GDB what lines would I want to break point on?

First try updating to bleeding edge, I am pretty sure this is fixed.

Yes thanks a lot, I can confirm that it’s working correctly after upgrading to latest git client + bleeding edge windows drivers. I see that capture is automatically disabled when it shuts down.