I’ve had repeated crashes of the editor when building my C++ solution, which I think was related to having some bad array accesses in my game state class. I was also seeing weird behavior with a blueprint based on the C++ game state class, where a UPROPERTY variable that was originally a float was changed to an int32 in the C++ class, but when trying to access it from a blueprint, it was still showing up as a float, despite cleaning and rebuilding. However, having fixed what I thought was the problem with the array accesses, the editor now crashes before it finishes loading, and I have no idea how to determine why. Any pointers would be appreciated. The crash window output is below.
Fatal error: [File:D:\Build\++UE4+Release-4.15+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\GarbageCollection.cpp] [Line: 575]
Invalid object in GC: 0xcdcdcdcdcdcdcdcd, ReferencingObject: HexcentricGameState /Script/Hexcentric.Default__HexcentricGameState, ReferencingObjectClass: Class /Script/Hexcentric.HexcentricGameState, Property Name: OccupyingActor, Offset: 16, TokenIndex: 28
UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:349]
UE4Editor_CoreUObject!TFastReferenceCollector<FGCReferenceProcessor,FGCCollector,FGCArrayPool,0>::ProcessObjectArray() [d:\build\++ue4+release-4.15+compile\sync\engine\source\runtime\coreuobject\private\uobject\fastreferencecollector.h:293]
UE4Editor_CoreUObject!TGraphTask<TFastReferenceCollector<FGCReferenceProcessor,FGCCollector,FGCArrayPool,0>::FCollectorTask>::ExecuteTask() [d:\build\++ue4+release-4.15+compile\sync\engine\source\runtime\core\public\async\taskgraphinterfaces.h:883]
UE4Editor_Core!FTaskThreadAnyThread::ProcessTasks() [d:\build\++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:1277]
UE4Editor_Core!FTaskThreadAnyThread::ProcessTasksUntilQuit() [d:\build\++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:1171]
UE4Editor_Core!FTaskThreadBase::Run() [d:\build\++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:643]
UE4Editor_Core!FRunnableThreadWin::Run() [d:\build\++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:76]
The ‘OccupyingActor’ is another property in a struct:
USTRUCT(BlueprintType)
struct FHexGridElement
{
GENERATED_BODY()
UPROPERTY(BlueprintReadWrite)
bool bIsOccupied;
UPROPERTY(BlueprintReadWrite)
FVector Center;
UPROPERTY(BlueprintReadWrite)
AActor* OccupyingActor;
};