UE5.6 - Crash in D3D12Descriptors::CopyDescriptor()

We don’t have repro steps but this has occurred multiple times in our initial testing of 5.6.

LoginId:8bdffb1a4f3bf50f6e35538447c4c9e6 EpicAccountId:9204abc66eb54419890604577ddefd6a Unhandled Exception: EXCEPTION_ACCESS_VIOLATION writing address 0x00000171ce9be060 nvwgf2umx D3D12Core GamePrototype!UE::D3D12Descriptors::CopyDescriptor() [C:\b\gameprototype\UE\Engine\Source\Runtime\D3D12RHI\Private\D3D12Descriptors.cpp:15] GamePrototype!FD3D12BindlessResourceManager::InitializeDescriptor() [C:\b\gameprototype\UE\Engine\Source\Runtime\D3D12RHI\Private\D3D12BindlessDescriptors.cpp:454] GamePrototype!FD3D12CommandContext::ClearUAV’::17'::<lambda_2>::operator()() [C:\b\gameprototype\UE\Engine\Source\Runtime\D3D12RHI\Private\D3D12UAV.cpp:365] GamePrototype!FRHICommandListBase::Execute() [C:\b\gameprototype\UE\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:524] GamePrototype!FRHICommandList_RecursiveHazardous::~FRHICommandList_RecursiveHazardous() [C:\b\gameprototype\UE\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:1683] GamePrototype!FD3D12CommandContext::RHIClearUAVUint() [C:\b\gameprototype\UE\Engine\Source\Runtime\D3D12RHI\Private\D3D12UAV.cpp:455] GamePrototype!FRHICommand<FRHICommandClearUAVUint,FRHICommandClearUAVUintString2293>::ExecuteAndDestruct() [C:\b\gameprototype\UE\Engine\Source\Runtime\RHI\Public\RHICommandList.h:1621] GamePrototype!FRHICommandListBase::Execute() [C:\b\gameprototype\UE\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:524] GamePrototype!FRHICommandListExecutor::FTranslateState::Translate() [C:\b\gameprototype\UE\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:1081] GamePrototype!FRHICommandListExecutor::FSubmitState::Dispatch’::10'::<lambda_1>::operator()() [C:\b\gameprototype\UE\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:1029] GamePrototype!FRHICommandListExecutor::FTaskPipe::Execute() [C:\b\gameprototype\UE\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:725] GamePrototype!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(enum ENamedThreads::Type,TRefCountPtr<FBaseGraphTask> const &),0> >::ExecuteTask() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:707] GamePrototype!UE::Tasks::Private::FTaskBase::TryExecuteTask() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Public\Tasks\TaskPrivate.h:528] GamePrototype!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<LowLevelTasks::FTask::Init<UE::Tasks::Private::FTaskBase::Init'::2’::<lambda_1> >‘::13'::<lambda_1>,0>::CallAndMove() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Public\Async\Fundamental\TaskDelegate.h:171] GamePrototype!LowLevelTasks::FTask::ExecuteTask() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Public\Async\Fundamental\Task.h:627] GamePrototype!LowLevelTasks::FScheduler::ExecuteTask() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:364] GamePrototype!LowLevelTasks::FScheduler::WorkerLoop() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:724] GamePrototype!LowLevelTasks::FScheduler::CreateWorker’::2'::<lambda_1>::operator()() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:188] GamePrototype!FThreadImpl::Run() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Private\HAL\Thread.cpp:69] GamePrototype!FRunnableThreadWin::Run() [C:\b\gameprototype\UE\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:159]

Steps to Reproduce
We’re seeing a new crash in the 5.6 preview with the following callstack.

Hello!

This looks like a known issue that should be fixed in UE 5.6.0

CL#40805327 (9e4517f) Inside D3D12’s ClearUAV with bindless enabled, make sure we are using an active bindless GPU heap if there was a resize from the temporary descriptor allocation.

You may want to integrate that change to avoid similar crashes until 5.6.0 is released.

Hi Alex, I confirmed that we had this change in the builds we were testing.

We’ve sent a debuggable build via DropBox that will hopefully help to repro/debug this issue. Jeremy Keays has the details.

A quick update:

This was our most frequent crash after pushing the 5.6 upgrade so we’re currently doing some testing around disabling bindless resources. Initial testing shows this is helping.

Our project uses Lumen but doesn’t use HWRT. Would you expect any negative affects for disabling bindless resources, which defaults to BindlessResources=RayTracingOnly?

Would you expect any negative affects for disabling bindless resources, which defaults to BindlessResources=RayTracingOnly?

If you aren’t relying on bindless for a specific feature or performance boost we recommend not using it because it’s an experimental feature that was largely added for Vulkan ray tracing support. We do have plans to eventually use bindless for many more features and improvements, but that an active area of development.

Thanks for providing the debuggable build. I should be able to take a look this week, though I’ve got a bit of a backlog to work through that accumulated during Fest.

We’ve fixed a crash that most surely was the reason behind this one. More details in this thread:

[Content removed]

We’ve fixed a crash that most surely was the reason behind this one.

Thanks for the update. If this issue no longer reproduces feel free to close this issue.