[iOS] Reload crashes the app while a view command is still queued
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- C++
- Stelle
- 127k
- Fork
- 25.4k
- Merge medio
- 2g 5h
- PR unite (30g)
- 74
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di react/react-native
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
react/react-native#59722 ·
I maintainer di solito rispondono entro 2 giorni
-
🌐Networking Needs: Author Feedback Needs: Repro Platform: Android
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
react/react-native#59704 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
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 timerForse già presa @lazerg l’ha presa 2 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
react/react-native#59699 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
react/react-native#59694 ·
I maintainer di solito rispondono entro 2 giorni
-
Android autolinking keeps a stale autolinking.json when only bun.lock changes, since bun.lock isn't in the default lockFilesForse già presa @lazerg l’ha presa 2 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
react/react-native#59693 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di react/react-native
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
pocoproject/poco#5626 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Issue-Bug Needs-Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
microsoft/winget-cli#6645 ·
I maintainer di solito rispondono entro 2 giorni
-
cleanup help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
ESPresense/ESPresense#2602 ·
I maintainer di solito rispondono entro 1 giorno