Skip to content

Crash when animating Transform property using native driver downlevel #2996

@kmelmon

Description

@kmelmon

Repro Steps

Install OS build that's < 19H1 (eg RS5)
Run RNTester on this build with this change to AnimatedExample.js:

title: 'Transform Bounce',
description:
  'One `Animated.Value` is driven by a ' +
  'spring with custom constants and mapped to an ' +
  'ordered set of transforms.  Each transform has ' +
  'an interpolation to convert the value into the ' +
  'right range and units.',
render: function() {
  this.anim = this.anim || new Animated.Value(0);
  return (
    <View>
      <RNTesterButton
        onPress={() => {
          Animated.spring(this.anim, {
            toValue: 0, // Returns to the start
            velocity: 3, // Velocity makes it move
            tension: -10, // Slow
            friction: 1, // Oscillate a lot
            **useNativeDriver:true**

Go to the Animated Examples page
Hit the "Press to Fling it" button

RESULT
Crash with this callstack:
ucrtbased.dll!5745fe60() Unknown
ucrtbased.dll![Frames below may be incorrect and/or missing, no symbols loaded for ucrtbased.dll] Unknown
[External Code]

React.UWP.dll!facebook::react::CxxNativeModule::invoke::__l2::() Line 155 C++
[External Code]
React.UWP.dll!react::uwp::ShadowNodeBase::UpdateTransformPS() Line 105 C++
React.UWP.dll!react::uwp::ShadowNodeBase::EnsureTransformPS() Line 85 C++
React.UWP.dll!react::uwp::PropsAnimatedNode::StartAnimations() Line 99 C++
React.UWP.dll!react::uwp::PropsAnimatedNode::UpdateView() Line 85 C++
React.UWP.dll!react::uwp::PropsAnimatedNode::ConnectToView(__int64 viewTag) Line 35 C++
React.UWP.dll!react::uwp::NativeAnimatedNodeManager::ConnectAnimatedNodeToView(__int64 propsNodeTag, __int64 viewTag) Line 115 C++
React.UWP.dll!react::uwp::NativeAnimatedModule::ConnectAnimatedNodeToView(__int64 animatedNodeTag, __int64 viewTag) Line 168 C++
React.UWP.dll!react::uwp::NativeAnimatedModule::getMethods::__l2::(folly::dynamic args) Line 66 C++

The issue here is that when running downlevel, we don't support the ActualSize facade, which is needed for the Transform property to work, and we have code to protect against static Transform values, but something in the animation code path is still trying to run the animation. We need to add a check in the transform animation code that we're on a build that supports this stuff.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions