Destroying the owning actor as a response to an anim montage's anim notify causes unsafe access of the current anim montage. See repro steps.
Before testing, put a breakpoint in UAnimInstance::UninitializeAnimation()
When playing the montage and the actor is destroyed, notice that the breakpoint in UninitializeAnimation is hit and inspect the callstack. UninitializeAnimation() is called while executing the blueprint as a result of the anim notify. This happens in MontageInstance->Advance().
UninitializeAnimation() deletes all MontageInstances and clears the array that is currently being iterated in UAnimInstance::UpdateMontage(). This may or may not result in a crash because the memory being accessed may or may not have been overwritten yet, but further access of the current array element is definitely unsafe since it has been deleted.
[Image Removed]
How does TextureRenderTarget2D get TArray<uint8> type data?
How do I set a material as a post-processing material?
its not replicating any thing ,why ?
Why does the REMOVE method of map container remove elements have memory leaks?
How to delete some elements correctly when deleting an array loop?
What is the difference between Camera and CineCamera?
How does TArray loop correctly remove elements in blueprints?
How to assign a value to a member of UMG's UMaterialInterface pointer type in C++?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-160303 in the post.
0 |
Component | UE - Anim - Runtime |
---|---|
Affects Versions | 5.0 |
Target Fix | 5.1 |
Created | Jul 28, 2022 |
---|---|
Resolved | Aug 8, 2022 |
Updated | Aug 13, 2022 |