Description

Switching sub anim instances that have a set tag will crash the editor when compiled. This is likely due to the use of Tag as the object name. The tag does not change, and the old UObject is still around when creating the new one with the same name.

Steps to Reproduce
  1. Add a sub anim instance to an anim blueprint
  2. Set up the node with a valid class and tag
  3. Compile the blueprint
  4. Change the class in the node to a different sub anim instance
  5. Compile the blueprint

RESULT

The editor will crash. With the error:

Fatal error: [Link Removed] [Line: 2345]
Objects have the same fully qualified name but different paths.
New Object: AltAnimBP1_C /Engine/Transient.World_10:PersistentLevel.AnimationEditorPreviewActor_0.DebugSkelMeshComponent_0.Blah
Existing Object: AltAnimBP_C /Engine/Transient.World_10:PersistentLevel.AnimationEditorPreviewActor_0.DebugSkelMeshComponent_0.Blah

Callstack

> UE4Editor-CoreUObject-Win64-Debug.dll!StaticAllocateObject(UClass * InClass, UObject * InOuter, FName InName, EObjectFlags InFlags, EInternalObjectFlags InternalSetFlags, bool bCanRecycleSubobjects, bool * bOutRecycledSubobject) Line 2340 C++
UE4Editor-CoreUObject-Win64-Debug.dll!StaticConstructObject_Internal(UClass * InClass, UObject * InOuter, FName InName, EObjectFlags InFlags, EInternalObjectFlags InternalSetFlags, UObject * InTemplate, bool bCopyTransientsFromClassDefaults, FObjectInstancingGraph * InInstanceGraph, bool bAssumeTemplateIsArchetype) Line 3112 C++
UE4Editor-Engine-Win64-Debug.dll!NewObject<UAnimInstance>(UObject * Outer, UClass * Class, FName Name, EObjectFlags Flags, UObject * Template, bool bCopyTransientsFromClassDefaults, FObjectInstancingGraph * InInstanceGraph) Line 1230 C++
UE4Editor-Engine-Win64-Debug.dll!FAnimNode_SubInstance::OnInitializeAnimInstance(const FAnimInstanceProxy * InProxy, const UAnimInstance * InAnimInstance) Line 128 C++
UE4Editor-Engine-Win64-Debug.dll!FAnimInstanceProxy::InitializeRootNode::__l5::<lambda>(FAnimNode_Base * AnimNode) Line 177 C++
UE4Editor-Engine-Win64-Debug.dll!FAnimInstanceProxy::InitializeRootNode() Line 200 C++
UE4Editor-Engine-Win64-Debug.dll!UAnimInstance::InitializeAnimation() Line 214 C++
UE4Editor-Engine-Win64-Debug.dll!USkeletalMeshComponent::InitializeAnimScriptInstance(bool bForceReinit) Line 692 C++
UE4Editor-Engine-Win64-Debug.dll!USkeletalMeshComponent::InitAnim(bool bForceReinit) Line 633 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintCompileReinstancer::ReplaceInstancesOfClass_Inner(TMap<UClass *,UClass *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<UClass *,UClass *,0> > & InOldToNewClassMap, UObject * InOriginalCDO, TSet<UObject *,DefaultKeyFuncs<UObject *,0>,FDefaultSetAllocator> * ObjectsThatShouldUseOldStuff, bool bClassObjectReplaced, bool bPreserveRootComponent, bool bArchetypesAreUpToDate, const TSet<UObject *,DefaultKeyFuncs<UObject *,0>,FDefaultSetAllocator> * InstancesThatShouldUseOldClass) Line 2129 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintCompileReinstancer::BatchReplaceInstancesOfClass(TMap<UClass *,UClass *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<UClass *,UClass *,0> > & InOldToNewClassMap, bool bArchetypesAreUpToDate) Line 1490 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManagerImpl::FlushReinstancingQueueImpl() Line 1309 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManagerImpl::CompileSynchronouslyImpl(const FBPCompileRequest & Request) Line 209 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManager::CompileSynchronously(const FBPCompileRequest & Request) Line 2576 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FKismetEditorUtilities::CompileBlueprint(UBlueprint * BlueprintObj, EBlueprintCompileOptions CompileFlags, FCompilerResultsLog * pResults) Line 766 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintEditor::Compile() Line 3258 C++
UE4Editor-AnimationBlueprintEditor-Win64-Debug.dll!FAnimationBlueprintEditor::Compile() Line 1054 C++
UE4Editor-Kismet-Win64-Debug.dll!TMemberFunctionCaller<FBlueprintEditor,void (__cdecl FBlueprintEditor::*)(void)>::operator()<>() Line 157 C++
UE4Editor-Kismet-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(void)>::Execute() Line 279 C++
UE4Editor-Kismet-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(void)>::ExecuteIfSafe() Line 357 C++
UE4Editor-Slate-Win64-Debug.dll!TBaseDelegate<void>::ExecuteIfBound() Line 648 C++
UE4Editor-Slate-Win64-Debug.dll!FUICommandList::ExecuteAction(const TSharedRef<FUICommandInfo const ,0> InUICommandInfo) Line 100 C++
UE4Editor-Slate-Win64-Debug.dll!SToolBarButtonBlock::OnClicked() Line 300 C++
UE4Editor-Slate-Win64-Debug.dll!TMemberFunctionCaller<SToolBarButtonBlock,FReply (__cdecl SToolBarButtonBlock::*)(void)>::operator()<>() Line 156 C++
UE4Editor-Slate-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,0,FReply __cdecl(void)>::Execute() Line 279 C++
UE4Editor-Slate-Win64-Debug.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 293 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda>(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5603 C++
UE4Editor-Slate-Win64-Debug.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) >(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) & Lambda) Line 271 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5589 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 6194 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const FVector2D CursorPos) Line 6167 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 1842 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2292 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 942 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 771 C++
[External Code]
UE4Editor-ApplicationCore-Win64-Debug.dll!WinPumpMessages() Line 108 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 133 C++
UE4Editor-Win64-Debug.exe!FEngineLoop::Tick() Line 3882 C++
UE4Editor-Win64-Debug.exe!EngineTick() Line 63 C++
UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 171 C++
UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 261 C++
[External Code]

Have Comments or More Details?

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

1
Login to Vote

Cannot Reproduce
ComponentOLD - Anim
Affects Versions4.21e34.22.1
Target Fix4.23
CreatedMar 1, 2019
ResolvedJul 10, 2019
UpdatedMay 18, 2020