Vulkan: Fix dangling pointers in _clean_up_swap_chain
#79884
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In
_clean_up_swap_chain
, the state was not fully reset to the empty state, leaving therender_pass
pointer and theswapchainImageCount
with their previous values.This causes a double free when
_clean_up_swap_chain
has been called twice without recreating the state in between. With this patch, the second_clean_up_swap_chain
effectively behaves as a no-op if there is nothing to free.swapchainImageCount
is reset to 0 in this patch, because while the previous change is enough to fix the crash, the vulkan context fails to be recreated if there are any image resources currently active. However, we just freed all resources, so it makes sense to reset the count.Fixes #65391
Fixes #73922
Maybe fixes these #64766 #70837 #72080
However, I couldn't reproduce the latter crashes to begin with. @nathanfranke @henriquelalves @michael-nischt please check if this PR fixes your issue