Assertion failed: Tag.Size == Loaded

Hi There, I had a variable of type Array of Transforms and tried to update it to an Array of Actors. Unreal opened it little window of links to show me where things had been updated. I fixed a couple of them then compiled out of habit and it hard crashed the editor. After that, I have been unable to access either the map or the blueprints involved.

The crash gives a reporting page with the error: Assertion failed: Tag.Size == Loaded [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/CoreUObject/Private/UObject/Class.cpp]

I found a similar error as a fixed bug Here: https://issues.unrealengine.com/issue/UE-94970 that referenced 4.26 (the version I was working in) so I tried updating to 4.27 (that was a huge headache as well and had a bunch of weird permissions bugs)
(here is the link to the forum post if you are interested link

After loading up .27 with the copy of the project, I had the same original error /crash (Tag.Size == Loaded ). After that happened I can no longer open up .27 at all and am getting this error:

LS-0013: Game is unable to launch

People have accepted answers on the forums to delete all my blueprints that are relevant and start again, I don’t really consider that a solution however. Here are all the other forum links (none of which are resolved)
link 1
link2
link 3
link4

Hoping someone from Unreal can chime in as deleting my whole project and starting over is not really a solution.

Thanks in advance.

Hope this isnt too late but I had this same issue today. It started when I tried to use a data asset for something and it crashed and reloaded. Then i tried the same method again thinking it was just one of unreals random crashes and then it basically broke my project. Got the exact same error code

I deleted the files in /Engine/DerivedDataCache and most importantly replaced the broken files with auto saves and deleted the corrupted files.

Its not an exact fix and i was gonna try other things such as rebuilding the project from visual studio but its better than deleting a years worth of work :expressionless:

Personally I would attempt recovery via engine modifications.
Download and build engine from source.

The error is thrown by Class.cpp line 1499
image

This happens when deserializing properties from assets.
Start by logging as many info as you can when it crashes :

else
{
    if (Tag.Size != Loaded)
    {
        UE_LOG(LogTemp, Log, TEXT("Class: %s"), *GetName());
        UE_LOG(LogTemp, Log, TEXT("Prop: %s"), *Property->GetName());
        UE_LOG(LogTemp, Log, TEXT("PropType: %s"), *Property->GetCPPType());
        UE_LOG(LogTemp, Log, TEXT("Tag.Type: %s"), *Tag.Type);
        UE_LOG(LogTemp, Log, TEXT("Tag.Size: %i"), Tag.Size);
        UE_LOG(LogTemp, Log, TEXT("Tag.StructName: %s"), *Tag->StructName);
        UE_LOG(LogTemp, Log, TEXT("Loaded = %i"), Loaded);
    }
    check(Tag.Size == Loaded);
}

There is most likely a mismatch between the type of the property and what is serialized, eg. type is UObject* (size 8) but serialized is still a FTransform (size 40 I think), or something along those lines…

It’s hard to predict what the results are going to be.
The problem might occur on multiple classes/objects, but the mismatch should always be the same since it comes from that conversion you attempted.

Based on what you are seeing then you can start applying corrections on the fly, to allow the deserializing process to continue.

2 Likes

I appreciate the detailed post. I have already redone all the work but hopefully it can be helpful for someone else!

I cannot get the logs to print anywhere