在功能期间,这是:
I将在底部弹出堆栈跟踪和螺纹细节。我试图创建一个MCVE,但我不能。即使使用相同的UE版本,最小的游戏实例似乎也不会显示此问题。 (4.27)。因此,关于大型游戏的复杂性的某些事情可能导致问题。但是,一些其他观察结果:
FMEMORY_INLINE_FUNCTION_DECORATOR void FMemory::Free(void* Original) { //... MEMORY_INLINE_GMalloc->Free(Original); // <- Here }
在任何类型的统计收集上进行收集几乎会立即发生:
stat fps
它永远不会发生在“煮熟”的游戏中(又名在没有编辑器的情况下构建和运行)。我怀疑这是因为此统计收集仅发生在编辑器中。构建发布或调试游戏编辑器似乎没有任何区别。
DrawDebugPoint
我们找到了解决方法,这并不能告诉我们为什么会发生这种情况,并且严重限制了某些功能。但是,如果您致电:
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++
显然是一个首选的解决方案是弄清楚为什么这次崩溃首先发生而不是避免发生。