世界分区和Nanite导致的crash,最后调用的是FD3D12ContextCommon::BindDiagnosticBuffer()

麻烦各位大佬帮忙看看,版本为5.5.4,已经在沙漠中找过大象,但是没找到,禁用HLOD也试过、禁用部分可疑骨骼网格体的nanite也试过,升级到5.7.4也试过。

1.开启了世界分区、Nanite、Lumen、VSM

2.地图进行了HLOD构建

3.在地图内随机传送一整变,覆盖大部分区域,此时一切正常。

4.然后在一个相对复杂的场景进行了反复的跑动,然后会在某个时刻突然无预兆的崩溃。

附件中有崩溃的dmp文件,但是因为附带的log信息没有具体的崩溃内容,所以我从其他崩溃log复制了一下,如下:
[2026.04.09-16.45.31:381][151]LogRHI: Error: Breadcrumbs ‘Parallel’

  • Nanite::BasePass

  • NaniteBasePass

  • BasePass

  • Scene

  • FRDGBuilder::Execute

  • Frame 7149

    UEMinidump.dmp (1.1 MB)

[2026.04.09-16.45.31:381][151]LogThreadingWindows: Error: Runnable thread Background Worker #3 crashed.
[2026.04.09-16.45.31:381][151]LogThreadingWindows: Error: Runnable thread Background Worker #10 crashed.
[2026.04.09-16.45.31:381][151]LogWindows: Error: === Critical error: ===
[2026.04.09-16.45.31:381][151]LogWindows: Error:
[2026.04.09-16.45.31:381][151]LogWindows: Error: Fatal error!
[2026.04.09-16.45.31:381][151]LogWindows: Error:
[2026.04.09-16.45.31:381][151]LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff
[2026.04.09-16.45.31:381][151]LogWindows: Error:
[2026.04.09-16.45.31:381][151]LogWindows: Error: [Callstack] 0x00007ff740141bb0 RetraceLight.exe!FD3D12ContextCommon::BindDiagnosticBuffer()
[2026.04.09-16.45.31:381][151]LogWindows: Error: [Callstack] 0x00007ff74016e0c7 RetraceLight.exe!FD3D12DescriptorCache::SetSamplerTable()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff74015fdf7 RetraceLight.exe!FD3D12CommandContext::RHISetShaderParameters()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff74045c24e RetraceLight.exe!FRHICommandSetShaderParameters::Execute()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff73ee5f638 RetraceLight.exe!FRHICommand<FRHICommandSetShaderParameters,FRHICommandSetShaderParametersString1640>::ExecuteAndDestruct()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff74045e7b1 RetraceLight.exe!FRHICommandListBase::Execute()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff740487f33 RetraceLight.exe!FRHICommandListExecutor::FTranslateState::Translate()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff740449f36 RetraceLight.exe!operator==()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff74045ff61 RetraceLight.exe!FRHICommandListExecutor::FTaskPipe::Execute()
[2026.04.09-16.45.31:382][151]LogWindows: Error: [Callstack] 0x00007ff73c279346 RetraceLight.exe!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(enum ENamedThreads::Type,TRefCountPtr const & __ptr64),0> >::ExecuteTask()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73bca7633 RetraceLight.exe!UE::Tasks::Private::FTaskBase::TryExecuteTask()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73bc7a64f RetraceLight.exe!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __ptr64 __cdecl(bool),48>::TTaskDelegateImpl<LowLevelTasks::FTask::Init<UE::Tasks::Private::FTaskBase::Init’::2'::<lambda_1> >'::13’::<lambda_1>,0>::CallAndMove()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73bc8573e RetraceLight.exe!LowLevelTasks::FTask::ExecuteTask()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73bc854bb RetraceLight.exe!LowLevelTasks::FScheduler::ExecuteTask()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73bcaabed RetraceLight.exe!LowLevelTasks::FScheduler::WorkerLoop()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73bc73151 RetraceLight.exe!FScopeCycleCounter::~FScopeCycleCounter'::2’::<lambda_1>::operator()()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73be6eec3 RetraceLight.exe!FThreadImpl::Run()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73c286218 RetraceLight.exe!FRunnableThreadWin::Run()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ff73c27d87f RetraceLight.exe!FRunnableThreadWin::GuardedRun()
[2026.04.09-16.45.31:383][151]LogWindows: Error: [Callstack] 0x00007ffee223e8d7 KERNEL32.DLL!UnknownFunction
[2026.04.09-16.45.31:383][151]LogWindows: Error:
[2026.04.09-16.45.31:383][151]LogWindows: Error: Crash in runnable thread Background Worker #3
[2026.04.09-16.45.31:383][151]LogWindows: Error: HandleError re-entered.
[2026.04.09-16.45.31:383][151]LogWindows: FPlatformMisc::RequestExit(1, FRunnableThreadWin::GuardedRun.ExceptionHandler)
[2026.04.09-16.45.31:383][151]LogWindows: FPlatformMisc::RequestExitWithStatus(1, 3, FRunnableThreadWin::GuardedRun.ExceptionHandler)
[2026.04.09-16.45.31:383][151]LogCore: Engine exit requested (reason: Win RequestExit)

Hi SkyWater, I’m experiencing the exact same issue. Were you able to find any solution? Thanks!

BindDiagnosticBuffer 出现在调用栈里一般只是 GPU 崩溃(DEVICE_REMOVED / TDR)后 D3D12 在写诊断信息,真正的原因要看 breadcrumbs,你这里停在 Nanite::BasePass,说明 GPU 在执行 Nanite 光栅/基础通道时挂掉了。可以按下面的思路排查:

  1. 用 -gpucrashdebugging 或 -d3ddebug 启动,并开启 r.GPUCrashDebugging=1,日志里会有更具体的 breadcrumb 和资源名。
  2. 先排除 TDR 超时:注册表把 TdrDelay 调大(比如 60)看是否还崩;若不崩说明是某帧负载过重而非数据错误。
  3. 更新显卡驱动,关闭超频;部分 NVIDIA 驱动对 Nanite 有已知问题。
  4. 测试 r.Nanite.MaxPixelsPerEdge、r.Nanite.Streaming 相关参数,或临时 r.Nanite 0,确定是否 Nanite 独有。
  5. 检查复杂场景中是否有带 World Position Offset / Masked 材质的 Nanite 网格(植被常见),把它们逐个关掉 Nanite 或关闭 WPO 试试。

希望能帮你缩小范围。