rive-app / rive-app/rive-react-native

App Hanging errors on iOS

Open
#343 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

triage
Dominant language
TypeScript
Stars
783
Forks
81
Avg merge
3d 6h
Merged PRs (30d)
3

Description

Description

We recently released a version of our app that uses:

rive-react-native@9.3.4
expo@53
react-native@0.79.3 (new architecture enabled)

Since then, we've had a steady stream of App Hanging errors on iOS collected through Sentry. Often, the stack traces refer to rive, e.g.:

  RiveRuntime         0x10770e1d4  rive::PointsPathBase::isTypeOf
  RiveRuntime         0x1076af9c8  rive::ClippingShape::onAddedClean
  RiveRuntime         0x10769a894  rive::Artboard::initialize
  RiveRuntime         0x1076d7158  rive::ImportStack::makeLatest
  RiveRuntime         0x1076d3828  rive::File::read
  RiveRuntime         0x1076d2730  rive::File::import
  RiveRuntime         0x10766c6c0  rive::File::import (file.hpp:71)
  RiveRuntime         0x10766c340  -[RiveFile import:byteLength:loadCdn:customAssetLoader:error:] (RiveFile.mm:364)
  RiveRuntime         0x10766b670  -[RiveFile initWithBytes:byteLength:loadCdn:customAssetLoader:error:] (RiveFile.mm:136)
  RiveRuntime         0x10766b7f8  -[RiveFile initWithData:loadCdn:customAssetLoader:error:] (RiveFile.mm:167)
  RiveRuntime         0x10766f908  RiveFile.init (RiveFile+Extensions.swift:16)
  RiveRuntime         0x1076905bc  RiveModel.init (RiveModel.swift:29)
  RiveRuntime         0x10768b850  RiveModel.__allocating_init (RiveModel.swift)
  RiveRuntime         0x10768b850  RiveViewModel.init (RiveViewModel.swift:97)
  RiveRuntime         0x107685f60  RiveViewModel.init (<compiler-generated>)
  Emy                 0x105b3a3d0  RiveReactNativeView.configureViewModelFromResource
  Emy                 0x105b39358  RiveReactNativeView.didSetProps
  Emy                 0x105b39604  RiveReactNativeView.didSetProps
  Emy                 0x104fdc4ec  -[RCTLegacyViewManagerInteropCoordinator setProps:forView:]
  Emy                 0x104d4e0a0  -[RCTLegacyViewManagerInteropCoordinatorAdapter setProps:]
  Emy                 0x104d4d888  __60-[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]_block_invoke
  Emy                 0x104d4d410  -[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]
  Emy                 0x104d553b0  _ZNSt3__110__function6__funcIZ41-[RCTMountingManager performTransaction:]E3$_1NS_9allocatorIS2_EEFvRKN8facebook5react19MountingTransactionERKNS6_16SurfaceTelemetryEEEclES9_SC_
  Emy                 0x104fed908  facebook::react::TelemetryController::pullTransaction
  Emy                 0x104d540bc  -[RCTMountingManager performTransaction:]
  Emy                 0x104d53fd8  -[RCTMountingManager initiateTransaction:]
  Emy                 0x104d6f2a8  -[RCTSurfacePresenter schedulerShouldRenderTransactions:]
  Emy                 0x104d64c10  SchedulerDelegateProxy::schedulerShouldRenderTransactions
  Emy                 0x104fdef30  facebook::react::Scheduler::uiManagerDidFinishTransaction
  Emy                 0x104ff35ac  facebook::react::UIManager::shadowTreeDidFinishTransaction
  Emy                 0x104fe6a4c  facebook::react::ShadowTree::mount
  Emy                 0x104fe7290  facebook::react::ShadowTree::tryCommit
  Emy                 0x104fe6b2c  facebook::react::ShadowTree::commit
  Emy                 0x104e2d20c  std::__1::__function::__func<T>::operator()
  Emy                 0x104fe8d38  facebook::react::ShadowTreeRegistry::visit
  Emy                 0x104e2d0b0  reanimated::ReanimatedMountHook::shadowTreeDidMount
  Emy                 0x104ff3700  facebook::react::UIManager::reportMount
  libdispatch         0x1a1e0131c  _dispatch_call_block_and_release
  libdispatch         0x1a1e02ea8  _dispatch_client_callout
  libdispatch         0x1a1e116a0  _dispatch_main_queue_drain
  libdispatch         0x1a1e112f0  _dispatch_main_queue_callback_4CF
  CoreFoundation      0x19a9cbc24  __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
  CoreFoundation      0x19a9ad55c  __CFRunLoopRun
  CoreFoundation      0x19a9b23e8  CFRunLoopRunSpecific
  GraphicsServices    0x1d5e4f358  GSEventRunModal
  UIKitCore           0x19cd3f6e4  -[UIApplication _run]
  UIKitCore           0x19cd3f348  UIApplicationMain
  Emy                 0x1043f9b40  main
  0x1b9e8adec  <redacted>
  RiveRuntime         0x103d04b74  rive::ArtboardBase::coreType
  RiveRuntime         0x103d8f3d4  rive::Shape::onAddedClean
  RiveRuntime         0x103d06894  rive::Artboard::initialize
  RiveRuntime         0x103d0eec4  rive::Artboard::instance<T>
  RiveRuntime         0x103cd8b74  -[RiveFile artboardFromName:error:] (RiveFile.mm:462)
  RiveRuntime         0x103cfcbe0  RiveModel.setArtboard (RiveModel.swift:65)
  RiveRuntime         0x103cf3cd4  RiveViewModel.configureModel (RiveViewModel.swift:310)
  RiveRuntime         0x103cf2a8c  RiveViewModel.sharedInit (RiveViewModel.swift:157)
  RiveRuntime         0x103cf78a4  RiveViewModel.init (RiveViewModel.swift:98)
  RiveRuntime         0x103cf1f60  RiveViewModel.init (<compiler-generated>)
  Emy                 0x10228e3d0  RiveReactNativeView.configureViewModelFromResource
  Emy                 0x10228d358  RiveReactNativeView.didSetProps
  Emy                 0x10228d604  RiveReactNativeView.didSetProps
  Emy                 0x1017304ec  -[RCTLegacyViewManagerInteropCoordinator setProps:forView:]
  Emy                 0x1014a20a0  -[RCTLegacyViewManagerInteropCoordinatorAdapter setProps:]
  Emy                 0x1014a1888  __60-[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]_block_invoke
  Emy                 0x1014a1410  -[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]
  Emy                 0x1014a93b0  _ZNSt3__110__function6__funcIZ41-[RCTMountingManager performTransaction:]E3$_1NS_9allocatorIS2_EEFvRKN8facebook5react19MountingTransactionERKNS6_16SurfaceTelemetryEEEclES9_SC_
  Emy                 0x101741908  facebook::react::TelemetryController::pullTransaction
  Emy                 0x1014a80bc  -[RCTMountingManager performTransaction:]
  Emy                 0x1014a7fd8  -[RCTMountingManager initiateTransaction:]
  libdispatch         0x19f65caa8  _dispatch_call_block_and_release
  libdispatch         0x19f676580  _dispatch_client_callout
  libdispatch         0x19f69359c  _dispatch_main_queue_drain.cold.5
  libdispatch         0x19f66bd2c  _dispatch_main_queue_drain
  libdispatch         0x19f66bc68  _dispatch_main_queue_callback_4CF
  CoreFoundation      0x19773dd8c  __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
  CoreFoundation      0x1976e14f0  __CFRunLoopRun
  CoreFoundation      0x1976e2c38  CFRunLoopRunSpecific
  GraphicsServices    0x1e48c1450  GSEventRunModal
  UIKitCore           0x19a0f5270  -[UIApplication _run]
  UIKitCore           0x19a0c0a24  UIApplicationMain
  Emy                 0x100b4db40  main
  0x1be5b7f08  <redacted>
  libsystem_platform  0x22665e080  _platform_memmove
  RiveRuntime         0x107aa49bc  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107aa4938  rive::DependencySorter::visit
  RiveRuntime         0x107a7428c  rive::Artboard::sortDependencies
  RiveRuntime         0x107a734ec  rive::Artboard::initialize
  RiveRuntime         0x107aaf158  rive::ImportStack::makeLatest
  RiveRuntime         0x107aab828  rive::File::read
  RiveRuntime         0x107aaa730  rive::File::import
  RiveRuntime         0x107a446c0  rive::File::import (file.hpp:71)
  RiveRuntime         0x107a44340  -[RiveFile import:byteLength:loadCdn:customAssetLoader:error:] (RiveFile.mm:364)
  RiveRuntime         0x107a43670  -[RiveFile initWithBytes:byteLength:loadCdn:customAssetLoader:error:] (RiveFile.mm:136)
  RiveRuntime         0x107a437f8  -[RiveFile initWithData:loadCdn:customAssetLoader:error:] (RiveFile.mm:167)
  RiveRuntime         0x107a47908  RiveFile.init (RiveFile+Extensions.swift:16)
  RiveRuntime         0x107a685bc  RiveModel.init (RiveModel.swift:29)
  RiveRuntime         0x107a63850  RiveModel.__allocating_init (RiveModel.swift)
  RiveRuntime         0x107a63850  RiveViewModel.init (RiveViewModel.swift:97)
  RiveRuntime         0x107a5df60  RiveViewModel.init (<compiler-generated>)
  Emy                 0x1061e23d0  RiveReactNativeView.configureViewModelFromResource
  Emy                 0x1061e1358  RiveReactNativeView.didSetProps
  Emy                 0x1061e1604  RiveReactNativeView.didSetProps
  Emy                 0x1056844ec  -[RCTLegacyViewManagerInteropCoordinator setProps:forView:]
  Emy                 0x1053f60a0  -[RCTLegacyViewManagerInteropCoordinatorAdapter setProps:]
  Emy                 0x1053f5888  __60-[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]_block_invoke
  Emy                 0x1053f5410  -[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]
  Emy                 0x1053fd3b0  _ZNSt3__110__function6__funcIZ41-[RCTMountingManager performTransaction:]E3$_1NS_9allocatorIS2_EEFvRKN8facebook5react19MountingTransactionERKNS6_16SurfaceTelemetryEEEclES9_SC_
  Emy                 0x105695908  facebook::react::TelemetryController::pullTransaction
  Emy                 0x1053fc0bc  -[RCTMountingManager performTransaction:]
  Emy                 0x1053fbfd8  -[RCTMountingManager initiateTransaction:]
  libdispatch         0x1e26f77a4  _dispatch_call_block_and_release
  libdispatch         0x1e26f877c  _dispatch_client_callout
  libdispatch         0x1e26d9e0c  _dispatch_main_queue_drain
  libdispatch         0x1e26d9a84  _dispatch_main_queue_callback_4CF$VARIANT$armv81
  CoreFoundation      0x1db9d99a8  __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
  CoreFoundation      0x1db9bd644  __CFRunLoopRun
  CoreFoundation      0x1db9c1d1c  CFRunLoopRunSpecific
  GraphicsServices    0x213a91994  GSEventRunModal
  UIKitCore           0x1ddc54348  -[UIApplication _run]
  UIKitCore           0x1ddc53fc0  UIApplicationMain
  Emy                 0x104aa1b40  main
  0x1f9180344  <redacted>
  RiveRuntime         0x1076af9bc  rive::ClippingShape::onAddedClean
  RiveRuntime         0x1076afa04  rive::ClippingShape::onAddedClean
  RiveRuntime         0x10769a894  rive::Artboard::initialize
  RiveRuntime         0x1076d7158  rive::ImportStack::makeLatest
  RiveRuntime         0x1076d3828  rive::File::read
  RiveRuntime         0x1076d2730  rive::File::import
  RiveRuntime         0x10766c6c0  rive::File::import (file.hpp:71)
  RiveRuntime         0x10766c340  -[RiveFile import:byteLength:loadCdn:customAssetLoader:error:] (RiveFile.mm:364)
  RiveRuntime         0x10766b670  -[RiveFile initWithBytes:byteLength:loadCdn:customAssetLoader:error:] (RiveFile.mm:136)
  RiveRuntime         0x10766b7f8  -[RiveFile initWithData:loadCdn:customAssetLoader:error:] (RiveFile.mm:167)
  RiveRuntime         0x10766f908  RiveFile.init (RiveFile+Extensions.swift:16)
  RiveRuntime         0x1076905bc  RiveModel.init (RiveModel.swift:29)
  RiveRuntime         0x10768b850  RiveModel.__allocating_init (RiveModel.swift)
  RiveRuntime         0x10768b850  RiveViewModel.init (RiveViewModel.swift:97)
  RiveRuntime         0x107685f60  RiveViewModel.init (<compiler-generated>)
  Emy                 0x105b3a3d0  RiveReactNativeView.configureViewModelFromResource
  Emy                 0x105b39358  RiveReactNativeView.didSetProps
  Emy                 0x105b39604  RiveReactNativeView.didSetProps
  Emy                 0x104fdc4ec  -[RCTLegacyViewManagerInteropCoordinator setProps:forView:]
  Emy                 0x104d4e0a0  -[RCTLegacyViewManagerInteropCoordinatorAdapter setProps:]
  Emy                 0x104d4d888  __60-[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]_block_invoke
  Emy                 0x104d4d410  -[RCTLegacyViewManagerInteropComponentView finalizeUpdates:]
  Emy                 0x104d553b0  _ZNSt3__110__function6__funcIZ41-[RCTMountingManager performTransaction:]E3$_1NS_9allocatorIS2_EEFvRKN8facebook5react19MountingTransactionERKNS6_16SurfaceTelemetryEEEclES9_SC_
  Emy                 0x104fed908  facebook::react::TelemetryController::pullTransaction
  Emy                 0x104d540bc  -[RCTMountingManager performTransaction:]
  Emy                 0x104d53fd8  -[RCTMountingManager initiateTransaction:]
  Emy                 0x104d6f2a8  -[RCTSurfacePresenter schedulerShouldRenderTransactions:]
  Emy                 0x104d64c10  SchedulerDelegateProxy::schedulerShouldRenderTransactions
  Emy                 0x104fdef30  facebook::react::Scheduler::uiManagerDidFinishTransaction
  Emy                 0x104ff35ac  facebook::react::UIManager::shadowTreeDidFinishTransaction
  Emy                 0x104fe7c58  facebook::react::ShadowTree::notifyDelegatesOfUpdates
  Emy                 0x104fe8d38  facebook::react::ShadowTreeRegistry::visit
  Emy                 0x104e28c44  std::__1::__function::__func<T>::operator()
  Emy                 0x104e40510  std::__1::function<T>::operator()
  Emy                 0x104e40284  worklets::jsi_utils::createHostFunction<T>::lambda::operator()
  Emy                 0x1046d6520  std::__1::function<T>::operator()
  Emy                 0x1046d6520  std::__1::function<T>::operator()
  hermes              0x107eb3788  std::__1::function<T>::operator()
  hermes              0x107eb3450  facebook::hermes::HermesRuntimeImpl::HFContext::func
  hermes              0x107ec30f0  hermes::vm::NativeFunction::_nativeCall
  hermes              0x107ecf6f8  hermes::vm::Interpreter::handleCallSlowPath
  hermes              0x107ed1104  hermes::vm::Interpreter::interpretFunction<T>
  hermes              0x107ed06f0  hermes::vm::Runtime::interpretFunctionImpl
  hermes              0x107ec31d8  hermes::vm::JSFunction::_callImpl
  hermes              0x107ec1c40  hermes::vm::Callable::executeCall3
  hermes              0x107eefb2c  hermes::vm::JSMapImpl<T>::forEach
  hermes              0x107f403f8  hermes::vm::mapPrototypeForEach
  hermes              0x107ec30f0  hermes::vm::NativeFunction::_nativeCall
  hermes              0x107ecf6f8  hermes::vm::Interpreter::handleCallSlowPath
  hermes              0x107ed1104  hermes::vm::Interpreter::interpretFunction<T>
  hermes              0x107ed06f0  hermes::vm::Runtime::interpretFunctionImpl
  hermes              0x107ec31d8  hermes::vm::JSFunction::_callImpl
  hermes              0x107ec1a5c  hermes::vm::Callable::executeCall1
  hermes              0x107ee3c88  hermes::vm::JSObject::putNamedWithReceiver_RJS
  hermes              0x107ed2f08  hermes::vm::Interpreter::interpretFunction<T>
  hermes              0x107ed06f0  hermes::vm::Runtime::interpretFunctionImpl
  hermes              0x107ec31d8  hermes::vm::JSFunction::_callImpl
  hermes              0x107ec1c40  hermes::vm::Callable::executeCall3
  hermes              0x107f1a4a4  hermes::vm::arrayPrototypeForEach
  hermes              0x107ec30f0  hermes::vm::NativeFunction::_nativeCall
  hermes              0x107ecf6f8  hermes::vm::Interpreter::handleCallSlowPath
  hermes              0x107ed1104  hermes::vm::Interpreter::interpretFunction<T>
  hermes              0x107ed06f0  hermes::vm::Runtime::interpretFunctionImpl
  hermes              0x107ec31d8  hermes::vm::JSFunction::_callImpl
  hermes              0x107eab878  facebook::hermes::HermesRuntimeImpl::call
  Emy                 0x104e44f84  facebook::jsi::WithRuntimeDecorator<T>::call
  Emy                 0x104e25624  worklets::runOnRuntimeGuarded<T>
  Emy                 0x104e2553c  reanimated::ReanimatedModuleProxy::onRender
  Emy                 0x104e28854  std::__1::__function::__func<T>::operator()
  Emy                 0x104e17c38  reanimated::makeRequestRender::lambda::operator()
  Emy                 0x104e2f180  -[REANodesManager onAnimationFrame:]
  QuartzCore          0x19be80468  CA::Display::DisplayLink::dispatch_items
  QuartzCore          0x19bf9df24  CA::Display::DisplayLink::dispatch_deferred_display_links
  UIKitCore           0x19cff04ac  _UIUpdateSequenceRun
  UIKitCore           0x19d654c88  schedulerStepScheduledMainSection
  UIKitCore           0x19d6541e4  runloopSourceCallback
  CoreFoundation      0x19aa06124  __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
  CoreFoundation      0x19aa127b0  __CFRunLoopDoSource0
  CoreFoundation      0x19a9975e4  __CFRunLoopDoSources0
  CoreFoundation      0x19a9ad0d0  __CFRunLoopRun
  CoreFoundation      0x19a9b23e8  CFRunLoopRunSpecific
  GraphicsServices    0x1d5e4f358  GSEventRunModal
  UIKitCore           0x19cd3f6e4  -[UIApplication _run]
  UIKitCore           0x19cd3f348  UIApplicationMain
  Emy                 0x1043f9b40  main
  0x1b9e8adec  <redacted>
Provide a Repro

I personally haven't been able to reproduce these on iOS yet, but I have encountered occasional ANRs on Android, and we have also had Sentry reports that seem to be the Android equivalent of these App Hanging errors. I already reported those Android errors here, apologies if that was the wrong place:

https://github.com/rive-app/rive-android/issues/381
https://github.com/rive-app/rive-android/issues/380
https://github.com/rive-app/rive-android/issues/379

Source .riv/.rev file

Can be provided on request.

Device & Versions (please complete the following information)
  • Device: iPhone XR, iPhone 8, iPhone 12 Mini, + others
  • OS: iOS 18.5, iOS 16.7, iOS 16.5, + others
  • NPM Version: 10.9.2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The stack traces point to RiveReactNativeView.configureViewModelFromResource and the native RiveFile and RiveViewModel paths; begin by reproducing on iOS with rive-react-native@9.3.4, Expo 53, and React Native 0.79.3 with the new architecture enabled. Trace the reported initialization paths and confirm that the app no longer hangs under the reported setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, react-native
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.