react-native-vision-camera: 🐛 `TOO_MANY_OPEN_CAMERAS` error when rendering multiple Cameras
What’s happening?
TOO_MANY_OPEN_CAMERAS
is still thrown with 3.7.0
on Android
Reproduceable Code
Check this repo https://github.com/xseignard/black-screen and navigate between screens
Relevant log output
2024-01-11T11:51:52.930Z 29542 PreviewView Creating PreviewView...
2024-01-11T11:51:52.931Z 29542 PreviewView Content Size: 1920x1080 (0.5625) | Container Size: 0x0 (NaN)
2024-01-11T11:51:52.931Z 29542 PreviewView PreviewView is 0x0, rendering 1920x1080 content. Resizing to: 0x0 (COVER)
2024-01-11T11:51:52.933Z 29542 CameraView Updating CameraSession...
2024-01-11T11:51:52.934Z 29542 CameraSession configure { ... }: Waiting for lock...
2024-01-11T11:51:52.936Z 29542 CameraSession configure { ... }: Updating CameraSession Configuration... Difference(deviceChanged=true, outputsChanged=true, sidePropsChanged=true, isActiveChanged=true)
2024-01-11T11:51:52.936Z 29542 CameraSession isActive is false, skipping CameraDevice configuration.
2024-01-11T11:51:52.936Z 29542 CameraSession isActive is false, skipping CameraCaptureSession configuration.
2024-01-11T11:51:52.936Z 29542 CameraSession Successfully updated CameraSession Configuration! isActive: false
2024-01-11T11:51:53.080Z 29542 CameraView Updating CameraSession...
2024-01-11T11:51:53.081Z 29542 CameraSession configure { ... }: Waiting for lock...
2024-01-11T11:51:53.082Z 29542 CameraSession configure { ... }: Updating CameraSession Configuration... Difference(deviceChanged=true, outputsChanged=true, sidePropsChanged=true, isActiveChanged=true)
2024-01-11T11:51:53.082Z 29542 CameraSession Need to rebuild CameraDevice and CameraCaptureSession...
2024-01-11T11:51:53.083Z 29542 CameraSession Configuring Camera #1...
2024-01-11T11:51:53.083Z 29542 CameraManager Camera #1: Opening...
2024-01-11T11:51:53.086Z 29542 PreviewView Content Size: 1920x1080 (0.5625) | Container Size: 1080x1918 (0.5630865484880083)
2024-01-11T11:51:53.087Z 29542 PreviewView PreviewView is 1080x1918, rendering 1920x1080 content. Resizing to: 1080x1920 (COVER)
2024-01-11T11:51:53.088Z 1969 System.err java.lang.SecurityException: Caller with uid 1047 is not android
2024-01-11T11:51:53.088Z 1969 System.err at com.android.server.devicepolicy.DevicePolicyManagerService.getCallerIdentity(DevicePolicyManagerService.java:2368)
2024-01-11T11:51:53.088Z 1969 System.err at com.android.server.devicepolicy.DevicePolicyManagerService.getCameraDisabled(DevicePolicyManagerService.java:9311)
2024-01-11T11:51:53.088Z 1969 System.err at android.app.admin.DevicePolicyManager.getCameraDisabled(DevicePolicyManager.java:8423)
2024-01-11T11:51:53.088Z 1969 System.err at com.android.server.camera.CameraServiceProxy$2.isCameraDisabled(CameraServiceProxy.java:622)
2024-01-11T11:51:53.088Z 1969 System.err at android.hardware.ICameraServiceProxy$Stub.onTransact(ICameraServiceProxy.java:174)
2024-01-11T11:51:53.088Z 1969 System.err at android.os.Binder.execTransactInternal(Binder.java:1344)
2024-01-11T11:51:53.088Z 1969 System.err at android.os.Binder.execTransact(Binder.java:1275)
2024-01-11T11:51:53.088Z 1645 CameraService CameraService::connect call (PID 29542 "com.xseignard.blackscreen", camera ID 1) and Camera API version 2
2024-01-11T11:51:53.089Z 1645 Camera2ClientBase Camera 1: Opened. Client: com.xseignard.blackscreen (PID 29542, UID 10618)
2024-01-11T11:51:53.089Z 1645 CameraDeviceClient CameraDeviceClient 1: Opened
2024-01-11T11:51:53.089Z 1645 CameraService makeClient: Camera2 API, override to portrait 0
2024-01-11T11:51:53.089Z 1304 GCH_CameraDeviceHwlImpl CreateCameraDeviceSessionHwl CAMERA_LAUNCH 1
2024-01-11T11:51:53.090Z 1304 GCH_HwlResultDispatcher ResultDispatcherHwl: SetRealtimeThread OK
2024-01-11T11:51:53.090Z 1304 GCH_CameraVendorModule ValidateConcurrentOpen: All cameras should be opened before any session is configured.
2024-01-11T11:51:53.090Z 1304 GCH_CameraDeviceSessionHwlImpl DestroyPipelinesLocked Destroying pipelines
2024-01-11T11:51:53.090Z 1304 GCH_HwlResultDispatcher ResultDispatcherThread Result dispatcher thread is existing . . .
2024-01-11T11:51:53.090Z 1304 GCH_CameraDevice CreateCameraDeviceSession: Creating a CameraDeviceSessionHwl failed: Too many users(-87)
2024-01-11T11:51:53.090Z 1304 GCH_AidlCameraDevice open: Creating CameraDeviceSession failed: Too many users(-87)
2024-01-11T11:51:53.090Z 1645 CameraProviderManager openAidlSession: Transaction error opening a session for camera device 1:
2024-01-11T11:51:53.090Z 1645 Camera3-Device Camera 1: initialize: Could not open camera session: Too many users (-87)
2024-01-11T11:51:53.090Z 1645 Camera2ClientBase initializeImpl: Camera 1: unable to initialize device: Too many users (-87)
2024-01-11T11:51:53.090Z 1645 CameraService connectHelper: Could not initialize client from HAL.
2024-01-11T11:51:53.090Z 1645 Camera2ClientBase Camera 1: start to disconnect
2024-01-11T11:51:53.090Z 1645 Camera2ClientBase Camera 1: serializationLock acquired
2024-01-11T11:51:53.090Z 1645 Camera2ClientBase Camera 1: Shutting down
2024-01-11T11:51:53.090Z 1645 Camera2ClientBase Camera 1: start to cacheDump
2024-01-11T11:51:53.099Z 1645 Camera3-Device disconnectImpl: E
2024-01-11T11:51:53.099Z 1645 CameraService disconnect: Disconnected client for camera 1 for PID 29542
2024-01-11T11:51:53.099Z 1645 cameraserver FGS Logger Transaction failed
2024-01-11T11:51:53.099Z 1645 cameraserver -129
2024-01-11T11:51:53.099Z 1645 Camera2ClientBase ~Camera2ClientBase: Client object's dtor for Camera Id 1 completed. Client was: com.xseignard.blackscreen (PID 29542, UID 10618)
2024-01-11T11:51:53.099Z 1645 Camera3-Device disconnectImpl: E
2024-01-11T11:51:53.099Z 3182 HbmSvManager Request state 0 req 1
2024-01-11T11:51:53.100Z 29542 CameraManager Camera #1: Error! 2
2024-01-11T11:51:53.102Z 29542 CameraSession
2024-01-11T11:51:53.102Z 29542 CameraView invokeOnError(...):
2024-01-11T11:51:53.102Z 29542 System.err com.mrousavy.camera.core.CameraCannotBeOpenedError: [session/camera-cannot-be-opened] The given Camera device (id: 1) could not be opened! Error: TOO_MANY_OPEN_CAMERAS
2024-01-11T11:51:53.102Z 29542 System.err at com.mrousavy.camera.extensions.CameraManager_openCameraKt$openCamera$2$callback$1.onError(CameraManager+openCamera.kt:47)
2024-01-11T11:51:53.102Z 29542 System.err at android.hardware.camera2.impl.CameraDeviceImpl$8.run(CameraDeviceImpl.java:385)
2024-01-11T11:51:53.102Z 29542 System.err at android.os.Handler.handleCallback(Handler.java:958)
2024-01-11T11:51:53.102Z 29542 System.err at android.os.Handler.dispatchMessage(Handler.java:99)
2024-01-11T11:51:53.102Z 29542 System.err at android.os.Looper.loopOnce(Looper.java:205)
2024-01-11T11:51:53.102Z 29542 System.err at android.os.Looper.loop(Looper.java:294)
2024-01-11T11:51:53.103Z 29542 System.err at android.os.HandlerThread.run(HandlerThread.java:67)
2024-01-11T11:51:53.106Z 29542 CameraSession PreviewView Surface created! Surface(name=null)/@0xd306005
2024-01-11T11:51:53.106Z 29542 CameraSession Setting Preview Output...
2024-01-11T11:51:53.106Z 29542 CameraSession PreviewView Surface updated! Surface(name=null)/@0xd306005 1080 x 1920
2024-01-11T11:51:53.106Z 29542 CameraSession configure { ... }: Waiting for lock...
2024-01-11T11:51:53.107Z 29542 CameraSession configure { ... }: Updating CameraSession Configuration... Difference(deviceChanged=false, outputsChanged=true, sidePropsChanged=true, isActiveChanged=false)
2024-01-11T11:51:53.107Z 29542 CameraSession isActive is false, skipping CameraCaptureSession configuration.
2024-01-11T11:51:53.107Z 29542 CameraSession Successfully updated CameraSession Configuration! isActive: false
2024-01-11T11:51:53.123Z 29542 ReactNativeJS { [session/camera-cannot-be-opened: [session/camera-cannot-be-opened] The given Camera device (id: 1) could not be opened! Error: TOO_MANY_OPEN_CAMERAS]
name: 'session/camera-cannot-be-opened',
_code: 'session/camera-cannot-be-opened',
_message: '[session/camera-cannot-be-opened] The given Camera device (id: 1) could not be opened! Error: TOO_MANY_OPEN_CAMERAS',
_cause: undefined }
Camera Device
{
"sensorOrientation": "landscape-right",
"hardwareLevel": "full",
"maxZoom": 7,
"minZoom": 0.6150000095367432,
"maxExposure": 24,
"supportsLowLightBoost": false,
"neutralZoom": 1,
"physicalDevices": [
"wide-angle-camera",
"ultra-wide-angle-camera"
],
"supportsFocus": true,
"supportsRawCapture": true,
"isMultiCam": true,
"minExposure": -24,
"name": "BACK (0)",
"hasFlash": true,
"hasTorch": true,
"position": "back",
"id": "0"
}
Device
Pixel 5 (Android 14)
VisionCamera Version
3.7.0
Can you reproduce this issue in the VisionCamera Example app?
I didn’t try (⚠️ your issue might get ignored & closed if you don’t try this)
Related issues
Additional information
- I am using Expo
- I have enabled Frame Processors (react-native-worklets-core)
- I have read the Troubleshooting Guide
- I agree to follow this project’s Code of Conduct
- I searched for similar issues in this repository and found none.
About this issue
- Original URL
- State: closed
- Created 6 months ago
- Comments: 16 (13 by maintainers)
Working on a fix for this issue here: https://github.com/mrousavy/react-native-vision-camera/pull/2494 👀
Still in development, so don’t test yet. Long way to go, this is a really complicated issue (as you can see in the changes/Files of that PR)…
Let’s re-open if the issue still exists!
I’ll try to take another look at this, but the PR closes the session which goes against the Closeable paradigm.