react-native-vision-camera icon indicating copy to clipboard operation
react-native-vision-camera copied to clipboard

Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module.

Open Master-Antonio opened this issue 5 months ago • 35 comments

If you see the exception, come from visioncamera. com.mrousavy.camera.react.CameraDevicesManager

AndroidRuntime: at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager.kt:102) 07-21 11:53:22.790 19288 19373 E AndroidRuntime: at com.mrousavy.camera.react.CameraDevicesManager1.invokeSuspend(CameraDevicesManager.kt:74) 07-21 11:53:22.790 19288 19373 E AndroidRuntime: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) 07-21 11:53:22.790 19288 19373 E AndroidRuntime: at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101) 07-21 11:53:22.790 19288 19373 ecc ecc

Originally posted by @Master-Antonio in #3585

Its vision camera, not webrtc. In my app navigator there is a screen that use vision camera, that mean when you open the app there is the initialization of vision camera too, and it crash with that error. I tried also to load this screen in lazy mod but dont work too, same error.

const CallScreen= lazy(() => import('../screens/screen'));
<Stack.Screen
          name="Call"
        >
          {() => (
            <Suspense fallback={<CallScreenFallback />}>
              <CallScreen />
            </Suspense>
          )}
        </Stack.Screen>

webrtc have camera control too, so i think they go in conflict.

Master-Antonio avatar Jul 21 '25 17:07 Master-Antonio

Guten Tag, Hans here!

Thanks for bringing this up, but it looks like you haven’t provided enough information for mrousavy to help resolve zhis issue. Please include the relevant logs from either Android Studio or use adb logcat to gather runtime logs. This will help in diagnosing ze problem.

Also, consider checking your implementation against ze documentation to ensure everything is set up correctly. If you find it helpful, you can also support ze project by sponsoring mrousavy here. Cheers! 🍻

Note: If you think I made a mistake, please ping @mrousavy to take a look.

maintenance-hans[bot] avatar Jul 21 '25 17:07 maintenance-hans[bot]

+1

Ran into this while upgrading react and react-native info Fetching system and libraries information... System: OS: Windows 11 10.0.26100 CPU: (12) x64 11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz Memory: 1.78 GB / 15.78 GB Binaries: Node: version: 22.17.1 path: ~\AppData\Local\Temp\yarn--1753220538921-0.6584790179539757\node.CMD Yarn: version: 1.22.22 path: ~\AppData\Local\Temp\yarn--1753220538921-0.6584790179539757\yarn.CMD npm: version: 11.4.2 path: C:\Program Files\nodejs\npm.CMD Watchman: Not Found SDKs: Android SDK: API Levels: - "34" - "35" Build Tools: - 33.0.1 - 34.0.0 - 35.0.0 System Images: - android-35 | Google APIs Intel x86_64 Atom - android-35 | Google Play Intel x86_64 Atom Android NDK: Not Found Windows SDK: AllowAllTrustedApps: Enabled AllowDevelopmentWithoutDevLicense: Enabled Versions: - 10.0.16299.0 - 10.0.17134.0 - 10.0.17763.0 - 10.0.19041.0 - 10.0.20348.0 - 10.0.22000.0 - 10.0.22621.0 IDEs: Android Studio: AI-251.25410.109.2511.13752376 Visual Studio: - 15.9.35027.97 (Visual Studio Community 2017) - 17.10.35027.167 (Visual Studio Community 2022) Languages: Java: 17.0.11 Ruby: Not Found npmPackages: "@react-native-community/cli": installed: 19.1.0 wanted: 19.1.0 react: installed: 19.1.0 wanted: 19.1.0 react-native: installed: 0.80.1 wanted: 0.80.1 react-native-windows: Not Found npmGlobalPackages: "react-native": Not Found Android: hermesEnabled: true newArchEnabled: false iOS: hermesEnabled: Not found newArchEnabled: Not found

Done in 4.57s.

ddkuz avatar Jul 22 '25 21:07 ddkuz

I have news now. Its because visioncamera with newArchEnabled:true, without the turbo modules crash, doesnt work. The problem is that for now many libraries arent still compatible to the turbo modules, so that is a big problem, visioncamera should be compatible also to the old way...

Master-Antonio avatar Jul 23 '25 00:07 Master-Antonio

Same here using react-native-vision-camera 4.7.1 with frame processors and react-native 0.75.5. In my case it seems to be a silent error, I didn't see the app freeze or crash

java.lang.IllegalStateException: Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module.
        at com.facebook.react.bridge.BridgeReactContext.getJSModule(BridgeReactContext:95)
        at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager:102)
        at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager:74)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask:101)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Threads:

Thread 2 - main - (RUNNABLE)
        at android.os.BinderProxy.transactNative(BinderProxy.java:-2)
        at android.os.BinderProxy.transact(BinderProxy.java:662)
        at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:1570)
        at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:9786)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3884)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3116)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10885)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1301)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1309)
        at android.view.Choreographer.doCallbacks(Choreographer.java:923)
        at android.view.Choreographer.doFrame(Choreographer.java:852)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1283)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8762)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

Thread 7015 - Signal Catcher - (WAITING)
        at unknown method(unknown file)

Thread 7016 - HeapTaskDaemon - (WAITING)
        at unknown method(unknown file)

Thread 7017 - ReferenceQueueDaemon - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.Object.wait(Object.java:543)
        at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:251)
        at java.lang.Daemons$Daemon.run(Daemons.java:131)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7018 - Jit thread pool worker thread 0 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7019 - FinalizerDaemon - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:207)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:228)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:331)
        at java.lang.Daemons$Daemon.run(Daemons.java:131)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7020 - FinalizerWatchdogDaemon - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.Object.wait(Object.java:543)
        at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:464)
        at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:444)
        at java.lang.Daemons$Daemon.run(Daemons.java:131)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7021 - binder:13025_1 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7022 - binder:13025_2 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7024 - binder:13025_3 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7025 - Profile Saver - (RUNNABLE)
        at unknown method(unknown file)

Thread 7027 - queued-work-looper-data - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7028 - WM.task-1 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7029 - Bugsnag IO thread - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7031 - pool-3-thread-1 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1188)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:905)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7032 - Bugsnag Default thread - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
        at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7033 - WM.task-2 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7034 - process reaper - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:401)
        at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:903)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7035 - bugsnag-anr-collector - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7036 - Bugsnag Error thread - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7037 - Bugsnag Session thread - (RUNNABLE)
        at com.android.org.conscrypt.NativeCrypto.X509_verify(NativeCrypto.java:-2)
        at com.android.org.conscrypt.OpenSSLX509Certificate.verifyOpenSSL(OpenSSLX509Certificate.java:378)
        at com.android.org.conscrypt.OpenSSLX509Certificate.verify(OpenSSLX509Certificate.java:408)
        at android.security.net.config.DirectoryCertificateSource$3.match(DirectoryCertificateSource.java:119)
        at android.security.net.config.DirectoryCertificateSource.findCerts(DirectoryCertificateSource.java:157)
        at android.security.net.config.DirectoryCertificateSource.findAllByIssuerAndSignature(DirectoryCertificateSource.java:115)
        at android.security.net.config.SystemCertificateSource.findAllByIssuerAndSignature(SystemCertificateSource.java:27)
        at android.security.net.config.CertificatesEntryRef.findAllCertificatesByIssuerAndSignature(CertificatesEntryRef.java:65)
        at android.security.net.config.NetworkSecurityConfig.findAllCertificatesByIssuerAndSignature(NetworkSecurityConfig.java:146)
        at android.security.net.config.TrustedCertificateStoreAdapter.findAllIssuers(TrustedCertificateStoreAdapter.java:46)
        at com.android.org.conscrypt.TrustManagerImpl.findAllTrustAnchorsByIssuerAndSignature(TrustManagerImpl.java:918)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:551)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:608)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:498)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418)
        at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:346)
        at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
        at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:90)
        at com.android.org.conscrypt.ConscryptEngineSocket$2.checkServerTrusted(ConscryptEngineSocket.java:167)
        at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:282)
        at com.android.org.conscrypt.ConscryptEngine.verifyCertificateChain(ConscryptEngine.java:1635)
        at com.android.org.conscrypt.NativeCrypto.ENGINE_SSL_read_direct(NativeCrypto.java:-2)
        at com.android.org.conscrypt.NativeSsl.readDirectByteBuffer(NativeSsl.java:566)
        at com.android.org.conscrypt.ConscryptEngine.readPlaintextDataDirect(ConscryptEngine.java:1092)
        at com.android.org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:1076)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:873)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:744)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:709)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:902)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.-$$Nest$mprocessDataFromSocket(Unknown)
        at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:240)
        at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:222)
        at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:196)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:153)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:262)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:219)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:30)
        at com.bugsnag.android.DefaultDelivery.makeRequest(DefaultDelivery:134)
        at com.bugsnag.android.DefaultDelivery.deliver(DefaultDelivery:87)
        at com.bugsnag.android.DefaultDelivery.deliver(DefaultDelivery:25)
        at com.bugsnag.android.SessionTracker.deliverSessionPayload(SessionTracker:340)
        at com.bugsnag.android.SessionTracker.deliverInMemorySession(SessionTracker:316)
        at com.bugsnag.android.SessionTracker$2.run(SessionTracker:304)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:487)
        at java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7038 - ConnectivityThread - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7039 - RenderThread - (RUNNABLE)
        at unknown method(unknown file)

Thread 7040 - queued-work-looper-data - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7041 - create_react_context - (RUNNABLE)
        at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(SourceFile:-2)
        at com.facebook.react.bridge.CatalystInstanceImpl.loadScriptFromAssets(CatalystInstanceImpl:239)
        at com.facebook.react.bridge.JSBundleLoader$1.loadScript(JSBundleLoader:27)
        at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl:268)
        at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager:1464)
        at com.facebook.react.ReactInstanceManager.lambda$runCreateReactContextOnNewThread$2(ReactInstanceManager:1161)
        at com.facebook.react.ReactInstanceManager.$r8$lambda$PrBhihCbbAFk4ZReAALGanVLCyc(ReactInstanceManager)
        at com.facebook.react.ReactInstanceManager$$ExternalSyntheticLambda1.run(ReactInstanceManager:4)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7042 - HybridData DestructorThread - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:207)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:228)
        at com.facebook.jni.DestructorThread$1.run(DestructorThread:76)

Thread 7043 - WifiManagerThread - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7045 - pool-4-thread-1 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7046 - DefaultDispatcher-worker-1 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7047 - DefaultDispatcher-worker-2 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7048 - DefaultDispatcher-worker-3 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7049 - DefaultDispatcher-worker-4 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7050 - OkHttp ConnectionPool - (TIMED_WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:106)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7051 - mrousavy/VisionCamera.video - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7052 - CameraManager - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7053 - pool-6-thread-1 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:401)
        at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:903)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7054 - binder:13025_4 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7055 - mqt_js - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl:235)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7056 - mqt_native_modules - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl:235)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7057 - CameraX-scheduler - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7058 - CameraX-core_camera_0 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7059 - CameraX-core_camera_1 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7060 - pool-6-thread-2 - (RUNNABLE)
        at com.facebook.react.bridge.BridgeReactContext.getJSModule(BridgeReactContext:95)
        at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager:102)
        at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager:74)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask:101)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

mannoeu avatar Jul 24 '25 17:07 mannoeu

Same error here, after dependencies upgrade:

  • react-native: 0.76.9 to 0.77.3
    • New architecture: disabled
  • react-native-vision-camera: 4.6.4 to 4.7.1

EDIT: I only notice this crash when force reload from Metro, pressing "r" EDIT: No problems on iOS

Flipper crash report:

FATAL EXCEPTION: pool-19-thread-2

Unknown

FATAL EXCEPTION: pool-19-thread-2
Process: com.meridianosoft.app, PID: 6797
java.lang.IllegalStateException: Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module.
	at com.facebook.react.bridge.BridgeReactContext.getJSModule(BridgeReactContext.java:97)
	at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager.kt:102)
	at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager.kt:74)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:923)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@ac8c2d9, java.util.concurrent.ThreadPoolExecutor@faf449e[Running, pool size = 2, active threads = 1, queued tasks = 0, completed tasks = 3]]

josegiufrida avatar Jul 24 '25 21:07 josegiufrida

  • react-native: 0.78.0
  • New Architecture: Disabled

Temporary Fix: Crash issue with version 4.7.1 — Downgraded to 4.7.0

Initially installed version 4.7.1, but encountered crashing issues. After downgrading to 4.7.0, the app is stable and no longer crashes.

Thilanka-97 avatar Jul 28 '25 08:07 Thilanka-97

I resolved this by moving the init {} in CameraDevicesManager.kt to initialize() function

override fun initialize() { super.initialize() // Init cameraProvider + manager as early as possible coroutineScope.launch { try { Log.i(TAG, "Initializing ProcessCameraProvider...") cameraProvider = ProcessCameraProvider.getInstance(reactContext).await(executor) Log.i(TAG, "Initializing ExtensionsManager...") extensionsManager = ExtensionsManager.getInstanceAsync(reactContext, cameraProvider!!).await(executor) Log.i(TAG, "Successfully initialized!") } catch (error: Throwable) { Log.e(TAG, "Failed to initialize ProcessCameraProvider/ExtensionsManager! Error: ${error.message}", error) } sendAvailableDevicesChangedEvent() } cameraManager.registerAvailabilityCallback(callback, null) }

ddkuz avatar Jul 29 '25 19:07 ddkuz

I also had this issue

  • Android , Old Arch,0.79.5

chanphiromsok avatar Jul 31 '25 09:07 chanphiromsok

We also encountered this issue when upgrading to 4.7.1, on React Native 0.79.4 with the old architecture. Initially it seemed to only impact release builds, but there were instances of it crashing when hot reloading a debug build as well.

bachhuberdesign avatar Jul 31 '25 16:07 bachhuberdesign

i fix this issue, just replace this code

in CameraDevicesManager.kt file

// Init cameraProvider + manager as early as possible init { coroutineScope.launch { try { Log.i(TAG, "Initializing ProcessCameraProvider...") cameraProvider = ProcessCameraProvider.getInstance(reactContext).await(executor) Log.i(TAG, "Initializing ExtensionsManager...") extensionsManager = ExtensionsManager.getInstanceAsync(reactContext, cameraProvider!!).await(executor) Log.i(TAG, "Successfully initialized!") } catch (error: Throwable) { Log.e(TAG, "Failed to initialize ProcessCameraProvider/ExtensionsManager! Error: ${error.message}", error) }

}

}

// Note: initialize() will be called after getConstants on new arch! override fun initialize() { super.initialize() cameraManager.registerAvailabilityCallback(callback, null) sendAvailableDevicesChangedEvent() }

dheerendraDotsquares avatar Aug 01 '25 15:08 dheerendraDotsquares

This is still broken, even on 4.7.0 for me.

I had to create a patch following ddkuz instructions (thank you)

workbyken avatar Aug 05 '25 08:08 workbyken

We are also having this crash issue in production. Any patch coming?

joaquinvaz avatar Aug 06 '25 13:08 joaquinvaz

This is still broken, even on 4.7.0 for me.

I had to create a patch following ddkuz instructions (thank you)

What version of RN are you using? For me, this patch in 0.75.5 doesnt work

mannoeu avatar Aug 06 '25 17:08 mannoeu

react-native-vision-camera+4.7.1.patch

use this patch its work in RN 77.2 to 79.2

dheerendraDotsquares avatar Aug 11 '25 14:08 dheerendraDotsquares

react-native-vision-camera+4.7.1.patch

use this patch its work in RN 77.2 to 79.2

Do you have a solution for RN < 0.77.2?

mannoeu avatar Aug 11 '25 16:08 mannoeu

Hii @mannoeu

Please give me more information about your problem, so i can help you

react-native-vision-camera+4.7.1.patch use this patch its work in RN 77.2 to 79.2

Do you have a solution for RN < 0.77.2?

dheerendraDotsquares avatar Aug 12 '25 05:08 dheerendraDotsquares

Hii @mannoeu

Please give me more information about your problem, so i can help you

react-native-vision-camera+4.7.1.patch use this patch its work in RN 77.2 to 79.2

Do you have a solution for RN < 0.77.2?

Hey, I'm experiencing a spike in ANRs reported by androis. While the version of my app that updated the vision camera was in internal validation, we noticed the bugsnag report but we didn't notice any freezes or crashes.

Image Image

Same here using react-native-vision-camera 4.7.1 with frame processors and react-native 0.75.5. In my case it seems to be a silent error, I didn't see the app freeze or crash

java.lang.IllegalStateException: Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module.
        at com.facebook.react.bridge.BridgeReactContext.getJSModule(BridgeReactContext:95)
        at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager:102)
        at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager:74)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask:101)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Threads:

Thread 2 - main - (RUNNABLE)
        at android.os.BinderProxy.transactNative(BinderProxy.java:-2)
        at android.os.BinderProxy.transact(BinderProxy.java:662)
        at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:1570)
        at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:9786)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3884)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3116)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10885)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1301)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1309)
        at android.view.Choreographer.doCallbacks(Choreographer.java:923)
        at android.view.Choreographer.doFrame(Choreographer.java:852)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1283)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8762)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

Thread 7015 - Signal Catcher - (WAITING)
        at unknown method(unknown file)

Thread 7016 - HeapTaskDaemon - (WAITING)
        at unknown method(unknown file)

Thread 7017 - ReferenceQueueDaemon - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.Object.wait(Object.java:543)
        at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:251)
        at java.lang.Daemons$Daemon.run(Daemons.java:131)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7018 - Jit thread pool worker thread 0 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7019 - FinalizerDaemon - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:207)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:228)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:331)
        at java.lang.Daemons$Daemon.run(Daemons.java:131)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7020 - FinalizerWatchdogDaemon - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.Object.wait(Object.java:543)
        at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:464)
        at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:444)
        at java.lang.Daemons$Daemon.run(Daemons.java:131)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7021 - binder:13025_1 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7022 - binder:13025_2 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7024 - binder:13025_3 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7025 - Profile Saver - (RUNNABLE)
        at unknown method(unknown file)

Thread 7027 - queued-work-looper-data - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7028 - WM.task-1 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7029 - Bugsnag IO thread - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7031 - pool-3-thread-1 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1188)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:905)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7032 - Bugsnag Default thread - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
        at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7033 - WM.task-2 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7034 - process reaper - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:401)
        at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:903)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7035 - bugsnag-anr-collector - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7036 - Bugsnag Error thread - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7037 - Bugsnag Session thread - (RUNNABLE)
        at com.android.org.conscrypt.NativeCrypto.X509_verify(NativeCrypto.java:-2)
        at com.android.org.conscrypt.OpenSSLX509Certificate.verifyOpenSSL(OpenSSLX509Certificate.java:378)
        at com.android.org.conscrypt.OpenSSLX509Certificate.verify(OpenSSLX509Certificate.java:408)
        at android.security.net.config.DirectoryCertificateSource$3.match(DirectoryCertificateSource.java:119)
        at android.security.net.config.DirectoryCertificateSource.findCerts(DirectoryCertificateSource.java:157)
        at android.security.net.config.DirectoryCertificateSource.findAllByIssuerAndSignature(DirectoryCertificateSource.java:115)
        at android.security.net.config.SystemCertificateSource.findAllByIssuerAndSignature(SystemCertificateSource.java:27)
        at android.security.net.config.CertificatesEntryRef.findAllCertificatesByIssuerAndSignature(CertificatesEntryRef.java:65)
        at android.security.net.config.NetworkSecurityConfig.findAllCertificatesByIssuerAndSignature(NetworkSecurityConfig.java:146)
        at android.security.net.config.TrustedCertificateStoreAdapter.findAllIssuers(TrustedCertificateStoreAdapter.java:46)
        at com.android.org.conscrypt.TrustManagerImpl.findAllTrustAnchorsByIssuerAndSignature(TrustManagerImpl.java:918)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:551)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:608)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:498)
        at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418)
        at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:346)
        at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
        at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:90)
        at com.android.org.conscrypt.ConscryptEngineSocket$2.checkServerTrusted(ConscryptEngineSocket.java:167)
        at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:282)
        at com.android.org.conscrypt.ConscryptEngine.verifyCertificateChain(ConscryptEngine.java:1635)
        at com.android.org.conscrypt.NativeCrypto.ENGINE_SSL_read_direct(NativeCrypto.java:-2)
        at com.android.org.conscrypt.NativeSsl.readDirectByteBuffer(NativeSsl.java:566)
        at com.android.org.conscrypt.ConscryptEngine.readPlaintextDataDirect(ConscryptEngine.java:1092)
        at com.android.org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:1076)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:873)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:744)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:709)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:902)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.-$$Nest$mprocessDataFromSocket(Unknown)
        at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:240)
        at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:222)
        at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:196)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:153)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:262)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:219)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:30)
        at com.bugsnag.android.DefaultDelivery.makeRequest(DefaultDelivery:134)
        at com.bugsnag.android.DefaultDelivery.deliver(DefaultDelivery:87)
        at com.bugsnag.android.DefaultDelivery.deliver(DefaultDelivery:25)
        at com.bugsnag.android.SessionTracker.deliverSessionPayload(SessionTracker:340)
        at com.bugsnag.android.SessionTracker.deliverInMemorySession(SessionTracker:316)
        at com.bugsnag.android.SessionTracker$2.run(SessionTracker:304)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:487)
        at java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7038 - ConnectivityThread - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7039 - RenderThread - (RUNNABLE)
        at unknown method(unknown file)

Thread 7040 - queued-work-looper-data - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7041 - create_react_context - (RUNNABLE)
        at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(SourceFile:-2)
        at com.facebook.react.bridge.CatalystInstanceImpl.loadScriptFromAssets(CatalystInstanceImpl:239)
        at com.facebook.react.bridge.JSBundleLoader$1.loadScript(JSBundleLoader:27)
        at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl:268)
        at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager:1464)
        at com.facebook.react.ReactInstanceManager.lambda$runCreateReactContextOnNewThread$2(ReactInstanceManager:1161)
        at com.facebook.react.ReactInstanceManager.$r8$lambda$PrBhihCbbAFk4ZReAALGanVLCyc(ReactInstanceManager)
        at com.facebook.react.ReactInstanceManager$$ExternalSyntheticLambda1.run(ReactInstanceManager:4)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7042 - HybridData DestructorThread - (WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:405)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:207)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:228)
        at com.facebook.jni.DestructorThread$1.run(DestructorThread:76)

Thread 7043 - WifiManagerThread - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7045 - pool-4-thread-1 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7046 - DefaultDispatcher-worker-1 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7047 - DefaultDispatcher-worker-2 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7048 - DefaultDispatcher-worker-3 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7049 - DefaultDispatcher-worker-4 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:376)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler:858)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler:806)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler:754)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler:707)

Thread 7050 - OkHttp ConnectionPool - (TIMED_WAITING)
        at java.lang.Object.wait(Object.java:-2)
        at com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:106)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7051 - mrousavy/VisionCamera.video - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7052 - CameraManager - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7053 - pool-6-thread-1 - (TIMED_WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
        at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:401)
        at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:903)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7054 - binder:13025_4 - (RUNNABLE)
        at unknown method(unknown file)

Thread 7055 - mqt_js - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl:235)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7056 - mqt_native_modules - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl:235)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7057 - CameraX-scheduler - (RUNNABLE)
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 7058 - CameraX-core_camera_0 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7059 - CameraX-core_camera_1 - (WAITING)
        at jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3466)
        at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1071)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

Thread 7060 - pool-6-thread-2 - (RUNNABLE)
        at com.facebook.react.bridge.BridgeReactContext.getJSModule(BridgeReactContext:95)
        at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager:102)
        at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager:74)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask:101)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

mannoeu avatar Aug 12 '25 18:08 mannoeu

Hi @mannoeu, Is there any update for React Native versions below 0.77? I’m currently using react-native 0.76.9 with react-native-vision-camera 4.7.1.

R8P avatar Aug 28 '25 09:08 R8P

Hello dear @R8P

I’m still facing this error, I haven’t found the solution

mannoeu avatar Aug 28 '25 15:08 mannoeu

Hi @mannoeu, Is there any update for React Native versions below 0.77? I’m currently using react-native 0.76.9 with react-native-vision-camera 4.7.1.

Currently, downgrade to 4.7.0 is my solution

ngxhuyhoang avatar Sep 03 '25 10:09 ngxhuyhoang

It looks like the issue started here. And there is a PR with a potential fix here.

williamgurzoni avatar Sep 04 '25 05:09 williamgurzoni

I am experiencing a crash when using React Native Vision Camera on Android after upgrading to React Native 0.77.0.

Versions:

react-native: 0.77.0

react-native-vision-camera: ^4.7.1

Play console Logs:

com.facebook.react.bridge.BridgeReactContext.getJSModule java.lang.IllegalStateException

Crashlytics Logs:

BridgeReactContext.getJSModule java.lang.IllegalStateException - Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#get

mohitGraffers avatar Sep 05 '25 06:09 mohitGraffers

Same error here, after dependencies upgrade:

  • react-native: 0.76.9 to 0.77.3

    • New architecture: disabled
  • react-native-vision-camera: 4.6.4 to 4.7.1

EDIT: I only notice this crash when force reload from Metro, pressing "r" EDIT: No problems on iOS

Flipper crash report:

FATAL EXCEPTION: pool-19-thread-2

Unknown

FATAL EXCEPTION: pool-19-thread-2
Process: com.meridianosoft.app, PID: 6797
java.lang.IllegalStateException: Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module.
	at com.facebook.react.bridge.BridgeReactContext.getJSModule(BridgeReactContext.java:97)
	at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager.kt:102)
	at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager.kt:74)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:923)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@ac8c2d9, java.util.concurrent.ThreadPoolExecutor@faf449e[Running, pool size = 2, active threads = 1, queued tasks = 0, completed tasks = 3]]

I am also facing same issue have you found any solution @josegiufrida

mohitGraffers avatar Sep 05 '25 07:09 mohitGraffers

Hi @mannoeu, Is there any update for React Native versions below 0.77? I’m currently using react-native 0.76.9 with react-native-vision-camera 4.7.1.

Currently, downgrade to 4.7.0 is my solution

Are you sure? See changelog between 4.7.0 and 4.7.1 I don’t see any change that makes this issue solved

mannoeu avatar Sep 05 '25 14:09 mannoeu

@mohitGraffers @mannoeu

For me, the solution was downgrade to v4.7.0. I haven't seen any further problems. Development and production.

josegiufrida avatar Sep 05 '25 19:09 josegiufrida

I can't downgrade to 4.7.0 as I'm on RN 0.81 (using old architecture) and 4.7.2 fixed an build issue with RN 0.81. I'll probably try downgrading RN or put more effort in supporting new arch, as I understood this crash only happend on old arch right?

mattijsf avatar Sep 18 '25 10:09 mattijsf

To come back to my previous message. I upgraded to new architecture. Confirmed when running metro:

Running "App" with {"rootTag":1,"initialProps":{},"fabric":true}

"react-native": "0.81.4", "react-native-vision-camera": "4.7.2", "react-native-worklets-core": "1.6.2",

However the app still crashes on start:

SoLoader already initialized Initializing ProcessCameraProvider... Initializing ExtensionsManager... Successfully initialized! FATAL EXCEPTION: pool-26-thread-2 Process: com.xyz.app.development, PID: 26246 java.lang.IllegalStateException: Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module. at com.facebook.react.bridge.BridgeReactContext.getJSModule(BridgeReactContext.java:111) at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager.kt:102) at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager.kt:74) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)

mattijsf avatar Sep 22 '25 10:09 mattijsf

Any updates on this issue? I'm running react-native: 0.74.7 and vision-camera: 4.7.0. I was using 4.7.1 and tried the downgrade, but the issue persists.

Here is the log from Firebase Crashlytics; it is currently affecting ~12% of my user base.

Fatal Exception: java.lang.IllegalStateException: Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module.
       at com.facebook.react.bridge.ReactContext.getJSModule(ReactContext.java:180)
       at com.mrousavy.camera.react.CameraDevicesManager.sendAvailableDevicesChangedEvent(CameraDevicesManager.kt:102)
       at com.mrousavy.camera.react.CameraDevicesManager$1.invokeSuspend(CameraDevicesManager.kt:74)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
       at java.lang.Thread.run(Thread.java:1119)

lukesdias avatar Sep 22 '25 18:09 lukesdias

hey guys, any news regarding this issue? our crashlytics still reporting this, I've tried to reproduce this locally but I can't.

our Sentry also not reporting this crash

Versions:

"react-native": "0.78.3",
"react-native-vision-camera": "^4.6.4"

is upgrading react-native-vision-camera into the latest version will fix it? this issue is happening after we upgrade our react-native from 77 into 78

another question is this a silent crash?

abdymm avatar Oct 06 '25 04:10 abdymm

@abdymm try the patches from here. works for me. https://github.com/mrousavy/react-native-vision-camera/issues/3609

jslok avatar Oct 06 '25 04:10 jslok