When sampling root motion backwards we can hit an infinite loop in ExtractRootMotion. This happens if the initial sample time + negative delta is off the end of the animation clip. In that case FAnimationRuntime::AdvanceTime() ends up clamping CurrentPosition so that it's the same as PreviousPosition meaning that our ActualDeltaMove is zero and we get stuck in the while loop.
void UAnimationBlueprintLibrary::ExtractRootMotionFromSequence(const UAnimSequence* AnimationSequence, float StartTime, float DeltaTime, bool bAllowLooping) { if (AnimationSequence) { AnimationSequence->ExtractRootMotion(StartTime, DeltaTime, bAllowLooping); } }
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-136750 in the post.