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.
Result: Unhandled Exception Crash, please see call stack.
Expected: No Crash
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
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-87501 in the post.
10 |
Component | OLD - Anim |
---|---|
Affects Versions | 4.24 |
Target Fix | 4.26 |
Created | Jan 27, 2020 |
---|---|
Resolved | Aug 13, 2020 |
Updated | Aug 28, 2020 |