viro: Crash on navigation with Android samsung s7 & s9 using react-navigation and react-viro

Environment

Please provide the following information about your environment:

  1. OS: Mac
  2. Platform: Android
  3. Version: ViroReact version 2.9.1 and React Native version 0.55.1
  4. Device(s): Samsung SM-G935F android 7.0 gpu: ARM Mali-T880 MP12 & G960f/ds android 8.0 gpu: ARM Mali-G72 MP18

Description

I’ve created an app using your viro-react package. Its main packages is react-native-maps, react-viro and react-navigation. My main screen is the AR screen in the center tab of my tab-navigator. When i start the app it works like intended and navigation is no problem on IOS. When run the app on android and try to navigate back to the AR screen the app crashes. It seems like android pause/quits the “arSession” and also the camera and is unable to start it again.

I found similar issues but not exactly the same as mine: https://github.com/viromedia/viro/issues/229 https://github.com/viromedia/viro/issues/196

Reproducible Demo

Use any version of react-navigation with tabnavigator. Have ViroArSceneNavigator with a ViroArScene in one tab and some other screen(non AR) in other tab. When you navigate back to ViroArSceneNavigator tab the app crashes.

Logcat SM-G935F:

08-16 14:20:09.002 16264-16269/com.nordvikbolig.nordvikbolig I/art: Compiler allocated 9MB to compile int xn.b(java.lang.Object)
08-16 14:20:11.197 16264-16264/com.nordvikbolig.nordvikbolig D/ViewRootImpl@ad4bb73[MainActivity]: ViewPostImeInputStage processPointer 0
08-16 14:20:11.337 16264-16264/com.nordvikbolig.nordvikbolig D/ViewRootImpl@ad4bb73[MainActivity]: ViewPostImeInputStage processPointer 1
08-16 14:20:11.577 16264-16896/com.nordvikbolig.nordvikbolig D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000,  [1080x1653]-format:1
08-16 14:20:11.578 16264-16896/com.nordvikbolig.nordvikbolig I/Viro: Driver reporting sRGB framebuffer *not* acquired [colorspace 0]
08-16 14:20:11.594 16264-16896/com.nordvikbolig.nordvikbolig E/AndroidRuntime: FATAL EXCEPTION: GLThread 512
    Process: com.nordvikbolig.nordvikbolig, PID: 16264
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.SurfaceHolder android.view.SurfaceView.getHolder()' on a null object reference
        at com.viro.core.ViroViewARCore$ViroARRenderer.onSurfaceCreated(ViroViewARCore.java:229)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1530)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1262)
08-16 14:20:11.652 16264-16264/com.nordvikbolig.nordvikbolig D/ViewRootImpl@ad4bb73[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0
08-16 14:20:11.667 16264-16264/com.nordvikbolig.nordvikbolig D/SensorManager: unregisterListener ::   
08-16 14:20:12.476 16264-16264/com.nordvikbolig.nordvikbolig D/ReactNative: ReactInstanceManager.detachViewFromInstance()
08-16 14:20:12.553 16264-16310/com.nordvikbolig.nordvikbolig W/unknown:ReactNative: StatusBarModule: Ignored status bar change, current activity is null.
08-16 14:20:12.560 16264-16264/com.nordvikbolig.nordvikbolig D/ViewRootImpl@ad4bb73[MainActivity]: dispatchDetachedFromWindow
08-16 14:20:12.575 16264-16264/com.nordvikbolig.nordvikbolig D/InputTransport: Input channel destroyed: fd=64
08-16 14:20:17.655 16264-16273/com.nordvikbolig.nordvikbolig W/unknown:CloseableReference: Finalized without closing: cb2ab97 6254184 (type = CloseableStaticBitmap)

### Logcat SM-G960f/ds:
08-16 14:37:43.741 18989-20643/com.nordvikbolig.nordvikbolig I/native: android_camera.cc:1077 Capture sequence completed.
08-16 14:37:43.741 18989-20049/com.nordvikbolig.nordvikbolig E/ACameraDevice: onDeviceIdle sending state cb
08-16 14:37:43.968 18989-18989/com.nordvikbolig.nordvikbolig I/native: android_camera.cc:1025 Capture session closed for camera 0
08-16 14:37:43.968 18989-20356/com.nordvikbolig.nordvikbolig I/native: cameras.cc:739 Camera changed state from 4 to 1: Capture session finished streaming.
08-16 14:37:44.049 18989-18989/com.nordvikbolig.nordvikbolig I/native: android_camera.cc:627 Reset cleanly got to CLOSED state for camera 0
08-16 14:37:44.049 18989-20356/com.nordvikbolig.nordvikbolig I/native: cameras.cc:739 Camera changed state from 1 to 0: Camera device closed succesfully.
08-16 14:37:44.053 18989-18989/com.nordvikbolig.nordvikbolig V/third_party/redwood/base/jni_common/jni_helper.cc: JniHelper: about to attach thread. (Called from line 54.)
    JniHelper: thread already attached. (Called from line 54.)
08-16 14:37:44.064 18989-18989/com.nordvikbolig.nordvikbolig V/third_party/redwood/base/jni_common/jni_helper.cc: ~JniHelper: did not need to detach thread. (Called from line 54.)
08-16 14:37:44.064 18989-18989/com.nordvikbolig.nordvikbolig I/native: session.cc:656 Session::Pause returning OK.
08-16 14:37:44.069 18989-22376/com.nordvikbolig.nordvikbolig I/native: session_c_api.cc:503 Deleting ArSession...
08-16 14:37:44.077 18989-22376/com.nordvikbolig.nordvikbolig V/third_party/redwood/base/jni_common/jni_helper.cc: JniHelper: about to attach thread. (Called from line 54.)
    JniHelper: thread already attached. (Called from line 54.)
    ~JniHelper: did not need to detach thread. (Called from line 54.)
08-16 14:37:44.088 18989-22376/com.nordvikbolig.nordvikbolig V/third_party/redwood/base/jni_common/jni_helper.cc: JniHelper: about to attach thread. (Called from line 17.)
    JniHelper: thread already attached. (Called from line 17.)
    ~JniHelper: did not need to detach thread. (Called from line 17.)
    JniHelper: about to attach thread. (Called from line 25.)
08-16 14:37:44.088 18989-18989/com.nordvikbolig.nordvikbolig D/AudioTrack: stop() called with 3530304 frames delivered
08-16 14:37:44.088 18989-22376/com.nordvikbolig.nordvikbolig V/third_party/redwood/base/jni_common/jni_helper.cc: JniHelper: thread already attached. (Called from line 25.)
    ~JniHelper: did not need to detach thread. (Called from line 25.)
    JniHelper: about to attach thread. (Called from line 25.)
    JniHelper: thread already attached. (Called from line 25.)
    ~JniHelper: did not need to detach thread. (Called from line 25.)
    JniHelper: about to attach thread. (Called from line 62.)
    JniHelper: thread already attached. (Called from line 62.)
    ~JniHelper: did not need to detach thread. (Called from line 62.)
08-16 14:37:44.089 18989-22376/com.nordvikbolig.nordvikbolig I/native: feature_combo_node.cc:238 Cleared scoped_image buffers in feature_combo.
08-16 14:37:44.092 18989-22376/com.nordvikbolig.nordvikbolig I/native: landmark_associator.cc:16 Total number of unique processed features: 2978
    landmark_associator.cc:20 Number of unique landmarks with at least two measurements: 70
    landmark_associator.cc:22 Total number of landmarks in the map: 70
    landmark_associator.cc:24 Total number of landmark candidates: 2908
08-16 14:37:44.099 18989-18989/com.nordvikbolig.nordvikbolig D/AudioTrack: stop() called with 0 frames delivered
08-16 14:37:44.111 18989-18989/com.nordvikbolig.nordvikbolig D/SensorManager: unregisterListener ::   
08-16 14:37:44.125 18989-18989/com.nordvikbolig.nordvikbolig D/ViewRootImpl@fa18c3f[MainActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=true 3475400704} changed=false
08-16 14:37:44.130 18989-18989/com.nordvikbolig.nordvikbolig V/Surface: sf_framedrop debug : 0x4f4c, game : false, logging : 0
08-16 14:37:44.148 18989-22376/com.nordvikbolig.nordvikbolig I/native: android_camera.cc:627 Reset cleanly got to CLOSED state for camera 1
08-16 14:37:44.149 18989-22376/com.nordvikbolig.nordvikbolig I/native: android_camera.cc:627 Reset cleanly got to CLOSED state for camera 0
08-16 14:37:44.149 18989-22376/com.nordvikbolig.nordvikbolig V/third_party/redwood/base/jni_common/jni_helper.cc: JniHelper: about to attach thread. (Called from line 35.)
    JniHelper: thread already attached. (Called from line 35.)
    ~JniHelper: did not need to detach thread. (Called from line 35.)
08-16 14:37:44.150 18989-22376/com.nordvikbolig.nordvikbolig I/native: session_c_api.cc:505 Deleted ArSession.
08-16 14:37:44.156 18989-22339/com.nordvikbolig.nordvikbolig V/Surface: sf_framedrop debug : 0x4f4c, game : false, logging : 0
08-16 14:37:44.156 18989-22339/com.nordvikbolig.nordvikbolig D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, egl_color_buffer_format *, EGLBoolean) returns 0x3000,  [1080x1809]-format:2
08-16 14:37:44.159 18989-18989/com.nordvikbolig.nordvikbolig I/Choreographer: Skipped 47 frames!  The application may be doing too much work on its main thread.
08-16 14:37:44.393 18989-22319/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:44.393 18989-22319/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:44.666 18989-19846/com.nordvikbolig.nordvikbolig W/OkHttpClient: A connection to http://localhost:8081/ was leaked. Did you forget to close a response body?
08-16 14:37:44.747 18989-19846/com.nordvikbolig.nordvikbolig I/chatty: uid=10221(u0_a221) OkHttp Connecti identical 382 lines
08-16 14:37:44.747 18989-19846/com.nordvikbolig.nordvikbolig W/OkHttpClient: A connection to http://localhost:8081/ was leaked. Did you forget to close a response body?
08-16 14:37:44.848 18989-22321/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:44.849 18989-22321/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:44.882 18989-22322/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.014 18989-18994/com.nordvikbolig.nordvikbolig I/zygote: Do partial code cache collection, code=1011KB, data=711KB
08-16 14:37:45.018 18989-18994/com.nordvikbolig.nordvikbolig I/zygote: After code cache collection, code=1011KB, data=711KB
    Increasing code cache capacity to 3MB
08-16 14:37:45.317 18989-22341/com.nordvikbolig.nordvikbolig W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
08-16 14:37:45.323 18989-22341/com.nordvikbolig.nordvikbolig I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:4
    Selected remote version of com.google.android.gms.googlecertificates, version >= 4
08-16 14:37:45.452 18989-22320/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.453 18989-22320/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.457 18989-22321/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
    (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.461 18989-22319/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.461 18989-22322/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.461 18989-22319/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.461 18989-22322/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.574 18989-22321/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:45.759 18989-22321/com.nordvikbolig.nordvikbolig I/chatty: uid=10221(u0_a221) Thread-66 identical 2 lines
08-16 14:37:45.759 18989-22321/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:46.069 18989-22320/com.nordvikbolig.nordvikbolig I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
    (HTTPLog)-Static: isSBSettingEnabled false
08-16 14:37:58.163 18989-18998/com.nordvikbolig.nordvikbolig W/unknown:CloseableReference: Finalized without closing: 93b0770 b067ae9 (type = CloseableStaticBitmap)
08-16 14:37:58.164 18989-18998/com.nordvikbolig.nordvikbolig W/unknown:CloseableReference: Finalized without closing: 46b836e 8e6aa0f (type = CloseableStaticBitmap)
    Finalized without closing: 8a12a9c 842dca5 (type = CloseableStaticBitmap)
    Finalized without closing: 50687a a6dd82b (type = CloseableStaticBitmap)
    Finalized without closing: 4e45488 299e21 (type = CloseableStaticBitmap)
08-16 14:37:58.165 18989-18998/com.nordvikbolig.nordvikbolig W/unknown:CloseableReference: Finalized without closing: e6c9246 efcc07 (type = CloseableStaticBitmap)
    Finalized without closing: aae3134 160fb5d (type = CloseableStaticBitmap)
    Finalized without closing: 9cf8cd2 6b321a3 (type = CloseableStaticBitmap)
    Finalized without closing: 5972ca0 4b6f059 (type = CloseableStaticBitmap)
08-16 14:38:17.041 18989-18989/com.nordvikbolig.nordvikbolig D/ViewRootImpl@fa18c3f[MainActivity]: ViewPostIme pointer 0
08-16 14:38:17.140 18989-18989/com.nordvikbolig.nordvikbolig D/ViewRootImpl@fa18c3f[MainActivity]: ViewPostIme pointer 1
08-16 14:38:17.261 18989-18989/com.nordvikbolig.nordvikbolig D/ViewRootImpl@fa18c3f[MainActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=true 3475400704} changed=false
08-16 14:38:17.271 18989-18989/com.nordvikbolig.nordvikbolig D/SurfaceView: BG show() Surface(name=Background for - SurfaceView - com.nordvikbolig.nordvikbolig/com.nordvikbolig.nordvikbolig.MainActivity@2aee875@1) android.opengl.GLSurfaceView{2aee875 V.E...... ........ 0,0-1080,1809}
08-16 14:38:17.272 18989-18989/com.nordvikbolig.nordvikbolig V/Surface: sf_framedrop debug : 0x4f4c, game : false, logging : 0
08-16 14:38:17.272 18989-18989/com.nordvikbolig.nordvikbolig D/SurfaceView: surfaceCreated 1 android.opengl.GLSurfaceView{2aee875 V.E...... ........ 0,0-1080,1809}
    surfaceChanged (1080,1809) 1 android.opengl.GLSurfaceView{2aee875 V.E...... ........ 0,0-1080,1809}
08-16 14:38:17.280 18989-24108/com.nordvikbolig.nordvikbolig D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, egl_color_buffer_format *, EGLBoolean) returns 0x3000,  [1080x1809]-format:1
08-16 14:38:17.281 18989-24108/com.nordvikbolig.nordvikbolig I/Viro: Driver reporting sRGB framebuffer *not* acquired [colorspace 0]
    
    --------- beginning of crash
08-16 14:38:17.283 18989-24108/com.nordvikbolig.nordvikbolig E/AndroidRuntime: FATAL EXCEPTION: GLThread 599
    Process: com.nordvikbolig.nordvikbolig, PID: 18989
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.SurfaceHolder android.opengl.GLSurfaceView.getHolder()' on a null object reference
        at com.viro.core.ViroViewARCore$ViroARRenderer.onSurfaceCreated(ViroViewARCore.java:229)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1539)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1270)
08-16 14:38:17.302 18989-18989/com.nordvikbolig.nordvikbolig D/SensorManager: unregisterListener ::   
08-16 14:38:17.342 18989-18989/com.nordvikbolig.nordvikbolig D/ViewRootImpl@fa18c3f[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0
08-16 14:38:17.558 18989-18989/com.nordvikbolig.nordvikbolig D/SurfaceView: BG show() Surface(name=Background for - SurfaceView - com.nordvikbolig.nordvikbolig/com.nordvikbolig.nordvikbolig.MainActivity@2aee875@1) android.opengl.GLSurfaceView{2aee875 V.E...... ........ 0,0-1080,1809}
08-16 14:38:17.559 18989-18989/com.nordvikbolig.nordvikbolig D/SurfaceView: surfaceDestroyed 1 android.opengl.GLSurfaceView{2aee875 V.E...... ........ 0,0-1080,1809}
08-16 14:38:17.560 18989-18989/com.nordvikbolig.nordvikbolig D/SurfaceView: BG destroy() Surface(name=Background for - SurfaceView - com.nordvikbolig.nordvikbolig/com.nordvikbolig.nordvikbolig.MainActivity@2aee875@1) android.opengl.GLSurfaceView{2aee875 V.E...... ........ 0,0-1080,1809}
08-16 14:38:17.576 18989-19015/com.nordvikbolig.nordvikbolig D/OpenGLRenderer: eglDestroySurface = 0xe2e1bbb0
08-16 14:38:17.581 18989-18989/com.nordvikbolig.nordvikbolig D/ViewRootImpl@fa18c3f[MainActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x5 surface={valid=false 0} changed=true
08-16 14:38:17.941 18989-18989/com.nordvikbolig.nordvikbolig D/ReactNative: ReactInstanceManager.detachViewFromInstance()
08-16 14:38:18.043 18989-19368/com.nordvikbolig.nordvikbolig W/unknown:ReactNative: StatusBarModule: Ignored status bar change, current activity is null.
08-16 14:38:18.047 18989-18989/com.nordvikbolig.nordvikbolig D/ViewRootImpl@fa18c3f[MainActivity]: dispatchDetachedFromWindow
08-16 14:38:18.047 18989-18989/com.nordvikbolig.nordvikbolig D/InputEventReceiver: channel '896afcb com.nordvikbolig.nordvikbolig/com.nordvikbolig.nordvikbolig.MainActivity (client)' ~ Disposing input event receiver.
    channel '896afcb com.nordvikbolig.nordvikbolig/com.nordvikbolig.nordvikbolig.MainActivity (client)' ~NativeInputEventReceiver.
08-16 14:38:19.537 18989-18998/com.nordvikbolig.nordvikbolig W/unknown:CloseableReference: Finalized without closing: 3e237ab d89fe08 (type = CloseableStaticBitmap)

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 1
  • Comments: 15

Most upvoted comments

Good news! I’m trying with createBottomTabNavigator and react-navigation. In TabNavigator, I’m set

unmountOnBlur: true

crash is gone. Hope this help! 😃

Setting tabBarPosition: 'bottom' on createMaterialTopTabNavigator also works on my codebase.

Thank you so much for your time and helping me finding the root of this problem!