Description

According to CrashReporter there is both an Ensure and a Crash that occur with this callstack. The error message for the Ensure is

Ensure condition failed: UIDList == AnimationCurves.UIDList [File:D:\Build\++UE4+Release-4.16+Compile\Sync\Engine\Source\Editor\SequenceRecorder\Private\AnimationRecorder.cpp] [Line: 616]

Both the Ensure and the Assertion have occurred commonly since at least the 4.12 release.

User Descriptions

  • Was editing an animation
  • I changed a skeletal mesh dynamically during a sequencer recording session.
  • I was Creating an Animation

Source Context

 563       		USkeleton* AnimSkeleton = AnimationObject->GetSkeleton();
  564       		for (int32 TrackIndex = 0; TrackIndex < AnimationObject->RawAnimationData.Num(); ++TrackIndex)
  565       		{
  566       			// verify if this bone exists in skeleton
  567       			int32 BoneTreeIndex = AnimationObject->GetSkeletonIndexFromRawDataTrackIndex(TrackIndex);
  568       			if (BoneTreeIndex != INDEX_NONE)
  569       			{
  570       				int32 BoneIndex = AnimSkeleton->GetMeshBoneIndexFromSkeletonBoneIndex(SkeletalMesh, BoneTreeIndex);
  571       				int32 ParentIndex = SkeletalMesh->RefSkeleton.GetParentIndex(BoneIndex);
  572 ***** 				FTransform LocalTransform = SpacesBases[BoneIndex];
  573       				if ( ParentIndex != INDEX_NONE )
  574       				{
  575       					if (ParentIndex == SkeletonRootIndex)
  576       					{
  577       						// Remove initial root transform
  578       						LocalTransform.SetToRelativeTransform(SpacesBases[ParentIndex] * InvInitialRootTransform);
  579       					}
  580       					else
  581       					{
  582       						LocalTransform.SetToRelativeTransform(SpacesBases[ParentIndex]);
  583       					}
  584       				}
Steps to Reproduce
  1. Add SK_Mannequin to the level, set it to Animation Asset and assign an Animation Asset
  2. Add SK_Mannequin to the sequence recorder
  3. Start recording
  4. While the recording is continuing, open the animation asset it's recording to
  5. In the animation asset window, change the Interpolation from Linear to Step

Probably need to prevent any changes to the animation asset while recording.

 

Callstack
Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\Build\++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\Core\Public\Containers/Array.h] [Line: 596] 
Array index out of bounds: 0 from an array of size 0

UE4Editor_SequenceRecorder!FAnimationRecorder::Record() [animationrecorder.cpp:616]
UE4Editor_SequenceRecorder!FAnimationRecorder::UpdateRecord() [animationrecorder.cpp:501]
UE4Editor_SequenceRecorder!FAnimRecorderInstance::Update() [animationrecorder.cpp:819]
UE4Editor_SequenceRecorder!FAnimationRecorderManager::Tick() [animationrecorder.cpp:715]
UE4Editor_SequenceRecorder!FSequenceRecorder::Tick() [sequencerecorder.cpp:257]
UE4Editor_SequenceRecorder!FSequenceRecorderModule::TickSequenceRecorder() [sequencerecordermodule.cpp:603]
UE4Editor_SequenceRecorder!TBaseStaticDelegateInstance<void __cdecl() [delegateinstancesimpl.h:1027]
UE4Editor_Engine!TBaseMulticastDelegate<void,float>::Broadcast() [delegatesignatureimpl.inl:937]
UE4Editor_UnrealEd!UEditorEngine::Tick() [editorengine.cpp:1891]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [unrealedengine.cpp:386]
UE4Editor!FEngineLoop::Tick() [launchengineloop.cpp:3119]
UE4Editor!GuardedMain() [launch.cpp:166]
UE4Editor!GuardedMainWrapper() [launchwindows.cpp:134]
UE4Editor!WinMain() [launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [exe_common.inl:253]
kernel32!BaseThreadInitThunk()
ntdll!RtlUserThreadStart()

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-48715 in the post.

1
Login to Vote

Fixed
ComponentSequencer
Affects Versions4.124.134.144.154.164.174.18
Target Fix4.20
Fix Commit3865886
Main Commit3946896
Release Commit4095966
CreatedAug 22, 2017
ResolvedJan 31, 2018
UpdatedMay 31, 2018