Description

When a node has a variable assigned to one of its pins. You will get a crash every time you add a pin. I am sure this goes for all nodes with with the "add pin" functionality

[Link Removed]

Steps to Reproduce

Steps to Reproduce

Run the following script to create the control rig. Add a pin to the Concat node. You will get an immediate crash.

import unreal
unreal.load_module('ControlRigDeveloper')
factory = unreal.ControlRigBlueprintFactory
blueprint = factory.create_new_control_rig_asset(desired_package_path = '/Game/Concat')
hierarchy = blueprint.hierarchy
hierarchy_controller = hierarchy.get_controller()
blueprint.set_preview_mesh(unreal.load_object(name='None', outer=None))
import unreal
def create_asset():
	library = blueprint.get_local_function_library()
	library_controller = blueprint.get_controller(library)
	blueprint.set_auto_vm_recompile(False)
	function_new_function = library_controller.add_function_to_library('New Function', mutable=False)
	graph = function_new_function.get_contained_graph()
	library_controller.set_node_category_by_name('New Function', '')
	library_controller.set_node_keywords_by_name('New Function', '')
	library_controller.set_node_description_by_name('New Function', '')
	library_controller.set_node_color_by_name('New Function', unreal.LinearColor(1.000000, 1.000000, 1.000000, 1.000000))
	blueprint.get_controller_by_name('New Function').set_node_position_by_name('Entry', unreal.Vector2D(-250.000000, 0.000000))
	blueprint.get_controller_by_name('New Function').set_node_position_by_name('Return', unreal.Vector2D(300.000000, -0.000000))
	blueprint.get_controller_by_name('New Function').add_exposed_pin('A', unreal.RigVMPinDirection.INPUT, 'FName', '', '')
	blueprint.get_controller_by_name('New Function').add_exposed_pin('A_1', unreal.RigVMPinDirection.INPUT, 'double', '', '0.000000')
	blueprint.get_controller_by_name('New Function').add_template_node('Concat::Execute(in A,in B,out Result)', unreal.Vector2D(0.000000, 0.000000), 'Concat')
	blueprint.get_controller_by_name('New Function').resolve_wild_card_pin('Concat.A', 'FName', 'None')
	blueprint.get_controller_by_name('New Function').bind_pin_to_variable('Concat.A', 'A')
	blueprint.get_controller_by_name('New Function').add_template_node('Add::Execute(in A,in B,out Result)', unreal.Vector2D(52.626038, 248.894745), 'Add')
	blueprint.get_controller_by_name('New Function').resolve_wild_card_pin('Add.A', 'double', 'None')
	blueprint.get_controller_by_name('New Function').set_pin_default_value('Add.A', '0.000000')
	blueprint.get_controller_by_name('New Function').bind_pin_to_variable('Add.A', 'A_1')
	blueprint.get_controller_by_name('New Function').set_pin_default_value('Add.B', '0.000000')
	blueprint.get_controller_by_name('RigVMModel').add_unit_node_from_struct_path('/Script/ControlRig.RigUnit_BeginExecution', 'Execute', unreal.Vector2D(0.000000, 0.000000), 'RigUnit_BeginExecution')
	blueprint.get_controller_by_name('RigVMModel').add_function_reference_node(function_new_function, unreal.Vector2D(360.000000, 53.000000), 'New Function')
	blueprint.get_controller_by_name('RigVMModel').set_pin_default_value('New Function.A_1', '0.000000')
	blueprint.set_auto_vm_recompile(True)
create_asset() 

Manual Repro:

  • Create or open a Control Rig
  • Create a variable with the Name type
  • Create a Concat node
  • Set the pins of the Concat node to Name
  • Right-click one of the pins on the node and set the pin to use the created variable
  • Add a pin to the node
Callstack

[Inlined] UE::CoreUObject::Private::ResolveObjectHandleNoRead(UE::CoreUObject::Private::FObjectHandlePrivate &) ObjectHandle.h:435
[Inlined] ObjectPtr_Private::Friend::NoAccessTrackingGet(const TObjectPtr<…> &) ObjectPtr.h:858
[Inlined] ObjectPtr_Private::TNonAccessTrackedObjectPtr::Get() ObjectPtr.h:892
[Inlined] ObjectPtr_Private::TNonAccessTrackedObjectPtr::operator class UObject *() ObjectPtr.h:917
[Inlined] UObjectBase::GetOuter() UObjectBase.h:201
URigVMPin::GetParentPin() RigVMPin.cpp:1938
URigVMPin::GetNode() RigVMPin.cpp:2205
URigVMController::GetLinkedPaths(const TArray<…> &, bool) RigVMController.cpp:22424
URigVMController::GetLinkedPaths(URigVMNode *, bool) RigVMController.cpp:22411
URigVMController::RenameNode(URigVMNode *, const FName &, bool, bool) RigVMController.cpp:7434
URigVMController::CollapseNodes(const TArray<…> &, const FString &, bool, bool) RigVMController.cpp:5841
URigVMController::AddAggregatePin(URigVMNode *, const FString &, const FString &, bool, bool) RigVMController.cpp:11319
URigVMController::AddAggregatePin(const FString &, const FString &, const FString &, bool, bool) RigVMController.cpp:11198
URigVMEdGraphNode::HandleAddAggregateElement(const FString &) RigVMEdGraphNode.cpp:2030
SRigVMGraphNode::OnAddPin() SRigVMGraphNode.cpp:657
[Inlined] Invoke(FReply (SGraphNode::*)(), SGraphNode *&) Invoke.h:65
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(FReply (SGraphNode::*&)(), SGraphNode *&) Tuple.h:299
TBaseSPMethodDelegateInstance::Execute() DelegateInstancesImpl.h:291
[Inlined] TDelegate::Execute() DelegateSignatureImpl.inl:613
SButton::ExecuteOnClick() SButton.cpp:574
SButton::OnMouseButtonUp(const FGeometry &, const FPointerEvent &) SButton.cpp:442
[Inlined] FSlateApplication::RoutePointerUpEvent::__l8::<lambda_2>::operator()(const FArrangedWidget &, const FPointerEvent &) SlateApplication.cpp:5469
FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,`FSlateApplication::RoutePointerUpEvent'::`8'::<lambda_2> >(FSlateApplication *,FToLeafmostPolicy,FPointerEvent,const <lambda_2> &,ESlateDebuggingInputEvent) SlateApplication.cpp:459
FSlateApplication::RoutePointerUpEvent(const FWidgetPath &, const FPointerEvent &) SlateApplication.cpp:5455
FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent &) SlateApplication.cpp:6040
FSlateApplication::OnMouseUp(Type, TVector2<…>) SlateApplication.cpp:5996
FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage &) WindowsApplication.cpp:3372
FWindowsApplication::DeferMessage(TSharedPtr<…> &, HWND__ *, unsigned int, unsigned long long, long long, int, int, unsigned int) WindowsApplication.cpp:3890
FWindowsApplication::ProcessMessage(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:2309
[Inlined] WindowsApplication_WndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:2126
FWindowsApplication::AppWndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:2131
[Inlined] WinPumpMessages() WindowsPlatformApplicationMisc.cpp:117
FWindowsPlatformApplicationMisc::PumpMessages(bool) WindowsPlatformApplicationMisc.cpp:146
FEngineLoop::Tick() LaunchEngineLoop.cpp:5701
[Inlined] EngineTick() Launch.cpp:60
GuardedMain(const wchar_t *) Launch.cpp:189
LaunchWindowsStartup(HINSTANCE__ *, HINSTANCE__ *, char *, int, const wchar_t *) LaunchWindows.cpp:266
WinMain(HINSTANCE__ *, HINSTANCE__ *, char *, int) LaunchWindows.cpp:334

Have Comments or More Details?

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

0
Login to Vote

Unresolved
ComponentUE - Anim - Rigging - Control Rig
Affects Versions5.6
CreatedAug 22, 2025
UpdatedAug 22, 2025
View Jira Issue