SIGABRT in EventQueue::flushEvents / RawEvent destructor on Android (New Architecture, RN 0.86.2) during heavy JS-thread work
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza con EventQueue.cpp:113 y RawEvent.h:25; después, sigue el flujo de programación circundante a través de EventBeat.cpp, RuntimeScheduler_Modern.cpp, JMessageQueueThread.cpp y ReactInstance.cpp. Reproduce, si es posible, el escenario de Android foreground-and-import y determina por qué se interrumpe la entrega del evento; se considera terminado cuando la causa del fallo está identificada y existe un fix validado o una prueba de regresión.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Body
Description
We're seeing a native SIGABRT crash (uncaught, mechanism: signalhandler) with a stack trace entirely inside Fabric/RuntimeScheduler internals — no first-party JS frames involved. It has occurred twice on the same physical device so far.
Environment
- React Native: 0.86.2
- Expo SDK: 57
- Architecture: New Architecture (Fabric) — mandatory on this RN version
- Hermes: yes
- Platform: Android 16
- Device: Samsung Galaxy S24 FE (SM-S721B), arm64-v8a
- App version tag: 1.4.3 (build 40)
Repro context
Both occurrences happened during the same user flow:
- App resumes from background (
onResume). - User taps a sync/refresh action, which kicks off a data import: a network download followed by a single large SQLite transaction (
expo-sqlite,withExclusiveTransactionAsync) that sequentially imports ~19 groups of records, each step logged synchronously viaconsole.log. - A few milliseconds after one of the intermediate import steps logs, the process aborts.
The JS thread is doing sustained synchronous-ish work throughout the import (a tight loop of awaited SQLite operations, several dozen ms apart), right after the app comes back to the foreground — so there may be a backlog of native UI/touch events queued for delivery to JS at the same time.
Stack trace
SIGABRT: Abort
at <unknown> (<unknown>)
at facebook::jni::detail::FunctionWrapper<T>::call (Registration-inl.h:95)
at facebook::jni::detail::CallWithJniConversions<T>::call (Registration-inl.h:66)
at facebook::jni::detail::MethodWrapper<T>::dispatch (Registration-inl.h:129)
at facebook::jni::JNativeRunnable::run (NativeRunnable.h:44)
at std::__ndk1::function<T>::operator() (function.h:978)
at std::__ndk1::__function::__value_func<T>::operator()[abi:ne180000] (function.h:425)
at std::__ndk1::__function::__func<T>::operator() (function.h:308)
at std::__ndk1::__function::__alloc_func<T>::operator()[abi:ne180000] (function.h:166)
at std::__ndk1::__invoke_void_return_wrapper<T>::__call[abi:ne180000]<T> (invoke.h:419)
at std::__ndk1::__invoke[abi:ne180000]<T> (invoke.h:344)
at facebook::react::(anonymous namespace)::wrapRunnable::lambda::operator() (JMessageQueueThread.cpp:37)
at std::__ndk1::function<T>::operator() (function.h:978)
at std::__ndk1::__function::__value_func<T>::operator()[abi:ne180000] (function.h:425)
at std::__ndk1::__function::__func<T>::operator() (function.h:308)
at std::__ndk1::__function::__alloc_func<T>::operator()[abi:ne180000] (function.h:166)
at std::__ndk1::__invoke_void_return_wrapper<T>::__call[abi:ne180000]<T> (invoke.h:419)
at std::__ndk1::__invoke[abi:ne180000]<T> (invoke.h:344)
at const::lambda::operator() (ReactInstance.cpp:93)
at std::__ndk1::function<T>::operator() (function.h:978)
at std::__ndk1::__function::__value_func<T>::operator()[abi:ne180000] (function.h:425)
at facebook::react::RuntimeScheduler_Modern::runEventLoop (RuntimeScheduler_Modern.cpp:266)
at facebook::react::RuntimeScheduler_Modern::runEventLoopTick (RuntimeScheduler_Modern.cpp:312)
at facebook::react::RuntimeScheduler_Modern::executeTask (RuntimeScheduler_Modern.cpp:375)
at facebook::react::Task::execute (Task.cpp:60)
at std::__ndk1::function<T>::operator() (function.h:978)
at std::__ndk1::__function::__value_func<T>::operator()[abi:ne180000] (function.h:425)
at std::__ndk1::__function::__func<T>::operator() (function.h:308)
at std::__ndk1::__function::__alloc_func<T>::operator()[abi:ne180000] (function.h:166)
at std::__ndk1::__invoke_void_return_wrapper<T>::__call[abi:ne180000]<T> (invoke.h:419)
at std::__ndk1::__invoke[abi:ne180000]<T> (invoke.h:344)
at const::lambda::operator() (EventBeat.cpp:70)
at std::__ndk1::function<T>::operator() (function.h:978)
at std::__ndk1::__function::__value_func<T>::operator()[abi:ne180000] (function.h:425)
at facebook::react::EventQueue::flushEvents (EventQueue.cpp:113)
at std::__ndk1::vector<T>::~vector[abi:ne180000] (vector:501)
at std::__ndk1::vector<T>::__destroy_vector::operator()[abi:ne180000] (vector:490)
at std::__ndk1::vector<T>::__clear[abi:ne180000] (vector:920)
at std::__ndk1::vector<T>::__base_destruct_at_end[abi:ne180000] (vector:926)
at std::__ndk1::allocator_traits<T>::destroy[abi:ne180000]<T> (allocator_traits.h:316)
at std::__ndk1::__destroy_at<facebook::react::RawEvent> (construct_at.h:67)
at facebook::react::RawEvent::~RawEvent (RawEvent.h:25)
at std::__ndk1::shared_ptr<T>::~shared_ptr[abi:ne180000] (shared_ptr.h:645)
at std::__ndk1::__shared_weak_count::__release_shared[abi:ne180000] (shared_ptr.h:184)
at <unknown> (<unknown>)
at <unknown> (<unknown>)
at <unknown> (<unknown>)
at <unknown> (<unknown>)
at <unknown> (<unknown>)
at abort (<unknown>)
Notes
- Low frequency so far (2 occurrences on 1 device over 4 days), but 100% of the stack is React Native internals — no app frame to act on from our side.
- Happy to share more Sentry context (breadcrumbs, device info) if useful.
- Lenguaje dominante
- C++
- Estrellas
- 127k
- Forks
- 25.3k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de react/react-native
-
Needs: Author Feedback Needs: Repro
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
react/react-native#58621 · 1 comentario ·
-
Needs: Author Feedback Needs: Repro
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
react/react-native#58610 · 1 comentario ·
-
Needs: Triage :mag:
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
react/react-native#58565 · 1 comentario · 2 reacciones ·
-
Needs: Author Feedback Needs: Repro
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
react/react-native#58555 · 5 comentarios · 2 reacciones ·
-
Needs: Attention Needs: Repro
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
react/react-native#58526 · 2 comentarios ·
Todos los issues de react/react-native
Issues similares
-
ai_reviewed
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ydb-platform/ydb#53869 · 3 comentarios ·
-
bug cert blocker needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
project-chip/connectedhomeip#74373 ·
-
[request] tracy/0.14.1 Abiertoupstream update
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
conan-io/conan-center-index#31035 ·
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
vllm-project/vllm-ascend#17329 ·