Crashes after editing properties of TwoBoneIK node. If following the reproduction steps, the binding of NodePropertyDelegateHandle will not be removed, causing illegal access on the second editing.
Workaround
Can avoid crashes by not using NodePropertyDelegateHandle. (see the following code)
void FTwoBoneIKEditMode::EnterMode(UAnimGraphNode_Base* InEditorNode, FAnimNode_Base* InRuntimeNode) { TwoBoneIKRuntimeNode = static_cast<FAnimNode_TwoBoneIK*>(InRuntimeNode); TwoBoneIKGraphNode = CastChecked<UAnimGraphNode_TwoBoneIK>(InEditorNode); // NodePropertyDelegateHandle = TwoBoneIKGraphNode->OnNodePropertyChanged().AddSP(this, &FTwoBoneIKEditMode::OnExternalNodePropertyChange); PreviousBoneSpace = TwoBoneIKGraphNode->Node.EffectorLocationSpace; FAnimNodeEditMode::EnterMode(InEditorNode, InRuntimeNode); } void FTwoBoneIKEditMode::ExitMode() { // TwoBoneIKGraphNode->OnNodePropertyChanged().Remove(NodePropertyDelegateHandle); TwoBoneIKGraphNode = nullptr; TwoBoneIKRuntimeNode = nullptr; FAnimNodeEditMode::ExitMode(); }
Then, crash in editor.
LoginId:a28409704427cc781fafa5b458893007 EpicAccountId:4d49d23287c94dd7bee3dbfe98e8728eUnhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000UE4Editor_AnimGraph!FTwoBoneIKEditMode::OnExternalNodePropertyChange() [D:\Build\++UE4\Sync\Engine\Source\Editor\AnimGraph\Private\EditModes\TwoBoneIKEditMode.cpp:191] UE4Editor_AnimGraph!TBaseSPMethodDelegateInstance<0,FTwoBoneIKEditMode,0,void __cdecl(FPropertyChangedEvent &),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:307] UE4Editor_AnimGraph!UAnimGraphNode_Base::PostEditChangeProperty() [D:\Build\++UE4\Sync\Engine\Source\Editor\AnimGraph\Private\AnimGraphNode_Base.cpp:66] UE4Editor_AnimGraph!UAnimGraphNode_SkeletalControlBase::PostEditChangeProperty() [D:\Build\++UE4\Sync\Engine\Source\Editor\AnimGraph\Private\AnimGraphNode_SkeletalControlBase.cpp:452] UE4Editor_CoreUObject!UObject::PostEditChangeChainProperty() [D:\Build\++UE4\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp:454] UE4Editor_PropertyEditor!FPropertyNode::NotifyPostChange() [D:\Build\++UE4\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyNode.cpp:2342] UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() [D:\Build\++UE4\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:522] UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() [D:\Build\++UE4\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:291] UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() [D:\Build\++UE4\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:120] UE4Editor_PropertyEditor!FPropertyHandleBool::SetValue() [D:\Build\++UE4\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:3649] UE4Editor_PropertyEditor!SPropertyEditorBool::OnCheckStateChanged() [D:\Build\++UE4\Sync\Engine\Source\Editor\PropertyEditor\Private\UserInterface\PropertyEditor\SPropertyEditorBool.cpp:85] UE4Editor_PropertyEditor!TBaseSPMethodDelegateInstance<0,SPropertyEditorBool,0,void __cdecl(enum ECheckBoxState),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:307] UE4Editor_Slate!SCheckBox::ToggleCheckedState() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Slate\Private\Widgets\Input\SCheckBox.cpp:355] UE4Editor_Slate!SCheckBox::OnMouseButtonUp() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Slate\Private\Widgets\Input\SCheckBox.cpp:244] UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_cc5aea9e7377b04ce85c30c65ec3889b> >() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:378] UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:4815] UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5356] UE4Editor_Slate!FSlateApplication::OnMouseUp() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5321] UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [D:\Build\++UE4\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:2178] UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() [D:\Build\++UE4\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:2642] UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() [D:\Build\++UE4\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:1046] UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() [D:\Build\++UE4\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:878] user32 user32 UE4Editor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [D:\Build\++UE4\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsPlatformApplicationMisc.cpp:130] UE4Editor!FEngineLoop::Tick() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:4748] UE4Editor!GuardedMain() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:169] UE4Editor!GuardedMainWrapper() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:137] UE4Editor!WinMain() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:268] UE4Editor!__scrt_common_main_seh() [d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288] kernel32 ntdll
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-127397 in the post.
0 |
Component | UE - Anim - Rigging |
---|---|
Affects Versions | 4.26, 4.27 |
Target Fix | 4.27.1 |
Created | Sep 22, 2021 |
---|---|
Resolved | Sep 24, 2021 |
Updated | Dec 1, 2022 |