Description

A licensee has hit an access violation issue due to a movie scene containing a reference to an invalid child object binding. It triggers in the following method: UMovieSceneFolder::PostLoad

 

// Validate child Object Bindings
for (int32 ChildObjectBindingIndex = 0; ChildObjectBindingIndex < ChildObjectBindings.Num(); ChildObjectBindingIndex++)
{
const FGuid& ChildBinding = ChildObjectBindings[ChildObjectBindingIndex];
if (!OwningScene->FindBinding(ChildBinding))
{
ChildObjectBindings.RemoveAt(ChildObjectBindingIndex);
ChildObjectBindingIndex--;
 
 UE_LOG(LogMovieScene, Warning, TEXT("Folder (%s) in Sequence (%s) contained a reference to an Object Binding (%s) that no longer exists in the sequence, removing."), *GetFolderName().ToString(), *OwningScene->GetPathName(), *ChildBinding.ToString());
}
}

 

The issue is that the child object binding is removed, and then the ChildBinding Guid is used in the log which can access freed memory.

According to the licensee, you can fix this by either taking a copy of the GUID, or moving the log before you remove the element from the list.

Steps to Reproduce
  1. Create a movie scene
  2. Create a child binding to an element in a map
  3. Invalidate the child binding
  4. Instantiate the movie scene

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Anim - Sequencer
Affects Versions5.4
Target Fix5.5
Fix Commit36456428
CreatedSep 19, 2024
ResolvedSep 19, 2024
UpdatedOct 10, 2024
View Jira Issue