diff --git a/include/rive/animation/animation_state.hpp b/include/rive/animation/animation_state.hpp
index 5cb0282..2a2c580 100644
--- a/include/rive/animation/animation_state.hpp
+++ b/include/rive/animation/animation_state.hpp
@@ -15,6 +15,7 @@
 
     public:
         const LinearAnimation* animation() const { return m_Animation; }
+        const LinearAnimation* animationOrEmpty() const;
         std::unique_ptr<StateInstance> makeInstance(ArtboardInstance*) const override;
     };
 } // namespace rive
diff --git a/src/animation/animation_state.cpp b/src/animation/animation_state.cpp
index 3d25d42..cc1d37c 100644
--- a/src/animation/animation_state.cpp
+++ b/src/animation/animation_state.cpp
@@ -1,16 +1,17 @@
 #include "rive/animation/animation_state.hpp"
 #include "rive/animation/linear_animation.hpp"
 #include "rive/animation/animation_state_instance.hpp"
-#include "rive/animation/system_state_instance.hpp"
 #include "rive/core_context.hpp"
 #include "rive/artboard.hpp"
 
 using namespace rive;
 
 std::unique_ptr<StateInstance> AnimationState::makeInstance(ArtboardInstance* instance) const {
-    if (animation() == nullptr) {
-        // Failed to load at runtime/some new type we don't understand.
-        return std::make_unique<SystemStateInstance>(this, instance);
-    }
     return std::make_unique<AnimationStateInstance>(this, instance);
+}
+
+static LinearAnimation emptyAnimation;
+
+const LinearAnimation* AnimationState::animationOrEmpty() const {
+    return m_Animation == nullptr ? &emptyAnimation : m_Animation;
 }
\ No newline at end of file
diff --git a/src/animation/animation_state_instance.cpp b/src/animation/animation_state_instance.cpp
index 3cd7b15..7efd51d 100644
--- a/src/animation/animation_state_instance.cpp
+++ b/src/animation/animation_state_instance.cpp
@@ -6,16 +6,20 @@
 AnimationStateInstance::AnimationStateInstance(const AnimationState* state,
                                                ArtboardInstance* instance) :
     StateInstance(state),
-    m_AnimationInstance(state->animation(), instance),
-    m_KeepGoing(true)
-{}
+    // We're careful to always instance a valid animation here as the
+    // StateMachine makes assumptions about AnimationState's producing valid
+    // AnimationStateInstances with backing animations. This was discovered when
+    // using Clang address sanitizer. We previously returned a
+    // SystemStateInstance (basically a no-op StateMachine state) which would
+    // cause bad casts in parts of the code where we assumed AnimationStates
+    // would have create AnimationStateInstances.
+    m_AnimationInstance(state->animationOrEmpty(), instance),
+    m_KeepGoing(true) {}
 
 void AnimationStateInstance::advance(float seconds, Span<SMIInput*>) {
     m_KeepGoing = m_AnimationInstance.advance(seconds);
 }
 
-void AnimationStateInstance::apply(float mix) {
-    m_AnimationInstance.apply(mix);
-}
+void AnimationStateInstance::apply(float mix) { m_AnimationInstance.apply(mix); }
 
 bool AnimationStateInstance::keepGoing() const { return m_KeepGoing; }
\ No newline at end of file
