Description

The problem seems to be that the construction scripts doubled up all the BlueprintCreatedComponents, so there are now 2 scene components(actually the same one duplicated) and now 2 child actor components. Only the second child actor component is found in the archetype map.

The component to archetype map contains the second (more recently created) ChildActorComponent, the scene component (which appears twice in the blueprintcreatedcomponent list) and a BillboardComponent.

Steps to Reproduce
  1. Created a First Person Project "Undo Crash" (happened to be a C++ project but shouldn't matter)
  2. Created Actor Blueprint "BP_CrashParent"
  3. In the construction script for "BP_CrashParent", added a "Add Child Actor Component" call. On that function set "Child Actor Class" to "Blueprint_WallSconce" (provided in StarterContent)
  4. Placed a "BP_CrashParent" in the level.
  5. In content browser, browsed to "Blueprint_CeilingLight" and selected it
  6. On pop-up context menu for "BP_CrashParent" in world, chose to replace it with "Blueprint_CeilingLight"
  7. Hit "undo" and crashed.
Callstack

> UE4Editor-Engine-Win64-Debug.dll!FActorComponentInstanceData::MatchesComponent(const UActorComponent * Component, const UObject * ComponentTemplate, const TMap<UActorComponent *,UObject const *,FDefaultSetAllocator,TDefaultMapKeyFuncs<UActorComponent *,UObject const *,0> > & ComponentToArchetypeMap) Line 127 C++
UE4Editor-Engine-Win64-Debug.dll!FComponentInstanceDataCache::ApplyToActor(AActor * Actor, const ECacheApplyPhase CacheApplyPhase) Line 259 C++
UE4Editor-Engine-Win64-Debug.dll!AActor::ExecuteConstruction(const FTransform & Transform, const FComponentInstanceDataCache * InstanceDataCache, bool bIsDefaultTransform) Line 755 C++
UE4Editor-Engine-Win64-Debug.dll!AActor::RerunConstructionScripts() Line 469 C++
UE4Editor-Engine-Win64-Debug.dll!AActor::PostEditChangeProperty(FPropertyChangedEvent & PropertyChangedEvent) Line 105 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UObject::PostEditChange() Line 285 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UObject::PostEditUndo() Line 482 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UObject::PostEditUndo(TSharedPtr<ITransactionObjectAnnotation,0> TransactionAnnotation) Line 486 C++
UE4Editor-Engine-Win64-Debug.dll!AActor::PostEditUndo(TSharedPtr<ITransactionObjectAnnotation,0> TransactionAnnotation) Line 445 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FTransaction::Apply() Line 488 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UTransBuffer::Undo(bool bCanRedo) Line 855 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UEditorEngine::UndoTransaction(bool bCanRedo) Line 1313 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UEditorEngine::Exec_Transaction(const wchar_t * Str, FOutputDevice & Ar) Line 5122 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UEditorEngine::Exec(UWorld * InWorld, const wchar_t * Stream, FOutputDevice & Ar) Line 5569 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UUnrealEdEngine::Exec(UWorld * InWorld, const wchar_t * Stream, FOutputDevice & Ar) Line 615 C++
UE4Editor-MainFrame-Win64-Debug.dll!FMainFrameActionCallbacks::ExecuteExecCommand(FString Command) Line 931 C++
UE4Editor-MainFrame-Win64-Debug.dll!TBaseStaticDelegateInstance<TTypeWrapper<void> __cdecl(void),FString>::Execute() Line 950 C++
UE4Editor-MainFrame-Win64-Debug.dll!TBaseStaticDelegateInstance<void __cdecl(void),FString>::ExecuteIfSafe() Line 1018 C++
UE4Editor-Slate-Win64-Debug.dll!TBaseDelegate<void>::ExecuteIfBound() Line 609 C++
UE4Editor-Slate-Win64-Debug.dll!FUICommandList::ExecuteAction(const TSharedRef<FUICommandInfo const ,0> InUICommandInfo) Line 93 C++
UE4Editor-Slate-Win64-Debug.dll!SMenuEntryBlock::OnClicked(bool bCheckBoxClicked) Line 1024 C++
UE4Editor-Slate-Win64-Debug.dll!SMenuEntryBlock::OnMenuItemButtonClicked() Line 984 C++
UE4Editor-Slate-Win64-Debug.dll!TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void) __ptr64>::operator()<>() Line 161 C++
UE4Editor-Slate-Win64-Debug.dll!TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SMenuEntryBlock,FReply (_cdecl SMenuEntryBlock::)(void) __ptr64> >(TMemberFunctionCaller<SMenuEntryBlock,FReply (_cdecl SMenuEntryBlock::)(void)> && Func) Line 116 C++
UE4Editor-Slate-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,SMenuEntryBlock,0,FReply __cdecl(void)>::Execute() Line 318 C++
UE4Editor-Slate-Win64-Debug.dll!TBaseDelegate<FReply>::Execute() Line 522 C++
UE4Editor-Slate-Win64-Debug.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 275 C++
UE4Editor-Slate-Win64-Debug.dll!SMenuEntryButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 380 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda>(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5009 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 215 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent(FWidgetPath & WidgetsUnderPointer, FPointerEvent & PointerEvent) Line 4998 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::ProcessMouseButtonUpEvent(FPointerEvent & MouseEvent) Line 5461 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const FVector2D CursorPos) Line 5438 C++
UE4Editor-Core-Win64-Debug.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 1652 C++
UE4Editor-Core-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 2071 C++
UE4Editor-Core-Win64-Debug.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 816 C++
UE4Editor-Core-Win64-Debug.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 677 C++
[External Code]
UE4Editor-Core-Win64-Debug.dll!WinPumpMessages() Line 929 C++
UE4Editor-Core-Win64-Debug.dll!FWindowsPlatformMisc::PumpMessages(bool bFromMainLoop) Line 954 C++
UE4Editor-Win64-Debug.exe!FEngineLoop::Tick() Line 2810 C++
UE4Editor-Win64-Debug.exe!EngineTick() Line 49 C++
UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 155 C++
UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 191 C++

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-37071 in the post.

0
Login to Vote

Fixed
ComponentGameplay
Affects Versions4.13.14.14
Target Fix4.14
Fix Commit3162420
Release Commit3162420
CreatedOct 10, 2016
ResolvedOct 13, 2016
UpdatedApr 27, 2018