偶尔触发的崩溃,堆栈如下
[2025.09.08-17.22.54:373][451]LogWindows: Error: Fatal error: [File:E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Engine\Private\Materials\MaterialRenderProxy.cpp] [Line: 514]
[2025.09.08-17.22.54:373][451]LogWindows: Error: Cannot queue the Expression Cache for Material MID_Post_Process_Wind_Fog_34 when it is about to be deleted
[2025.09.08-17.22.54:373][451]LogWindows: Error:
[2025.09.08-17.22.54:373][451]LogWindows: Error:
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff67227ca69 Rhea.exe!FMaterialRenderProxy::CacheUniformExpressions() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Engine\Private\Materials\MaterialRenderProxy.cpp:516]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66ff86bc1 Rhea.exe!`FRenderThreadCommandPipe::EnqueueAndLaunch’::`5’::<lambda_1>::operator()() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:1541]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66ffa3aba Rhea.exe!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(void),1> >::ExecuteTask() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:635]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66b679f83 Rhea.exe!UE::Tasks::Private::FTaskBase::TryExecuteTask() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Core\Public\Tasks\TaskPrivate.h:505]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66b66ffe7 Rhea.exe!FNamedTaskThread::ProcessTasksNamedThread() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:779]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66b67042e Rhea.exe!FNamedTaskThread::ProcessTasksUntilQuit() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:668]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66ffca088 Rhea.exe!RenderingThreadMain() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:318]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66ffcd929 Rhea.exe!FRenderingThread::Run() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:443]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66bc55818 Rhea.exe!FRunnableThreadWin::Run() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:159]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff66bc4cd7f Rhea.exe!FRunnableThreadWin::GuardedRun() [E:\rhea_workspace\ue_rhea_src\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:79]
[2025.09.08-17.22.54:373][451]LogWindows: Error: [Callstack] 0x00007ff8b7e2e8d7 KERNEL32.DLL!UnknownFunction
[2025.09.08-17.22.54:373][451]LogWindows: Error:
渲染线程和游戏线程的资源生命周期不同步,引擎尝试给一个 MaterialInstanceDynamic(MID_Post_Process_Wind_Fog_34)去做表达式缓存(Expression Cache),但这个 MID 已经被标记为被GC,马上就要销毁了,所以无法继续Cache。
但我们仔细检查应该不存在材质实例没有Hold住被GC的情况,请问还有什么可能会造成这种资源生命周期的不同步呢?