Description

Context

In actor blueprints, you can change an inherited component’s class in the editor by selecting it in a child blueprint and changing its Component Class in the Details panel.

Problem

When overriding a component’s class in the editor and opening a map that has saved instances with the previous component’s class, the new component class’s Serialize is called on the old component class’s serialized data. If the new component class is a specializing class whose native Serialize writes more data, it’s likely to read past what the old component class wrote, likely causing a crash.

Suggestions

FLinkerLoad::Preload has an existing path to only bSerializeOnlyScriptProperties, salvaging properties that can be salvaged. When a ComponentClass is overridden causing a class mismatch here, consider also taking that fallback. At the very least, native (de)serialize is dangerous to call when the template object class is a specialization of the saved object c lass.

Steps to Reproduce

Written by licensee. 100% repro in UE 5.7.

  1. Create a new Blueprint-only Blank project.
  2. Choose "File" then "New Level...", then select "Empty Open Level" and click "Create".
  3. Choose "File" then "Save Current Level..." and save the map.
  4. In the Content Browser, click "+ Add" then "Blueprint Class". Under "ALL CLASSES", choose "CameraActor".
  5. Place a new instance of the created Blueprint in the map, click "Save All" in the Content Browser, then save the Blueprint and the Actor instance in the map.
  6. Click the "pin" icon in the Outliner to the left of the entry for the Actor instance that was created so that the Actor is unloaded. This is very important for reproducing the crash.
  7. Once the Actor instance is no longer loaded, open the Blueprint, select "Scene Component", then change its "Component Class" from "SceneComponent" to "StaticMeshComponent".
  8. Compile and save the Blueprint.
  9. Click the "pin" icon to the left of the Actor instance to try to force load the Actor.

The Editor will then freeze and crash.

Callstack

UnrealEditor-CoreUObject.dll!FLinkerTables::Imp(FPackageIndex Index) Line 140 C++
UnrealEditor-CoreUObject.dll!FLinkerLoad::operator<<(FObjectPtr & ObjectPtr) Line 6467 C++
[Inline Frame] UnrealEditor-Engine.dll!ObjectPtr_Private::Friend::Serialize(FArchive &) Line 856 C++
[Inline Frame] UnrealEditor-Engine.dll!operator<<(FArchive &) Line 956 C++
UnrealEditor-Engine.dll!UStaticMeshComponent::Serialize(FArchive & Ar) Line 464 C++
UnrealEditor-CoreUObject.dll!FLinkerLoad::Preload(UObject * Object) Line 4976 C++
UnrealEditor-CoreUObject.dll!FAsyncPackage2::PreloadLinkerLoadExports(FAsyncLoadingThreadState2 & ThreadState) Line 7259 C++
UnrealEditor-CoreUObject.dll!FAsyncPackage2::Event_PreloadLinkerLoadExports(FAsyncLoadingThreadState2 & ThreadState, FAsyncPackage2 * Package, int __formal) Line 7687 C++
UnrealEditor-CoreUObject.dll!FEventLoadNode2::Execute(FAsyncLoadingThreadState2 & ThreadState) Line 5979 C++
UnrealEditor-CoreUObject.dll!FAsyncLoadEventQueue2::ExecuteSyncLoadEvents(FAsyncLoadingThreadState2 & ThreadState) Line 6186 C++
UnrealEditor-CoreUObject.dll!FAsyncLoadingThread2::ProcessAsyncLoadingFromGameThread(FAsyncLoadingThreadState2 & ThreadState, bool & bDidSomething) Line 9858 C++
[Inline Frame] UnrealEditor-CoreUObject.dll!FAsyncLoadingThread2::TickAsyncThreadFromGameThread(FAsyncLoadingThreadState2 &) Line 10587 C++
UnrealEditor-CoreUObject.dll!FAsyncLoadingThread2::TickAsyncLoadingFromGameThread(FAsyncLoadingThreadState2 & ThreadState, bool bUseTimeLimit, bool bUseFullTimeLimit, double TimeLimit, TArrayView<int const ,int> FlushRequestIDs, bool & bDidSomething) Line 10203 C++
UnrealEditor-CoreUObject.dll!FAsyncLoadingThread2::FlushLoading(TArrayView<int const ,int> RequestIDs) Line 11909 C++
UnrealEditor-CoreUObject.dll!FlushAsyncLoading(TArrayView<int const ,int> RequestIds) Line 354 C++
UnrealEditor-Engine.dll!FWorldPartitionLoadingContext::FDeferred::

Unknown macro: {dtor}

::__l8::<lambda_1>::operator()(TArray<AActor *,TSizedDefaultAllocator<32>> & ActorList, const TSet<FWorldPartitionActorDescInstance *,DefaultKeyFuncs<FWorldPartitionActorDescInstance *,0>,FDefaultSetAllocator> & SourceList) Line 178 C++
UnrealEditor-Engine.dll!FWorldPartitionLoadingContext::FDeferred::~FDeferred() Line 201 C++
UnrealEditor-Engine.dll!IWorldPartitionActorLoaderInterface::ILoaderAdapter::RefreshLoadedState() Line 190 C++
[Inline Frame] UnrealEditor-Engine.dll!IWorldPartitionActorLoaderInterface::ILoaderAdapter::Load() Line 54 C++
UnrealEditor-Engine.dll!UWorldPartition::LoadLastLoadedRegions(const TArray<UE::Math::TBox<double>,TSizedDefaultAllocator<32>> & EditorLastLoadedRegions) Line 2378 C++
UnrealEditor-Engine.dll!UWorldPartition::LoadLastLoadedRegions() Line 2390 C++
UnrealEditor-Engine.dll!UWorldPartition::Initialize(UWorld * InWorld, const UE::Math::TTransform<double> & InTransform) Line 845 C++
UnrealEditor-Engine.dll!ULevel::OnLevelLoaded() Line 3501 C++
UnrealEditor-Engine.dll!UWorld::InitWorld(const FWorldInitializationValues IVS) Line 2519 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Map_Load(const wchar_t * Str, FOutputDevice & Ar) Line 2667 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::HandleMapCommand(const wchar_t * Str, FOutputDevice & Ar, UWorld * InWorld) Line 6227 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Exec_Editor(UWorld * InWorld, const wchar_t * Stream, FOutputDevice & Ar) Line 5688 C++
UnrealEditor-Core.dll!FExec::Exec(UWorld * InWorld, const wchar_t * Cmd, FOutputDevice & Ar) Line 18 C++
UnrealEditor-Engine.dll!UEngine::Exec(UWorld * InWorld, const wchar_t * Cmd, FOutputDevice & Ar) Line 5213 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Exec(UWorld * InWorld, const wchar_t * Stream, FOutputDevice & Ar) Line 662 C++
UnrealEditor-UnrealEd.dll!FEditorFileUtils::LoadMap(const FString & InFilename, bool LoadAsTemplate, const bool bShowProgress) Line 3306 C++

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-377471 in the post.

0
Login to Vote

Fixed
ComponentUE - Framework - Blueprint
Affects Versions5.45.55.65.7
Target Fix5.8
Fix Commit53640076
CreatedMay 1, 2026
ResolvedMay 7, 2026
UpdatedJun 3, 2026
View Jira Issue