Layered Blend Per Bone Crash

I ran into several crashes related to the layered blend per bone node. To reproduce this (I am using a github build of UE 4.4.1):

  1. In an Anim Graph, add a new layered blend per bone node.
  2. Right click on it and add a blend pin.
  3. Copy and paste that node.
  4. The newly copied node now has a base pose, and a blend weights 0. It no longer has a blend pose 0. This will cause a problem later.
  5. Right click on the new node and add a blend pin.
  6. Right click on the 2nd blend weight and try to remove it. The Editor will now crash at this point, without any sort of error message or log entry.

I initially ran into this when trying to copy and paste one of these nodes from one animation blueprint to another. But, it also happens within the same animation blueprint.

For extra fun. If you stop at stage 4 and save your asset/project, it will assert if you try to run a debug build in the debugger at line 14 in AnimNode_LayeredBoneBlend.cpp. It runs fine in a development editor build at least, so you can fix the anim graph by deleting and recreating the troublesome node.
The crash call stack for that looks like:

	UE4Editor-Core-Win64-Debug.dll!FDebug::AssertFailed(const char * Expr=0x000007fee77e6a68, const char * File=0x000007fee77e9300, int Line=14, const wchar_t * Format=0x000007fee77e7e44, ...) Line 173	C++
>	UE4Editor-Engine-Win64-Debug.dll!FAnimNode_LayeredBoneBlend::Initialize(const FAnimationInitializeContext & Context={...}) Line 17	C++
 	UE4Editor-Engine-Win64-Debug.dll!FPoseLinkBase::Initialize(const FAnimationInitializeContext & Context={...}) Line 38	C++
 	UE4Editor-Engine-Win64-Debug.dll!FAnimNode_Slot::Initialize(const FAnimationInitializeContext & Context={...}) Line 14	C++
 	UE4Editor-Engine-Win64-Debug.dll!FPoseLinkBase::Initialize(const FAnimationInitializeContext & Context={...}) Line 38	C++
 	UE4Editor-Engine-Win64-Debug.dll!FAnimNode_Root::Initialize(const FAnimationInitializeContext & Context={...}) Line 16	C++
 	UE4Editor-Engine-Win64-Debug.dll!UAnimInstance::InitializeAnimation() Line 294	C++
 	UE4Editor-Engine-Win64-Debug.dll!USkeletalMeshComponent::InitializeAnimScriptInstance(bool bForceReinit=true) Line 248	C++
 	UE4Editor-Engine-Win64-Debug.dll!USkeletalMeshComponent::InitAnim(bool bForceReinit=true) Line 224	C++
 	UE4Editor-Engine-Win64-Debug.dll!USkeletalMeshComponent::SetAnimInstanceClass(UClass * NewClass=0x000000000fe50f00) Line 1180	C++
 	UE4Editor-UnrealEd-Win64-Debug.dll!FAnimBlueprintThumbnailScene::SetAnimBlueprint(UAnimBlueprint * InBlueprint=0x000000000d8ebb00) Line 787	C++
 	UE4Editor-UnrealEd-Win64-Debug.dll!UAnimBlueprintThumbnailRenderer::Draw(UObject * Object=0x000000000d8ebb00, int X=0, int Y=0, unsigned int Width=256, unsigned int Height=256, FRenderTarget * RenderTarget=0x0000000016bf3188, FCanvas * Canvas=0x0000000000639f10) Line 25	C++
 	UE4Editor-UnrealEd-Win64-Debug.dll!ThumbnailTools::RenderThumbnail(UObject * InObject=0x000000000d8ebb00, const unsigned int InImageWidth=256, const unsigned int InImageHeight=256, ThumbnailTools::EThumbnailTextureFlushMode::Type InFlushMode=NeverFlush, FTextureRenderTargetResource * InTextureRenderTargetResource=0x0000000016bf3120, FObjectThumbnail * OutThumbnail=0x0000000000000000) Line 3487	C++
 	UE4Editor-UnrealEd-Win64-Debug.dll!FAssetThumbnailPool::Tick(float DeltaTime=0.0593504906) Line 876	C++
 	UE4Editor-ContentBrowser-Win64-Debug.dll!SAssetView::Tick(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 906	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 249	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-SlateCore-Win64-Debug.dll!SWidget::TickWidgetsRecursively(const FGeometry & AllottedGeometry={...}, const double InCurrentTime=16791376.649830770, const float InDeltaTime=0.0593504906) Line 257	C++
 	UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::TickWindowAndChildren(TSharedRef<SWindow,0> WindowToTick={...}) Line 561	C++
 	UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::Tick() Line 898	C++
 	UE4Editor-Win64-Debug.exe!FEngineLoop::Tick() Line 2115	C++
 	UE4Editor-Win64-Debug.exe!EngineTick() Line 54	C++
 	UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine=0x00000000007e3a56, HINSTANCE__ * hInInstance=0x000000013fe70000, HINSTANCE__ * hPrevInstance=0x0000000000000000, int nCmdShow=10) Line 136	C++
 	UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance=0x000000013fe70000, HINSTANCE__ * hPrevInstance=0x0000000000000000, char * __formal=0x00000000007e45b6, int nCmdShow=10) Line 190	C++
 	UE4Editor-Win64-Debug.exe!__tmainCRTStartup() Line 528	C
 	kernel32.dll!BaseThreadInitThunk()	Unknown
 	ntdll.dll!RtlUserThreadStart()	Unknown

Hi Thomas,

I’m starting to look into this one. Can you provide the Crash Log and DMP folder from the following location:

C: \ Users \ [Computer Name] \ AppData \ Local \ Microsoft \ Windows \ WER \ ReportQueue \

There should be some folders in here already since you’ve had the crash. Delete these and make the crash happen again. A new folder will appear with the crash logs and dmp folder files. Zip this folder and link it here.

Thank you!

Tim

link text

Sorry for the late reply. There’s something wrong with the subscribe functionality, never got any sort of notification that you responded to this question. Attached the requested files.

Hi Thomas,

This has been fixed in our latest internal build. This should be fixed in 4.6 at the very least. If not, it will most definitely be fixed with 4.7.

Thank you!

Tim

Hello , Can you find the bug fix log ?
Cus I have a similar issue with UE4.27 . It doesnt crash in editor but it crash when i play the game.

Thank you