We encountered a crash when using Anim BP Pose Watches to inspect poses on actors in a PIE instance. Specifically it seems ending the PIE session while the Anim BP is still watching the actor in the world triggers this crash 75% of the time; and when it doesn't, starting a new PIE session usually triggers it. The crashes are generally array out of bound accesses.



Steps to Reproduce

1. Create new project using the 3rd person template, I made a BP project but native should be fine too

2. Modify ThirdPerson_AnimBP AnimGraph to add a cached pose for easy Pose Watch usage. I made the DefaultState write to a cached pose, and the Output Pose pulls from the cached pose

3. Put a pose watch on either the cached pose read or write node

[Image Removed]

4. Make sure you're in the ThirdPersonExampleMap, start PIE

5. Change the ThirdPerson_AnimBP debug filter to connect to the in-game character

6. Stop Pie, editor should crash at this point

7. If no crash, immediately Start Pie again, change debug filter to connect to in-game character, it usually crashes here if it didn't crash on step 6.

8. If still no crash, repeat steps 4-6 a couple times. usually happened the first time, but in a few cases it took a couple loops to trigger it





[External Code]
UE4Editor-Core.dll!ReportAssert(const wchar_t * ErrorMessage, int NumStackFramesToIgnore) Line 1341 C++
UE4Editor-Core.dll!FWindowsErrorOutputDevice::Serialize(const wchar_t * Msg, ELogVerbosity::Type Verbosity, const FName & Category) Line 79 C++
UE4Editor-Core.dll!FOutputDevice::LogfImpl(const wchar_t * Fmt, ...) Line 71 C++
[Inline Frame] UE4Editor-Core.dll!FOutputDevice::Logf(const wchar_t[47] &) Line 234 C++
UE4Editor-Core.dll!AssertFailedImplV(const char * Expr, const char * File, int Line, const wchar_t * Format, char * Args) Line 105 C++
UE4Editor-Core.dll!FDebug::CheckVerifyFailedImpl(const char * Expr, const char * File, int Line, const wchar_t * Format, ...) Line 455 C++
[Inline Frame] UE4Editor-Engine.dll!TArray<FMeshBoneInfo,TSizedDefaultAllocator<32> >::RangeCheck::__l9::<lambda_a0050d6820a31d59c328aebf37962047>::operator()() Line 614 C++
UE4Editor-Engine.dll!DispatchCheckVerify<void,<lambda_a0050d6820a31d59c328aebf37962047> >(TArray<FMeshBoneInfo,TSizedDefaultAllocator<32> >::RangeCheck::__l9::<lambda_a0050d6820a31d59c328aebf37962047> && Inner) Line 168 C++
> [Inline Frame] UE4Editor-Engine.dll!TArray<FMeshBoneInfo,TSizedDefaultAllocator<32> >::RangeCheck(int Index) Line 614 C++
[Inline Frame] UE4Editor-Engine.dll!TArray<FMeshBoneInfo,TSizedDefaultAllocator<32> >::operator[](int) Line 671 C++
[Inline Frame] UE4Editor-Engine.dll!FReferenceSkeleton::GetParentIndexInternal(const int BoneInfo, const TArray<FMeshBoneInfo,TSizedDefaultAllocator<32> > &) Line 168 C++
[Inline Frame] UE4Editor-Engine.dll!FReferenceSkeleton::GetParentIndex(const int) Line 303 C++
UE4Editor-Engine.dll!FBoneContainer::GetParentBoneIndex(const int BoneIndex) Line 361 C++
UE4Editor-Persona.dll!FAnimationViewportClient::DrawBonesFromCompactPose(const FCompactHeapPose & Pose, UDebugSkelMeshComponent * MeshComponent, FPrimitiveDrawInterface * PDI, const FLinearColor & DrawColour) Line 1169 C++
[Inline Frame] UE4Editor-Persona.dll!FAnimationViewportClient::DrawWatchedPoses(UDebugSkelMeshComponent *) Line 1232 C++
UE4Editor-Persona.dll!FAnimationViewportClient::Draw(const FSceneView * View, FPrimitiveDrawInterface * PDI) Line 432 C++
UE4Editor-Renderer.dll!FSceneRenderer::FSceneRenderer(const FSceneViewFamily * InViewFamily, FHitProxyConsumer * HitProxyConsumer) Line 2105 C++
UE4Editor-Renderer.dll!FDeferredShadingSceneRenderer::FDeferredShadingSceneRenderer(const FSceneViewFamily * InViewFamily, FHitProxyConsumer * HitProxyConsumer) Line 249 C++
UE4Editor-Renderer.dll!FSceneRenderer::CreateSceneRenderer(const FSceneViewFamily * InViewFamily, FHitProxyConsumer * HitProxyConsumer) Line 3019 C++
UE4Editor-Renderer.dll!FRendererModule::BeginRenderingViewFamily(FCanvas * Canvas, FSceneViewFamily * ViewFamily) Line 3673 C++
UE4Editor-UnrealEd.dll!FEditorViewportClient::Draw(FViewport * InViewport, FCanvas * Canvas) Line 3761 C++
UE4Editor-Engine.dll!FViewport::Draw(bool bShouldPresent) Line 1570 C++
UE4Editor-UnrealEd.dll!UEditorEngine::UpdateSingleViewportClient(FEditorViewportClient * InViewportClient, const bool bInAllowNonRealtimeViewportToDraw, bool bLinkedOrthoMovement) Line 2120 C++
UE4Editor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1844 C++
UE4Editor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 410 C++
UE4Editor-Win64-DebugGame.exe!FEngineLoop::Tick() Line 4485 C++
[Inline Frame] UE4Editor-Win64-DebugGame.exe!EngineTick() Line 62 C++
UE4Editor-Win64-DebugGame.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 173 C++
UE4Editor-Win64-DebugGame.exe!GuardedMainWrapper(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 134 C++
UE4Editor-Win64-DebugGame.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 263 C++
[External Code]

Have Comments or More Details?

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

Login to Vote

ComponentOLD - Anim
Affects Versions4.24.34.25
Target Fix4.25
Fix Commit12858374
Main Commit14151001
Release Commit12858374
CreatedApr 7, 2020
ResolvedApr 16, 2020
UpdatedAug 20, 2020
View Jira Issue