[iOS] Reload crashes the app while a view command is still queued
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 45/100
Piste de recherche
The crash stack points to RuntimeScheduler_Modern.cpp (updateRendering, runEventLoopTick) and Scheduler::uiManagerDidDispatchCommand. Start by building the provided reproducer on an iOS simulator, then read the scheduler code around line 400 to see how queued view commands interact with reload. Done means ./loop.sh reports 0 crashes in 20 reloads.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
On iOS, reloading the app while a view command is still queued crashes it on the JS thread with EXC_BAD_ACCESS.
scrollRef.current?.scrollTo({ y: 0, animated: false });
DevSettings.reload();
busyWait(100); // keeps the JS thread in this task for 100 ms
Likely the same crash was reported in #58601 and #53774 but without a repro.
Steps to reproduce
- Clone the reproducer and install it:
npm install cd ios && bundle install && bundle exec pod install && cd .. - Start Metro with
npx react-native start, then build and run on an iOS simulator withnpx react-native run-ios. - The app reloads itself about 1 s after every mount, and usually crashes on the first reload.
My setup: Debug build, prebuilt React.xcframework, iPhone 17 simulator, iOS 26.5
To count the crashes, quit the app and run ./loop.sh default 20. It relaunches the app for each trial and prints default: N crashes in 20 reloads.
React Native Version
0.88.1
Affected Platforms
Runtime - iOS
Areas
Fabric - The New Renderer
Output of npx @react-native-community/cli info
System:
OS: macOS 26.7.1
CPU: (14) arm64 Apple M4 Pro
Memory: 11.90 GB / 48.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 24.22.1
path: /opt/homebrew/bin/node
Yarn: Not Found
npm:
version: 11.19.1
path: /opt/homebrew/bin/npm
Watchman: Not Found
Managers:
CocoaPods:
version: 1.17.0
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 27.0
- iOS 27.1
- macOS 27.0
- tvOS 27.0
- visionOS 27.0
- watchOS 27.0
Android SDK: Not Found
IDEs:
Android Studio: Not Found
Xcode:
version: 27.1/27A9275
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.20.1
path: /usr/bin/javac
Ruby:
version: 4.0.9
path: /opt/homebrew/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.2.0
wanted: 20.2.0
react:
installed: 19.3.0
wanted: 19.3.0
react-native:
installed: 0.88.1
wanted: 0.88.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Stacktrace or Logs
Exception: EXC_BAD_ACCESS (SIGBUS) KERN_PROTECTION_FAILURE at 0x00000001090a659c
Crashed thread: com.facebook.react.runtime.JavaScript
0 ??? 0x1090a659c
1 ReproducerApp.debug.dylib std::__invoke<facebook::react::Scheduler::uiManagerDidDispatchCommand(...)::$_0&>(...) (invoke.h:90)
2 ReproducerApp.debug.dylib std::__invoke_void_return_wrapper<void, true>::__call<...uiManagerDidDispatchCommand(...)::$_0&>(...) (invoke.h:350)
3 ReproducerApp.debug.dylib std::__invoke_r<void, ...uiManagerDidDispatchCommand(...)::$_0&>(...) (invoke.h:356)
4 ReproducerApp.debug.dylib std::__function::__func<facebook::react::Scheduler::uiManagerDidDispatchCommand(...)::$_0, void ()>::operator()() (function.h:172)
5 ReproducerApp.debug.dylib std::__function::__value_func<void ()>::operator()() const (function.h:273)
6 ReproducerApp.debug.dylib std::function<void ()>::operator()() const (function.h:754)
7 ReproducerApp.debug.dylib facebook::react::RuntimeScheduler_Modern::updateRendering(facebook::jsi::Runtime&, facebook::react::HighResTimeStamp) (RuntimeScheduler_Modern.cpp:400)
8 ReproducerApp.debug.dylib facebook::react::RuntimeScheduler_Modern::runEventLoopTick(facebook::jsi::Runtime&, facebook::react::Task&) (RuntimeScheduler_Modern.cpp:343)
9 ReproducerApp.debug.dylib facebook::react::RuntimeScheduler_Modern::runEventLoop(facebook::jsi::Runtime&) (RuntimeScheduler_Modern.cpp:287)
10 ReproducerApp.debug.dylib facebook::react::RuntimeScheduler_Modern::scheduleEventLoop()::$_0::operator()(facebook::jsi::Runtime&) const (RuntimeScheduler_Modern.cpp:272)
MANDATORY Reproducer
https://github.com/Nezz/expo-repro/tree/repro/ReloadSchedulerCrash
Screenshots and Videos
- Langage dominant
- C++
- Étoiles
- 127k
- Forks
- 25.4k
- Merge moyen
- 2 j 5 h
- PR mergées (30 j)
- 74
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de react/react-native
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
react/react-native#59722 ·
Les mainteneurs répondent en général sous 2 jours
-
🌐Networking Needs: Author Feedback Needs: Repro Platform: Android
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
react/react-native#59704 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Fantom runs end 5 seconds after their last test, with "Jest did not exit one second after the test run has completed": globalTeardown never clears its shutdown timerPeut-être pris @lazerg l’a pris il y a 2 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
react/react-native#59699 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
react/react-native#59694 ·
Les mainteneurs répondent en général sous 2 jours
-
Android autolinking keeps a stale autolinking.json when only bun.lock changes, since bun.lock isn't in the default lockFilesPeut-être pris @lazerg l’a pris il y a 2 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
react/react-native#59693 ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de react/react-native
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
pocoproject/poco#5626 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Issue-Bug Needs-Triage
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
microsoft/winget-cli#6645 ·
Les mainteneurs répondent en général sous 2 jours
-
cleanup help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
ESPresense/ESPresense#2602 ·
Les mainteneurs répondent en général sous 1 jour