Description

It seems that changing the name of a variable inside a struct that is being used by a Control Rig variable causes a crash. Additionally, after making the change and recompiling the Control Rig blueprint, even opening that blueprint will cause the editor to crash.

Tested in //UE4/Release-4.26 @ CL 15973114 and this occurred, so not marking as a Regression.

Steps to Reproduce
  1. Create a blank project
  2. Enable Control Rig plugin and restart project
  3. Create Struct asset (NewUserDefinedStruct)
  4. Define a float variable in the struct (MemberVar_0)
  5. Create Control Rig asset (NewControlRigBlueprint)
  6. Open the Control Rig asset
  7. Select Window > My Blueprint
  8. In the "My Blueprint" tab add a variable of NewUserDefinedStruct (NewVar_0)
  9. Create "Get NewVar_0" node on rig graph
  10. Expand the output pin to show MemberVar_0
  11. Create "Set Transform" node on rig graph
  12. Connect MemberVar_0 to Weight pin
  13. Save and Compile rig
  14. In the Struct asset rename MemberVar_0 to MemberVar_1
  15. Compile Control Rig

RESULT:

The editor crashes

EXPECTED:

The name of the variable on the output pin updates to the new name

Callstack
ntdll!7ff814770000  + 9cdf4
KERNELBASE!7ff812000000  + 21a5e
UE4Editor-Core!ReportCrash(_EXCEPTION_POINTERS *) [WindowsPlatformCrashContext.cpp:1591]
UE4Editor!7ff62a8d0000  + 3b7ff
VCRUNTIME140!7ff8003d0000  + ebc0
ntdll!7ff814770000  + a20cf
ntdll!7ff814770000  + 51454
ntdll!7ff814770000  + 511a5
KERNELBASE!7ff812000000  + 34f69
UE4Editor-Core!ReportAssert(wchar_t const *,int) [WindowsPlatformCrashContext.cpp:1644]
UE4Editor-Core!FWindowsErrorOutputDevice::Serialize(wchar_t const *,ELogVerbosity::Type,FName const &) [WindowsErrorOutputDevice.cpp:78]
UE4Editor-Core!FOutputDevice::LogfImpl(wchar_t const *,...) [OutputDevice.cpp:61]
UE4Editor-Core!static void AssertFailedImplV(const char *, const char *, int, const wchar_t *, char *) [AssertionMacros.cpp:104]
UE4Editor-Core!FDebug::CheckVerifyFailedImpl(char const *,char const *,int,wchar_t const *,...) [AssertionMacros.cpp:461]
UE4Editor-RigVM!static void `FRigVMRegisterOffset::FRigVMRegisterOffset'::`2'::FRigVMRegisterOffsetBuilder::WalkStruct(class UStruct *, const class FString & const, struct FRigVMRegisterOffset & const) [RigVMMemory.cpp:178]
UE4Editor-RigVM!FRigVMRegisterOffset::FRigVMRegisterOffset(UScriptStruct *,FString const &,int,unsigned short) [RigVMMemory.cpp:305]
UE4Editor-RigVM!FRigVMRegisterOffset::Serialize(FArchive &) [RigVMMemory.cpp:123]
UE4Editor-RigVM!operator<<(FArchive &,TArray<FRigVMRegisterOffset,TSizedDefaultAllocator<32> > &) [Array.h:1204]
UE4Editor-RigVM!FRigVMMemoryContainer::Serialize(FArchive &) [RigVMMemory.cpp:516]
UE4Editor-RigVM!URigVM::Serialize(FArchive &) [RigVM.cpp:79]
UE4Editor-ControlRig!UControlRigBlueprintGeneratedClass::Serialize(FArchive &) [ControlRigBlueprintGeneratedClass.cpp:48]
UE4Editor-CoreUObject!FLinkerLoad::Preload(UObject *) [LinkerLoad.cpp:4183]
UE4Editor-CoreUObject!FLinkerLoad::CreateExport(int) [LinkerLoad.cpp:4948]
UE4Editor-CoreUObject!FLinkerLoad::CreateExportAndPreload(int,bool) [LinkerLoad.cpp:3586]
UE4Editor-CoreUObject!FLinkerLoad::LoadAllObjects(bool) [LinkerLoad.cpp:3757]
UE4Editor-CoreUObject!LoadPackageInternal(UPackage *,wchar_t const *,unsigned int,FLinkerLoad *,FArchive *,FLinkerInstancingContext const *) [UObjectGlobals.cpp:1354]
UE4Editor-CoreUObject!LoadPackage(UPackage *,wchar_t const *,unsigned int,FArchive *,FLinkerInstancingContext const *) [UObjectGlobals.cpp:1469]
UE4Editor-CoreUObject!ResolveName(UObject * &,FString &,bool,bool,unsigned int,FLinkerInstancingContext const *) [UObjectGlobals.cpp:791]
UE4Editor-CoreUObject!StaticLoadObjectInternal(UClass *,UObject *,wchar_t const *,wchar_t const *,unsigned int,UPackageMap *,bool,FLinkerInstancingContext const *) [UObjectGlobals.cpp:853]
UE4Editor-CoreUObject!StaticLoadObject(UClass *,UObject *,wchar_t const *,wchar_t const *,unsigned int,UPackageMap *,bool,FLinkerInstancingContext const *) [UObjectGlobals.cpp:928]
UE4Editor-ContentBrowserAssetDataSource!ContentBrowserAssetData::EditOrPreviewAssetFileItems(TArrayView<TSharedRef<FContentBrowserAssetFileItemDataPayload const ,0> const ,int>,bool) [ContentBrowserAssetDataCore.cpp:287]
UE4Editor-ContentBrowserAssetDataSource!ContentBrowserAssetData::EditOrPreviewItems(IAssetTools *,UContentBrowserDataSource const *,TArrayView<FContentBrowserItemData const ,int>,bool) [ContentBrowserAssetDataCore.cpp:318]
UE4Editor-ContentBrowserAssetDataSource!UContentBrowserAssetDataSource::BulkEditItems(TArrayView<FContentBrowserItemData const ,int>) [ContentBrowserAssetDataSource.cpp:1030]
UE4Editor-ContentBrowser!SContentBrowser::OnItemsActivated(TArrayView<FContentBrowserItem const ,int>,EAssetTypeActivationMethod::Type) [SContentBrowser.cpp:2281]
UE4Editor-ContentBrowser!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,void ,FDefaultDelegateUserPolicy>::Execute(TArrayView<FContentBrowserItem const ,int>,EAssetTypeActivationMethod::Type) [DelegateInstancesImpl.h:290]
UE4Editor-ContentBrowser!SAssetView::OnListMouseButtonDoubleClick(TSharedPtr<FAssetViewItem,0>) [SAssetView.cpp:3548]
UE4Editor-ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,void ,FDefaultDelegateUserPolicy>::ExecuteIfSafe(TSharedPtr<FAssetViewItem,0>) [DelegateInstancesImpl.h:307]
UE4Editor-ContentBrowser!TDelegate<void ,FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>(TSharedPtr<FAssetViewItem,0>) [DelegateSignatureImpl.inl:599]
UE4Editor-ContentBrowser!SListView<TSharedPtr<FAssetViewItem,0> >::Private_OnItemDoubleClicked(TSharedPtr<FAssetViewItem,0>) [SListView.h:1074]
UE4Editor-ContentBrowser!STableRow<TSharedPtr<FAssetViewItem,0> >::OnMouseButtonDoubleClick(FGeometry const &,FPointerEvent const &) [STableRow.h:461]
UE4Editor-Slate!static class FReply FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_2b5148752c2a272000c47b69ff14a42e> >(class FSlateApplication *, class FEventRouter::FBubblePolicy, struct FPointerEvent, const class FSlateApplication::RoutePointerDoubleClickEvent::__l2::<lambda_2b5148752c2a272000c47b69ff14a42e> & const, ESlateDebuggingInputEvent) [SlateApplication.cpp:378]
UE4Editor-Slate!FSlateApplication::RoutePointerDoubleClickEvent(FWidgetPath const &,FPointerEvent const &) [SlateApplication.cpp:5297]
UE4Editor-Slate!FSlateApplication::ProcessMouseButtonDoubleClickEvent(TSharedPtr<FGenericWindow,0> const &,FPointerEvent const &) [SlateApplication.cpp:5284]
UE4Editor-Slate!FSlateApplication::OnMouseDoubleClick(TSharedPtr<FGenericWindow,0> const &,EMouseButtons::Type,FVector2D) [SlateApplication.cpp:5247]
UE4Editor-ApplicationCore!FWindowsApplication::ProcessDeferredMessage(FDeferredWindowsMessage const &) [WindowsApplication.cpp:2209]
UE4Editor-ApplicationCore!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> &,HWND__ *,unsigned int,unsigned __int64,__int64,int,int,unsigned int) [WindowsApplication.cpp:2698]
UE4Editor-ApplicationCore!FWindowsApplication::ProcessMessage(HWND__ *,unsigned int,unsigned __int64,__int64) [WindowsApplication.cpp:1881]
UE4Editor-ApplicationCore!FWindowsApplication::AppWndProc(HWND__ *,unsigned int,unsigned __int64,__int64) [WindowsApplication.cpp:905]
USER32!7ff812f10000  + e7e8
USER32!7ff812f10000  + e229
UE4Editor-ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages(bool) [WindowsPlatformApplicationMisc.cpp:125]
UE4Editor!7ff62a8d0000  + 7621
UE4Editor!7ff62a8d0000  + 20fbc
UE4Editor!7ff62a8d0000  + 210aa
UE4Editor!7ff62a8d0000  + 240cd

Have Comments or More Details?

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

2
Login to Vote

Fixed
ComponentUE - Anim - Rigging - Control Rig
Affects Versions4.27
Target Fix5.0
Fix Commit18614166
Release Commit18614166
CreatedNov 23, 2021
ResolvedFeb 2, 2022
UpdatedJan 26, 2023