Description

Crash in FUniformExpressionSet::FillUniformBuffer trying access deleted UTextureCollection (Experimental in 5.6).

The licensee describes their crash, their analysis, and a proposed fix:
This crash is occurring because the UTextureCollection used by the material is being freed before the material. The material was already queued for renderering and tries to reference the now deleted UTextureCollection. FMaterialCachedExpressionData::AddReferencedObjects does not add references to ReferencedTextureCollections. Just need to add that call.

The proposed fix involves adding:
Collector.AddStableReferenceArray(&ReferencedTextureCollections);
to:
void FMaterialCachedExpressionData::AddReferencedObjects(FReferenceCollector& Collector)

They also mention they have made many changes to their code base to enable texture collection on 5.5 (the feature is experimental on 5.6), and noticed this oversight on the referred code.

There is no repro case, the issue was confirmed by code code inspection.

The issue is present on 5.5, 5.6, and 5.7 (CL42864112).

Steps to Reproduce

Inspect the code on \UnrealEngine\Engine\Source\Runtime\Engine\Private\Materials\MaterialCachedData.cpp#L73 (UE 5.5.4-Release)
There is no mention of ReferencedTextureCollections.

Callstack

LogWindows: Error: === Critical Error: ===
LogWindows: Error:
LogWindows: Error: Fatal error!
LogWindows: Error:
LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff
LogWindows: Error:
LogWindows: Error: [Callstack] 0x00007ff76c19f484 Unreal.exe!FUniformExpressionSet::FillUniformBuffer() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Engine\Private\Materials\MaterialUniformExpressions.cpp:1414]
LogWindows: Error: [Callstack] 0x00007ff76c19cc3e Unreal.exe!FUniformExpressionSet::FillUniformBuffer() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Engine\Private\Materials\MaterialUniformExpressions.cpp:803]
LogWindows: Error: [Callstack] 0x00007ff76c1441fe Unreal.exe!FMaterialRenderProxy::EvaluateUniformExpressions() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Engine\Private\Materials\MaterialRenderProxy.cpp:478]
LogWindows: Error: [Callstack] 0x00007ff76c134012 Unreal.exe!`FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions'::`2'::<lambda_1>::operator()() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Engine\Private\Materials\MaterialRenderProxy.cpp:778]
LogWindows: Error: [Callstack] 0x00007ff76c1640b8 Unreal.exe!FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Engine\Private\Materials\MaterialRenderProxy.cpp:808]
LogWindows: Error: [Callstack] 0x00007ff76a115bc0 Unreal.exe!FSlateRHIRenderer::DrawWindow_RenderThread() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:657]
LogWindows: Error: [Callstack] 0x00007ff76a11a54a Unreal.exe!FSlateRHIRenderer::DrawWindows_RenderThread() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:1107]
LogWindows: Error: [Callstack] 0x00007ff76a0fce29 Unreal.exe!`FSlateRHIRenderer::DrawWindows_Private'::`99'::<lambda_3>::operator()() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:1389]
LogWindows: Error: [Callstack] 0x00007ff76955d31a Unreal.exe!`FRenderThreadCommandPipe::EnqueueAndLaunch'::`5'::<lambda_1>::operator()() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:1549]
LogWindows: Error: [Callstack] 0x00007ff769579b5f Unreal.exe!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(void),1> >::ExecuteTask() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:634]
LogWindows: Error: [Callstack] 0x00007ff76550ae25 Unreal.exe!UE::Tasks::Private::FTaskBase::TryExecuteTask() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Core\Public\Tasks\TaskPrivate.h:504]
LogWindows: Error: [Callstack] 0x00007ff7655010de Unreal.exe!FNamedTaskThread::ProcessTasksNamedThread() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:779]
LogWindows: Error: [Callstack] 0x00007ff76550150e Unreal.exe!FNamedTaskThread::ProcessTasksUntilQuit() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:668]
LogWindows: Error: [Callstack] 0x00007ff76959eb44 Unreal.exe!RenderingThreadMain() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:325]
LogWindows: Error: [Callstack] 0x00007ff7695a2329 Unreal.exe!FRenderingThread::Run() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:451]
LogWindows: Error: [Callstack] 0x00007ff765afc868 Unreal.exe!FRunnableThreadWin::Run() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:159]
LogWindows: Error: [Callstack] 0x00007ff765af402f Unreal.exe!FRunnableThreadWin::GuardedRun() [D:\dev\Unreal-Full-NoP4VFS\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:79]
LogWindows: Error: [Callstack] 0x00007ffca754e8d7 KERNEL32.DLL!UnknownFunction []

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-291472 in the post.

0
Login to Vote

Duplicate
ComponentUE - Rendering Architecture
Affects Versions5.55.65.7
CreatedMay 30, 2025
ResolvedJun 16, 2025
UpdatedJun 16, 2025
View Jira Issue