GPUOpen-Tools/GPU-Reshape

[Vulkan] debug build crashes the application

aurolou opened this issue · 5 comments

When I have a debug build of GPUReshape running with discoverability enabled, my Vulkan application crashes with following callstack:

Crash detected, current frames:
[00007FFC9DA4BDD0] DebugBreak
C:\Windows\System32\KERNELBASE.dll
[00007FFBBA43D92B] Hook_vkGetDeviceProcAddr
D:\Tools\GPU Reshape\23-6-28\artifacts-debug\Bin\MSVC\Debug\GRS.Backends.Vulkan.Layer.dll
[00007FFBBA43D92B] Hook_vkGetDeviceProcAddr
D:\Tools\GPU Reshape\23-6-28\artifacts-debug\Bin\MSVC\Debug\GRS.Backends.Vulkan.Layer.dll
[00007FFBBA43D92B] Hook_vkGetDeviceProcAddr
[00007FFBBA43D92B] Hook_vkGetDeviceProcAddr
[00007FFBBA43D92B] Hook_vkGetDeviceProcAddr
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC0D63EAF0] vkDestroyDescriptorPool
[00007FFC9F792690] BaseThreadInitThunk
[00007FFCA034A9D0] RtlUserThreadStart

Waiting for debugger to attach...

This does not happen with the release build of GPUReshape. Also note, that at this point I have not added the Vulkan application to my workspace nor instrumented anything.
Are there any validation layers enabled in debug mode that are not enabled in release mode?

Hi Lou,

There should be no differences between the debug / release Vulkan layer in terms of what's injected and what's not. However, the callstack above seems indicative of an assert of mine hitting, so it's catching something bad. Anything in the output log?

Callstack from GPUReshape:

KernelBase.dll!00007ffd6577bdd2() Unknown
GRS.Backends.Vulkan.Layer.dll!Detail::Break(const char * message) Line 52 C++
GRS.Backends.Vulkan.Layer.dll!PhysicalResourceMappingTable::Defragment() Line 305 C++
GRS.Backends.Vulkan.Layer.dll!PhysicalResourceMappingTable::Update(VkCommandBuffer_T * commandBuffer) Line 217 C++
GRS.Backends.Vulkan.Layer.dll!ShaderExportStreamer::RecordPreCommandBuffer(ShaderExportQueueState * state, ShaderExportStreamSegment * segment) Line 693 C++
GRS.Backends.Vulkan.Layer.dll!Hook_vkQueueSubmit(VkQueue_T * queue, unsigned int submitCount, const VkSubmitInfo * pSubmits, VkFence_T * userFence) Line 181 C++

It's hitting the ASSERT in PhysicalResourceMappingTable::Defragment(), line 302.
liveHead = 56
liveSegmentCount = 57

Ah it's the defragmentation that fails, that can lead to a heap of false positives. Thanks!

I assume this is a NDA'd application, and not something public?

It's the game Strange Brigade, Vulkan version.

Would it be possible to test against latest?

Descriptor defragmentation issues should be fixed now.