Basically, the problem is that the Main Thread is able to run AActor::Tick() (including Blueprint Tick Events) at the same time that the animation system is running functions such as UAnimInstance::SlotEvaluatePose(). Because you can do almost anything in AActor::Tick(), sometimes functions that are not thread-safe with the currently executing animation code can be called. In our case, we found that the UAnimInstance::Montage_Play() function was being invoked (through one of our Blueprint Tick Events) on the Main Thread, which can cause a crash if it's run in parallel with the animation worker threads.