Description

Currently FNotifyNodeInterface directly references notifies that live within the related anim sequence.  This can cause intermittent crashes when notifies are removed as the UI can still reference these widgets (via things like tooltips) but the notifies referenced no longer exist.  The callstack attached crashes because FNotifyNodeInterface::NotifyEvent.Notify is invalid but it seems that the entire NotifyEvent is invalid so crashes can also happen elsewhere (for example, when calling MakeTooltipFromTime in GetNodeTooltip).

Full fix for this would probably be to cache all the values that FNotifyNodeInterface is currently getting from NotifyEvent when it's constructed.  However, to do that we would need to be able to update the cached values and there don't seem to be any delegates that currently catch every change to a notify.  OnNotifiesChanged_Lambda in FAnimTimelineTrack_NotifiesPanel::GetAnimNotifyPanel catches some but not a change of colour, for example.

Steps to Reproduce

Only reproduces intermittently (possibly more in Development than Debug builds):

  1. Open an animation sequence asset
  2. Add a Notify track
  3. On the track itself, right-click, add a Notify
  4. Add a few more or copy and paste the first
  5. Place your mouse cursor over one of the Notifies
  6. Undo past the point where the hovered-over notify is removed
Callstack
FNotifyNodeInterface::GetNodeTooltip    E:\dev\main\Engine\Source\Editor\Persona\Private\SAnimNotifyPanel.cpp (207)
SAnimNotifyNode::GetNodeTooltip    E:\dev\main\Engine\Source\Editor\Persona\Private\SAnimNotifyPanel.cpp (1605)
TBaseSPMethodDelegateInstance<...>::Execute    E:\dev\main\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h (281)
TAttribute<...>::Get    E:\dev\main\Engine\Source\Runtime\Core\Public\Misc\Attribute.h (251)
SToolTip::IsEmpty    E:\dev\main\Engine\Source\Runtime\Slate\Private\Widgets\SToolTip.cpp (92)
FSlateUser::UpdateTooltip    E:\dev\main\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateUser.cpp (1236)
FSlateApplication::TickPlatform    E:\dev\main\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp (1592)
FSlateApplication::Tick    E:\dev\main\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp (1527)
FEngineLoop::Tick    E:\dev\main\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp (5911)
GuardedMain    E:\dev\main\Engine\Source\Runtime\Launch\Private\Launch.cpp (188) 

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Anim - Runtime
Affects Versions5.3.2
Target Fix5.5
Fix Commit36258569
CreatedMar 1, 2024
ResolvedSep 13, 2024
UpdatedSep 18, 2024
View Jira Issue