KhronosGroup / OpenXR-SDK-Source

Sources for OpenXR loader, basic API layers, and example code.

Home Page:https://khronos.org/openxr

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Want to know about how does OpenXR manage/destroy Vulkan resources.

TheZeury opened this issue · comments

Vulkan version: 1.3

In my application, when I try to destroy the Vulkan logical device, the validation layer complains that a bunch of objects has not been destroyed yet. I spent an entire day trying to properly destroy the resources until I realized that these objects were not created by me at all. Then they must be created by OpenXR I think since it's the only part of my code that interact with Vulkan.

And I also found an #issue saying that the hello-xr demo doesn't destroy the Vulkan device manually. And it is true indeed. So I tried to add a destructor for the VulkanGraphicsPlugin class. And as a result, the validation layer complained the same thing (maybe not completely the same) as it does in my application.

I don't understand how OpenXR manages these Vulkan objects, maybe it's a bug, or maybe I just shouldn't destroy the Vulkan logical device myself, and OpenXR can handle this for me, so I'm asking here.

Here's the validation layer output from hello-xr after manually destroying m_vkDevice field:

(This output is not correct so I deleted it, look at those I posted in the comment)

Oops, I made something wrong, I let the VulkanGraphicsPlugin destroy the device before destroying other objects, let me try again. This should be the output after the members are destructed:

[19:50:44.379][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x1cc2255eaf0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkCommandBuffer 0x1cc2255eaf0[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x1cc2265e8c0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkCommandBuffer 0x1cc2265e8c0[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xed367200000000ab, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0xed367200000000ab[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xb527dd00000000cd, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0xb527dd00000000cd[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xa56ac00000000d4, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0xa56ac00000000d4[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xaa4e0f00000000cf, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0xaa4e0f00000000cf[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x2602c100000000b8, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0x2602c100000000b8[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xe7713700000000ae, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0xe7713700000000ae[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x58e3e000000000d8, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0x58e3e000000000d8[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x9b139800000000b1, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0x9b139800000000b1[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.380][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xa7cc1e00000000d6, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0xa7cc1e00000000d6[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x359e9300000000cb, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0x359e9300000000cb[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x2ec10700000000be, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0x2ec10700000000be[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xfb4f900000000d1, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0xfb4f900000000d1[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x2860e200000000bb, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImage 0x2860e200000000bb[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xf56c9b0000000004, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkSemaphore 0xf56c9b0000000004[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xaafb8b00000000d3, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkFence 0xaafb8b00000000d3[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x5fc58300000000db, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkFence 0x5fc58300000000db[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.381][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x1e386200000000da, type = VK_OBJECT_TYPE_FENCE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkFence 0x1e386200000000da[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.382][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xac9fba00000000d2, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0xac9fba00000000d2[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.382][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xb8b3500000000ac, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0xb8b3500000000ac[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.382][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x1dc49b00000000b2, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0x1dc49b00000000b2[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.382][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x2df7c500000000bc, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0x2df7c500000000bc[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.382][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x2d15fe00000000bf, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0x2d15fe00000000bf[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.382][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x5581c500000000d5, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0x5581c500000000d5[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.382][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xd6c9a000000000b9, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0xd6c9a000000000b9[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.383][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xad092800000000d0, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0xad092800000000d0[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.383][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xaf31600000000ce, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0xaf31600000000ce[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.383][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xa0235400000000cc, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0xa0235400000000cc[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.383][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x9b5ec100000000d9, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0x9b5ec100000000d9[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.383][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x10da6e00000000af, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0x10da6e00000000af[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.383][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x14170700000000d7, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkDeviceMemory 0x14170700000000d7[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.383][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xc9ccfc00000000ad, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImageView 0xc9ccfc00000000ad[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x8f9a6c00000000bd, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImageView 0x8f9a6c00000000bd[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x84ad8300000000ba, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImageView 0x84ad8300000000ba[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xdf8aaa00000000b3, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImageView 0xdf8aaa00000000b3[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x88693900000000c0, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImageView 0x88693900000000c0[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xc4bec900000000b0, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkImageView 0xc4bec900000000b0[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xfa21a40000000003, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkShaderModule 0xfa21a40000000003[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x95ff2600000000b7, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkPipeline 0x95ff2600000000b7[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x3a9c5c00000000c4, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkPipeline 0x3a9c5c00000000c4[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
[19:50:44.384][Error  ] ERROR: (DEVICE 0x1cc1b627ca0) [Validation] Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1cc1b627ca0, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0xd0e29300000000aa, type = VK_OBJECT_TYPE_COMMAND_POOL; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1cc1b627ca0[], VkCommandPool 0xd0e29300000000aa[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)

Which runtime/device are you using? This is probably a bug with the runtime in question.

An issue (number 1928) has been filed to correspond to this issue in the internal Khronos GitLab (Khronos members only: KHR:openxr/openxr#1928 ), to facilitate working group processes.

This GitHub issue will continue to be the main site of discussion.

Which runtime/device are you using? This is probably a bug with the runtime in question.

Yes, you are right. It happens when applications are running on SteamVR. I tried Oculus runtime just now after seeing your comment, and the errors are gone.

I'm using quest2, the SteamVR runtime throws these errors no matter if I run it through Virtual Desktop or through the Oculus app.

OK, so steamvr. It also depends on your GPU and driver version: what are those?

RTX4090, driver version 528.24