[UE6 main] Assertion failure in FRHIPoolAllocationData::Merge() (RHIPoolAllocator.cpp, line 149) on D3D12

Summary

reproducible on clean build, not Lumen-specific, not RHI-thread-specific.
Assertion failed: (Offset + Size) == InOther->Offset at RHIPoolAllocator.cpp:149, inside FRHIPoolAllocationData::Merge(), called from FRHIMemoryPool::AddToFreeBlocks() → FRHIPoolAllocator::DeallocateInternal() → FD3D12PoolAllocator::CleanUpAllocations() → FD3D12Adapter::EndFrame(). Crashes on the RHIThread during end-of-frame cleanup.

What Type of Bug are you experiencing?

Rendering (Graphics / Niagara)

Steps to Reproduce

git fetch
git pull
full manual clean (delete binaries/win64 intermediate and DDC folders)
setup.bat
generateprojectfiles.bat
do build
Launched existing project, editor crashes shortly after launch

Expected Result

should work without errors
What’s been ruled out
• r.DynamicGlobalIlluminationMethod=0 + r.ReflectionMethod=0 (Lumen GI+Reflections fully disabled) — same crash, same line. Rules out Lumen specifically.
• r.RHIThread.Enable 0 — same crash, same line. Rules out RHI-thread race condition.
• Full clean rebuild (git reset --hard origin/ue6-main + git clean -xdf) — same crash. Rules out stale/dirty build.
• GPU driver confirmed current. Conclusion: deterministic logic bug in the pool allocator’s free-block merge/offset tracking, not specific to any one subsystem, threading model, or build state.

Observed Result

see summary

Affects Versions

6

Platform(s)

Windows

Environment
Threadripper 1950X, 64GB RAM, RTX A5000, D3D12 RHI, Windows 10, engine built via command-line Build.bat (not full VS solution build), current tip of ue6-main at time of report.

For crash reports, include your callstack

Assertion failed: (Offset + Size) == InOther->Offset [File:D:\UE6git\Engine\Source\Runtime\RHICore\Private\RHIPoolAllocator.cpp] [Line: 149]

launching with -d3ddebug get the following

LogD3D12RHI: Error: [D3DDebug] ID3D12CommandList::ResourceBarrier: Before state (0x240: D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE|D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT) of resource (0x00000176F16F23C0:‘Lumen.RadianceCache.FilterProbesIndirectArgs’) (subresource: 0) specified by transition barrier does not match with the state (0x2C0: D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE|D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE|D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT) specified in preceding ResourceBarrier or as InitialState [RESOURCE_MANIPULATION ERROR #527]
LogD3D12RHI: Error: [D3DDebug] ID3D12CommandList::ResourceBarrier: Before state (0x200: D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT) of resource (0x00000176F16F0AA0:‘Lumen.Reflections.ResolveTileIndirectArgs’) (subresource: 0) specified by transition barrier does not match with the state (0x240: D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE|D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT) specified in preceding ResourceBarrier or as InitialState [RESOURCE_MANIPULATION ERROR #527]

Note
launching with D3d11 instead of 12 solves crashing but LumenRef does not work in either case