Spawning multiple actors with the label "(none)" and saving corrupts a world file, crashing the editor

I’m using a source build of UE 4.15.3.
When creating multiple actors with the label “(none)” via C++ code (Editor Plugin) or in the editor it is possible to corrupt a map file.

Steps to reproduce:

  1. create a new map and open it
  2. Add three empty actors, rename all of of them to “(none)”, without quotations, but with parentheses
  3. save the map
  4. switch to another map, then open the original map again.
  5. This will crash the editor and the world will be unusable from there on

Unreal editor will crash with the stacktrace at the bottom of this post. After restarting it will always crash if the map is loaded or even if one tries to delete the map. My guess after looking a bit through the source is that “(none)” is a magic name in the asset saving code ( for example Engine\Source\Runtime\Engine\Private\UnrealExporter.cpp, Line 700 ).

A workaround is just not using the label “(none)” on actors ( which was my fix, i imported the name from another software and could rename the offending part there ).
A proper fix would probably be to disallow the name “(none)” for actor labels, or any other names that could have a special meaning.

The backtrace:

Assertion failed: !HasAnyFlags(RF_NeedLoad|RF_NeedPostLoad) [File:E:\dev\repositories\UnrealEngine\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectLinker.cpp] [Line: 105] 
Detaching from existing linker for ../../../ImportTest/Content/NewWorld_3.umap while object StaticMeshActor /Game/NewWorld_3.NewWorld_3:PersistentLevel.StaticMeshActor_0 needs loaded


UE4Editor_Core!FDebug::AssertFailed() [e:\dev\repositories\unrealengine\engine\source\runtime\core\private\misc\assertionmacros.cpp:349]
UE4Editor_CoreUObject!UObject::SetLinker() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectlinker.cpp:105]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3944]
UE4Editor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2894]
UE4Editor_CoreUObject!FLinkerLoad::LoadAllObjects() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3041]
UE4Editor_CoreUObject!LoadPackageInternalInner() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1311]
UE4Editor_CoreUObject!LoadPackage() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1477]
UE4Editor_CoreUObject!ResolveName() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:756]
UE4Editor_CoreUObject!StaticLoadObjectInternal() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:843]
UE4Editor_CoreUObject!StaticLoadObject() [e:\dev\repositories\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:903]
UE4Editor_ContentBrowser!FAssetData::GetAsset() [e:\dev\repositories\unrealengine\engine\source\runtime\assetregistry\public\assetdata.h:232]
UE4Editor_ContentBrowser!SContentBrowser::OnAssetsActivated() [e:\dev\repositories\unrealengine\engine\source\editor\contentbrowser\private\scontentbrowser.cpp:1848]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,TTypeWrapper<void> __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::Execute() [e:\dev\repositories\unrealengine\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,void __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::ExecuteIfSafe() [e:\dev\repositories\unrealengine\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:434]
UE4Editor_ContentBrowser!SAssetView::OnListMouseButtonDoubleClick() [e:\dev\repositories\unrealengine\engine\source\editor\contentbrowser\private\sassetview.cpp:3693]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,TTypeWrapper<void> __cdecl(TSharedPtr<FAssetViewItem,0>)>::Execute() [e:\dev\repositories\unrealengine\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,void __cdecl(TSharedPtr<FAssetViewItem,0>)>::ExecuteIfSafe() [e:\dev\repositories\unrealengine\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:434]
UE4Editor_ContentBrowser!TBaseDelegate<void,TSharedPtr<FAssetViewItem,0> >::ExecuteIfBound() [e:\dev\repositories\unrealengine\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:624]
UE4Editor_ContentBrowser!SListView<TSharedPtr<FAssetViewItem,0> >::Private_OnItemDoubleClicked() [e:\dev\repositories\unrealengine\engine\source\runtime\slate\public\widgets\views\slistview.h:800]
UE4Editor_ContentBrowser!STableRow<TSharedPtr<FAssetViewItem,0> >::OnMouseButtonDoubleClick() [e:\dev\repositories\unrealengine\engine\source\runtime\slate\public\widgets\views\stablerow.h:287]
UE4Editor_Slate!<lambda_eeb33fd1b480e3cad58a1531d90d2e14>::operator()() [e:\dev\repositories\unrealengine\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5473]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_eeb33fd1b480e3cad58a1531d90d2e14> >() [e:\dev\repositories\unrealengine\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:238]
UE4Editor_Slate!FSlateApplication::RoutePointerDoubleClickEvent() [e:\dev\repositories\unrealengine\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5471]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonDoubleClickEvent() [e:\dev\repositories\unrealengine\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5454]
UE4Editor_Slate!FSlateApplication::OnMouseDoubleClick() [e:\dev\repositories\unrealengine\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5432]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [e:\dev\repositories\unrealengine\engine\source\runtime\core\private\windows\windowsapplication.cpp:1702]
UE4Editor_Core!FWindowsApplication::DeferMessage() [e:\dev\repositories\unrealengine\engine\source\runtime\core\private\windows\windowsapplication.cpp:2120]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [e:\dev\repositories\unrealengine\engine\source\runtime\core\private\windows\windowsapplication.cpp:867]
UE4Editor_Core!FWindowsApplication::AppWndProc() [e:\dev\repositories\unrealengine\engine\source\runtime\core\private\windows\windowsapplication.cpp:714]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [e:\dev\repositories\unrealengine\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:980]
UE4Editor!FEngineLoop::Tick() [e:\dev\repositories\unrealengine\engine\source\runtime\launch\private\launchengineloop.cpp:2977]
UE4Editor!GuardedMain() [e:\dev\repositories\unrealengine\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [e:\dev\repositories\unrealengine\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
UE4Editor!WinMain() [e:\dev\repositories\unrealengine\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
kernel32
ntdll

Hey Lirrec-

Thank you for submitting a bug report. I have reproduced this issue and logged a report for it here Unreal Engine Issues and Bug Tracker (UE-46056) . You can track the report’s status as the issue is reviewed by our development staff. Please be aware that this issue may not be prioritized or fixed soon.

Cheers