Hi,
Unreal is hitting a break point at FastReferenceCollector.h:290
but there is no error message and I dont know where to fix stuff. This is the snippet where it happens:
else if (ReferenceInfo.Type == GCRT_ArrayObject)
{
// We're dealing with an array of object references.
TArray<UObject*>& ObjectArray = *((TArray<UObject*>*)(StackEntryData + ReferenceInfo.Offset));
TokenReturnCount = ReferenceInfo.ReturnCount;
for (int32 ObjectIndex = 0, ObjectNum = ObjectArray.Num(); ObjectIndex < ObjectNum; ++ObjectIndex)
{
ReferenceProcessor.HandleTokenStreamObjectReference(NewObjectsToSerialize, CurrentObject, ObjectArray[ObjectIndex], ReferenceTokenStreamIndex, true);
}
}
At ReferenceProcessor.HandleTokenStreamObjectReference(...)
the break point is hit with NewObjectsToSerialize
being Invalid
. Sometimes the Name
of CurrentObject
is also Invalid
, but not always.
The NewObjectsToSerialize
are coming from *ArrayPool.GetArrayFromPool()
and ArrayPool
is a template
Type.
What I also noticed is that in the else if
the ReferenceInfo.Type
says it’s 8
while the GCRT_ArrayObject
is 3
.
To me it looks like the GC is trying to clean something that isn’t there and then crashes. What is actually happening in this part of the GC?