You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UE4编辑器StatsThread内存释放阶段崩溃问题求助

UE4编辑器运行时内存访问崩溃排查方案

崩溃基本信息

在UE4Editor-Win64-DebugGame.exe中,UE4Editor-Core.dll的0x00007FFD1E29551B处抛出异常:0xC0000005: 写入位置0x0000000000000010时发生访问违例。

崩溃触发点代码:

FMEMORY_INLINE_FUNCTION_DECORATOR void FMemory::Free(void* Original)
{
  //...
  MEMORY_INLINE_GMalloc->Free(Original); // <- 此处崩溃
}

已观察到的现象

  • 开启任何类型的统计收集会立即触发崩溃;
  • 控制台执行stat fps命令会立即触发崩溃;
  • 使用DrawDebugPoint等调试绘制函数会大幅加快崩溃出现的速度;
  • 重启系统可暂时解决问题;
  • 打包后的Release版本(脱离编辑器)从未出现该问题;
  • 编译为Release或Debug Game Editor版本均无影响;
  • 关闭“显示统计信息”会使崩溃出现的时间延长一倍。

堆栈跟踪

UE4Editor-Core.dll!__TBB_LockByte(unsigned char &)  Unknown
UE4Editor-Core.dll!rml::internal::Block::freePublicObject(struct rml::internal::FreeObject *)   Unknown
UE4Editor-Core.dll!scalable_free()  Unknown
UE4Editor-Core.dll!FMemory::Free(void * Original) Line 80   C++
UE4Editor-Core.dll!operator delete(void * Ptr, unsigned __int64 Size) Line 33   C++
[Inline Frame] UE4Editor-Core.dll!TIndirectArray<TChunkedArray<FStatMessage,4096>::FChunk,TSizedDefaultAllocator<32>>::DestructAndFreeItems() Line 434  C++
[Inline Frame] UE4Editor-Core.dll!TIndirectArray<TChunkedArray<FStatMessage,4096>::FChunk,TSizedDefaultAllocator<32>>::Empty(int) Line 340  C++
UE4Editor-Core.dll!TIndirectArray<TChunkedArray<FStatMessage,4096>::FChunk,TSizedDefaultAllocator<32>>::~TIndirectArray<TChunkedArray<FStatMessage,4096>::FChunk,TSizedDefaultAllocator<32>>() Line 74  C++
UE4Editor-Core.dll!FStatPacketArray::Empty() Line 619   C++
[Inline Frame] UE4Editor-Core.dll!FStatPacketArray::{dtor}() Line 218   C++
[Inline Frame] UE4Editor-Core.dll!TSparseArray<TSetElement<TTuple<__int64,FStatPacketArray>>,TSparseArrayAllocator<TSizedDefaultAllocator<32>,FDefaultBitArrayAllocator>>::RemoveAt(int) Line 299   C++
UE4Editor-Core.dll!TSet<TTuple<__int64,FStatPacketArray>,TDefaultMapHashableKeyFuncs<__int64,FStatPacketArray,0>,FDefaultSetAllocator>::Remove(FSetElementId ElementId) Line 770    C++
[Inline Frame] UE4Editor-Core.dll!TSet<TTuple<__int64,FStatPacketArray>,TDefaultMapHashableKeyFuncs<__int64,FStatPacketArray,0>,FDefaultSetAllocator>::TIterator::RemoveCurrent() Line 1577 C++
[Inline Frame] UE4Editor-Core.dll!TMapBase<__int64,FStatPacketArray,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<__int64,FStatPacketArray,0>>::TIterator::RemoveCurrent() Line 904  C++
UE4Editor-Core.dll!FStatsThreadState::AddToHistoryAndEmpty(FStatPacketArray & NewData) Line 998 C++
UE4Editor-Core.dll!FStatsThread::Tick() Line 979    C++
UE4Editor-Core.dll!FStatsThread::StatMessage(FStatPacket * Packet) Line 1007    C++
[Inline Frame] UE4Editor-Core.dll!FStatMessagesTask::DoTask(ENamedThreads::Type) Line 1064  C++
UE4Editor-Core.dll!TGraphTask<FStatMessagesTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & NewTasks, ENamedThreads::Type CurrentThread) Line 886   C++
[Inline Frame] UE4Editor-Core.dll!FBaseGraphTask::Execute(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & CurrentThread, ENamedThreads::Type) Line 524    C++
UE4Editor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread(int QueueIndex, bool bAllowStall) Line 710 C++
UE4Editor-Core.dll!FNamedTaskThread::ProcessTasksUntilQuit(int QueueIndex) Line 602 C++
UE4Editor-Core.dll!FStatsThread::Run() Line 906 C++
UE4Editor-Core.dll!FRunnableThreadWin::Run() Line 86    C++
UE4Editor-Core.dll!FRunnableThreadWin::GuardedRun() Line 27 C++

排查与解决建议

1. 锁定统计线程相关问题

从堆栈看,崩溃发生在统计线程处理FStatPacketArray的内存释放阶段,建议:

  • 检查项目中是否有自定义统计扩展代码,比如手动注册Stat分组、修改Stat系统的回调逻辑,暂时禁用所有自定义统计相关代码,测试是否还会崩溃;
  • 使用-nostats启动参数启动编辑器,完全关闭统计系统,验证问题是否消失;
  • 排查调试绘制相关代码:因为DrawDebugPoint会加速崩溃,说明频繁的临时内存分配/释放可能触发问题,尝试批量禁用自定义的DrawDebug调用,逐步定位到触发问题的代码段。

2. 内存分配器相关调试

崩溃触发在scalable_free,属于UE4的RML/TBB内存分配器,可尝试:

  • 在编辑器快捷方式中添加-malloc=system参数,强制使用系统默认内存分配器,看是否能规避该问题;
  • 启用UE4的内存检测工具:在项目设置中开启Enable Memory Profiler,或者启动时添加-memprofiler参数,捕捉内存越界、重复释放等问题;
  • 检查是否有第三方插件干扰内存管理:暂时禁用所有非官方插件,测试稳定性。

3. 环境与缓存清理

  • 删除项目目录下的Saved、Intermediate文件夹,重新生成项目文件并全量编译,清理编辑器缓存;
  • 关闭杀毒软件、内存优化工具等后台程序,避免它们干扰UE4的内存操作;
  • 若重启系统能暂时解决,可尝试增加虚拟内存大小,减少系统内存碎片的影响。

4. UE4版本与官方修复检查

  • 升级到UE4.27的最新官方补丁,查看补丁说明中是否有针对统计系统、内存分配器的修复;
  • 查看UE4官方问题追踪系统,确认是否有同类问题已被报告,是否有官方提供的临时修复方案。

内容的提问来源于stack exchange,提问作者Fantastic Mr Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:17:04