Description

The crash only occurs if the additional skeletal mesh component is used with Set Master Pose Component (see ToggleAttach function in the TopDownCharacter BP). It doesn't seem to matter what mesh we're changing the main Skeletal Mesh to, as long as it's not the same mesh.

Even changing to a copy of the same mesh (using the same skeleton) results in a crash, and so does changing to an empty mesh or a copy of the mesh using a copy of the skeleton

(see SK_Mannequin_2, SK_Mannequin_SameBones in the same folder as SK_Mannequin mesh).

2/4/2020 Note: it is not just limited to the construction script, simply destroying a skeletal mesh component with active master pose in runtime also results in the same crash occurring. The crash does not occur if resetting master pose on the component before destroying it.

Work Around: a band-aid fix involves moving construction logic from blueprint construction script to a C++ function which is used when updating the character, in particular,  a check is utilized to see if a skeletal mesh slave pointer is valid, then sets it's master mesh component to nullptr and then destroys the slave, before constructing new ones.

 

 

 

Steps to Reproduce
  1. Download the attached project  [Link Removed]
  2. Upon loading the default map, Select the TopDownCharacter in the World Outliner
  3. In the details panel of the TopDownCharacter, navigate to the user made "Default" Category.
  4. Check/ Or unCheck the attach boolean.

Result:  Unhandled Exception Crash, please see call stack.

Expected: No Crash

Callstack
UE4Editor_Engine!USkeletalMeshComponent::SetSkeletalMesh() [d:\build\++ue4\sync\engine\source\runtime\engine\private\components\skeletalmeshcomponent.cpp:2584]
UE4Editor_Engine!USkinnedMeshComponent::execSetSkeletalMesh() [d:\build\++ue4\sync\engine\source\runtime\engine\classes\components\skinnedmeshcomponent.h:212]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4906]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:927]
UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2792]
UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:997]
UE4Editor_CoreUObject!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:828]
UE4Editor_CoreUObject!ProcessLocalFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1056]
UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:997]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1081]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4906]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1912]
UE4Editor_Engine!AActor::ProcessEvent() [d:\build\++ue4\sync\engine\source\runtime\engine\private\actor.cpp:795]
UE4Editor_Engine!AActor::ProcessUserConstructionScript() [d:\build\++ue4\sync\engine\source\runtime\engine\private\actorconstruction.cpp:906]
UE4Editor_Engine!AActor::ExecuteConstruction() [d:\build\++ue4\sync\engine\source\runtime\engine\private\actorconstruction.cpp:822]
UE4Editor_Engine!AActor::RerunConstructionScripts() [d:\build\++ue4\sync\engine\source\runtime\engine\private\actorconstruction.cpp:544]
UE4Editor_Engine!AActor::PostEditChangeProperty() [d:\build\++ue4\sync\engine\source\runtime\engine\private\actoreditor.cpp:125]
UE4Editor_Engine!APawn::PostEditChangeProperty() [d:\build\++ue4\sync\engine\source\runtime\engine\private\pawn.cpp:940]
UE4Editor_CoreUObject!UObject::PostEditChangeChainProperty() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\obj.cpp:449]
UE4Editor_PropertyEditor!FPropertyNode::NotifyPostChange() [d:\build\++ue4\sync\engine\source\editor\propertyeditor\private\propertynode.cpp:2183]
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() [d:\build\++ue4\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:621]
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() [d:\build\++ue4\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:404]
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() [d:\build\++ue4\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:313]
UE4Editor_PropertyEditor!FPropertyHandleBool::SetValue() [d:\build\++ue4\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:3538]
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)>::ExecuteIfSafe() [d:\build\++ue4\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:369]
UE4Editor_Slate!SCheckBox::ToggleCheckedState() [d:\build\++ue4\sync\engine\source\runtime\slate\private\widgets\input\scheckbox.cpp:313]
UE4Editor_Slate!SCheckBox::OnMouseButtonUp() [d:\build\++ue4\sync\engine\source\runtime\slate\private\widgets\input\scheckbox.cpp:202]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_6c1f6b862bcfb82ea6dcab28fbcc9463> >() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:372]
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4617]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5140]
UE4Editor_Slate!FSlateApplication::OnMouseUp() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5108]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1958]
UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:2410]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1638]
UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:789]
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:4397]
UE4Editor!GuardedMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launch.cpp:173]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
UE4Editor!WinMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:263]
UE4Editor!__scrt_common_main_seh() [d:\agent\_work\2\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll

Have Comments or More Details?

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

10
Login to Vote

Cannot Reproduce
ComponentOLD - Anim
Affects Versions4.24
Target Fix4.26
CreatedJan 27, 2020
ResolvedAug 13, 2020
UpdatedAug 28, 2020