From 0584aa00831a1a537285618ea0033dc3705c199f Mon Sep 17 00:00:00 2001 From: Bill Hollings Date: Tue, 10 Oct 2023 15:02:06 -0400 Subject: [PATCH] Fix deadlock when reporting debug message on MVKInstance destruction. --- MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm index e3c94135..6e768161 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm @@ -723,11 +723,12 @@ MVKInstance::~MVKInstance() { _useCreationCallbacks = true; mvkDestroyContainerContents(_physicalDevices); - lock_guard lock(_dcbLock); - mvkDestroyContainerContents(_debugReportCallbacks); - - MVKLogInfo("Destroyed VkInstance for Vulkan version %s with %d Vulkan extensions enabled.", + // Since this message may invoke debug callbacks, do it before locking callbacks. + MVKLogInfo("Destroying VkInstance for Vulkan version %s with %d Vulkan extensions enabled.", mvkGetVulkanVersionString(_appInfo.apiVersion).c_str(), _enabledExtensions.getEnabledCount()); + + lock_guard lock(_dcbLock); + mvkDestroyContainerContents(_debugReportCallbacks); }