iOS Simulator: SIGSEGV in -[RiveFactory decodeImage:] when a RiveView with referenced image assets mounts again after the last RiveView unmounted
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 43/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- ios, typescript
- Ambito
- mobile
Direzione di ricerca
Start by tracing RiveReactNativeView.processAssetBytes, RiveFactory.decodeImage:, and RenderContextManager to understand how render contexts are retained across view unmounts. Reproduce the issue with the reported two-asset mount and unmount sequence in the iOS Simulator. Done when repeated remounts no longer crash while processing referenced image assets.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Versions: rive-react-native 9.8.6 (RiveRuntime 6.24.0), React Native 0.87, iOS Simulator on an Apple-silicon Mac. Not reproduced on a physical iPhone.
What happens: the app crashes natively (SIGSEGV) in -[RiveFactory decodeImage:], called from RiveReactNativeView.processAssetBytes, when a RiveView that supplies images through referencedAssets mounts again after every RiveView had been unmounted. The first mount always works.
Steps
- Render a
RiveViewfor a .riv with two referenced image assets, supplied as URLs viareferencedAssets. - Unmount it so no
RiveViewis alive. - Mount a new
RiveViewfor the same file and assets. - The app crashes while the asset bytes are processed. Intermittent: 4 of 5 automated runs.
What we think happens: RenderContextManager keeps its render contexts weakly ("when no more RiveRenderViews require these, they can be freed"), and RiveFactory holds a raw rive::Factory*. After the last view unmounts the context is freed, and decoding assets for the new view dereferences it.
Tried: decoding on the main thread (same crash, now on the main thread); dropping stale loads with a generation token (still crashes); holding a RiveFile reference (not reliable). RenderContextManager.shared().newDefaultContext() isn't callable from Swift because RenderContext is only forward-declared.
- Lingua principale
- TypeScript
- Stelle
- 789
- Fork
- 81
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun 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 rive-app/rive-react-native
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rive-app/rive-react-native#450 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
rive-app/rive-react-native#431 · 2 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
rive-app/rive-react-native#448 · 2 commenti · 1 reazione ·
-
[Android] Rive events dispatched off the UI thread can deadlock with Reanimated under Fabric (ANR)Forse già presa @Togetic l’ha presa 69 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
rive-app/rive-react-native#444 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
rive-app/rive-react-native#441 ·
Tutte le issue di rive-app/rive-react-native
Issue simili
-
Runner API: GET /api/jobs/<id> returns branch: null; the branch only appears under input.branchAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
radiancelux/prgenie#204 ·
I maintainer di solito rispondono entro 1 giorno
-
bug documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
cqframework/vscode-cql#198 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
WalletConnect/walletconnect-monorepo#7392 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
sandtable-ai/sandtable#550 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100