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:
- create a new map and open it
- Add three empty actors, rename all of of them to “(none)”, without quotations, but with parentheses
- save the map
- switch to another map, then open the original map again.
- 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