Vulkan wsi leaks vk_sync object on every wsi_AcquireNextImageKHR call
Validation doesn't give any errors/warnings when running including when shutting down, so I think this is a issue in the commond WSI code. Download and compile Monado (pre-made packages are available) for Ubuntu & Debian, git version installable from AUR/Arch. Launch monado-service wait a few seconds until a gray window is visible, then press enter to close it, observe leak.
New debug
backtrace.
==116909== 16 bytes in 1 blocks are definitely lost in loss record 104 of 2,416
==116909== at 0x4843839: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==116909== by 0x7589FD9: vk_default_alloc (vk_alloc.c:26)
==116909== by 0x7141D56: vk_alloc (vk_alloc.h:48)
==116909== by 0x7142330: vk_sync_create (vk_sync.c:118)
==116909== by 0x70134D4: radv_create_sync_for_memory (radv_device.c:2957)
==116909== by 0x7100023: wsi_common_acquire_next_image2 (wsi_common.c:840)
==116909== by 0x710012A: wsi_AcquireNextImage2KHR (wsi_common.c:872)
==116909== by 0x70FFEA2: wsi_AcquireNextImageKHR (wsi_common.c:809)
==116909== by 0x4147A3: comp_target_acquire (Monado/src/xrt/compositor/main/comp_target.h:307)
==116909== by 0x4147A3: renderer_acquire_swapchain_image (Monado/src/xrt/compositor/main/comp_renderer.c:700)
==116909== by 0x4138AB: comp_renderer_draw (Monado/src/xrt/compositor/main/comp_renderer.c:1472)
==116909== by 0x412C5D: compositor_layer_commit (Monado/src/xrt/compositor/main/comp_compositor.c:344)
==116909== by 0x4290E3: xrt_comp_layer_commit (Monado/src/xrt/include/xrt/xrt_compositor.h:1381)
==116909== by 0x4290E3: multi_main_loop (Monado/src/xrt/compositor/multi/comp_multi_system.c:391)
==116909== by 0x4290E3: thread_func (Monado/src/xrt/compositor/multi/comp_multi_system.c:405)
==116909==
==116909== 32,864 bytes in 2,054 blocks are definitely lost in loss record 2,413 of 2,416
==116909== at 0x4843839: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==116909== by 0x7589FD9: vk_default_alloc (vk_alloc.c:26)
==116909== by 0x7141D56: vk_alloc (vk_alloc.h:48)
==116909== by 0x7142330: vk_sync_create (vk_sync.c:118)
==116909== by 0x70134D4: radv_create_sync_for_memory (radv_device.c:2957)
==116909== by 0x7100023: wsi_common_acquire_next_image2 (wsi_common.c:840)
==116909== by 0x710012A: wsi_AcquireNextImage2KHR (wsi_common.c:872)
==116909== by 0x70FFEA2: wsi_AcquireNextImageKHR (wsi_common.c:809)
==116909== by 0x4147A3: comp_target_acquire (Monado/src/xrt/compositor/main/comp_target.h:307)
==116909== by 0x4147A3: renderer_acquire_swapchain_image (Monado/src/xrt/compositor/main/comp_renderer.c:700)
==116909== by 0x4146E0: comp_renderer_draw (Monado/src/xrt/compositor/main/comp_renderer.c:1520)
==116909== by 0x412C5D: compositor_layer_commit (Monado/src/xrt/compositor/main/comp_compositor.c:344)
==116909== by 0x4290E3: xrt_comp_layer_commit (Monado/src/xrt/include/xrt/xrt_compositor.h:1381)
==116909== by 0x4290E3: multi_main_loop (Monado/src/xrt/compositor/multi/comp_multi_system.c:391)
==116909== by 0x4290E3: thread_func (Monado/src/xrt/compositor/multi/comp_multi_system.c:405)
Old debugoptimized
backtrace.
==59519== 16 bytes in 1 blocks are definitely lost in loss record 110 of 2,665
==59519== at 0x4843839: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==59519== by 0xA3DF49BA: vk_alloc (vk_alloc.h:48)
==59519== by 0xA3DF49BA: vk_sync_create (vk_sync.c:118)
==59519== by 0xA3DCE53D: wsi_common_acquire_next_image2 (wsi_common.c:840)
==59519== by 0xA3DCE406: wsi_AcquireNextImageKHR (wsi_common.c:809)
==59519== by 0x42F0B3: comp_target_acquire (Monado/src/xrt/compositor/main/comp_target.h:307)
==59519== by 0x42F0B3: renderer_acquire_swapchain_image (Monado/src/xrt/compositor/main/comp_renderer.c:700)
==59519== by 0x42E1BB: comp_renderer_draw (Monado/src/xrt/compositor/main/comp_renderer.c:1472)
==59519== by 0x42D56D: compositor_layer_commit (Monado/src/xrt/compositor/main/comp_compositor.c:344)
==59519== by 0x443A33: xrt_comp_layer_commit (Monado/src/xrt/include/xrt/xrt_compositor.h:1381)
==59519== by 0x443A33: multi_main_loop (Monado/src/xrt/compositor/multi/comp_multi_system.c:391)
==59519== by 0x443A33: thread_func (Monado/src/xrt/compositor/multi/comp_multi_system.c:405)
==59519== by 0xA9CF946: start_thread (pthread_create.c:435)
==59519== by 0xAA5FA43: clone (clone.S:100)
==59519==
==59519== 9,056 bytes in 566 blocks are definitely lost in loss record 2,660 of 2,665
==59519== at 0x4843839: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==59519== by 0xA3DF49BA: vk_alloc (vk_alloc.h:48)
==59519== by 0xA3DF49BA: vk_sync_create (vk_sync.c:118)
==59519== by 0xA3DCE53D: wsi_common_acquire_next_image2 (wsi_common.c:840)
==59519== by 0xA3DCE406: wsi_AcquireNextImageKHR (wsi_common.c:809)
==59519== by 0x42F0B3: comp_target_acquire (Monado/src/xrt/compositor/main/comp_target.h:307)
==59519== by 0x42F0B3: renderer_acquire_swapchain_image (Monado/src/xrt/compositor/main/comp_renderer.c:700)
==59519== by 0x42EFF0: comp_renderer_draw (Monado/src/xrt/compositor/main/comp_renderer.c:1520)
==59519== by 0x42D56D: compositor_layer_commit (Monado/src/xrt/compositor/main/comp_compositor.c:344)
==59519== by 0x443A33: xrt_comp_layer_commit (Monado/src/xrt/include/xrt/xrt_compositor.h:1381)
==59519== by 0x443A33: multi_main_loop (Monado/src/xrt/compositor/multi/comp_multi_system.c:391)
==59519== by 0x443A33: thread_func (Monado/src/xrt/compositor/multi/comp_multi_system.c:405)
==59519== by 0xA9CF946: start_thread (pthread_create.c:435)
==59519== by 0xAA5FA43: clone (clone.S:100)
Edited by Jakob Bornecrantz