React-native-gesture-handler: Android crash

Created on 19 Jan 2019  Â·  11Comments  Â·  Source: software-mansion/react-native-gesture-handler

Issue Description

Hello, I really like your library, but sometimes it has crash on production. Can you help me please?

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.swmansion.gesturehandler.GestureHandler.wantEvents()' on a null object reference
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler(GestureHandlerOrchestrator.java:293)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.java:262)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent(GestureHandlerOrchestrator.java:102)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent(RNGestureHandlerRootHelper.java:121)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootView.dispatchTouchEvent(RNGestureHandlerRootView.java:36)

Environment

  • React Native Gesture Handler version: 1.0.12
  • React Native version: 0.57.8
  • Platform: Android
  • Device info : Samsung Galaxy S7, production mode.

Most helpful comment

@osdnk I have same issue with react-native-gesture-handler 1.6.0 and react-native 0.61.5

Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'boolean com.swmansion.gesturehandler.GestureHandler.mIsActive' on a null object reference
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator$1.compare(GestureHandlerOrchestrator.java:33)
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator$1.compare(GestureHandlerOrchestrator.java:30)
       at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
       at java.util.TimSort.sort(TimSort.java:220)
       at java.util.Arrays.sort(Arrays.java:1498)
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.java:257)
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent(GestureHandlerOrchestrator.java:101)
       at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent(RNGestureHandlerRootHelper.java:126)
       at com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView.dispatchTouchEvent(RNGestureHandlerEnabledRootView.java:36)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:601)
       at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1871)
       at android.app.Activity.dispatchTouchEvent(Activity.java:3384)
       at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
       at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:563)
       at android.view.View.dispatchPointerEvent(View.java:12791)
       at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5668)
       at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5463)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4956)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5009)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4975)
       at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5112)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4983)
       at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5169)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4956)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5009)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4975)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4983)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4956)
       at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7734)
       at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7674)
       at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7635)
       at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7845)
       at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:197)
       at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java)
       at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:186)
       at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:7808)
       at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:7872)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
       at android.view.Choreographer.doCallbacks(Choreographer.java:723)
       at android.view.Choreographer.doFrame(Choreographer.java:652)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
       at android.os.Handler.handleCallback(Handler.java:789)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6944)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

All 11 comments

@VasilenkoVladislav can you create a repo with Minimal, Complete, and Verifiable example, where your issue can easily be reproduced, please?

I think this issue has been resolved in new release. If not, please let me now.

Hello, I had the same crash in production with the new release

Description

NullPointerException - Attempt to invoke virtual method 'android.view.View com.swmansion.gesturehandler.GestureHandler.getView()' on a null object reference

com.swmansion.gesturehandler.GestureHandlerOrchestrator in deliverEventToGestureHandler at line 279
com.swmansion.gesturehandler.GestureHandlerOrchestrator in deliverEventToGestureHandlers at line 259
com.swmansion.gesturehandler.GestureHandlerOrchestrator in onTouchEvent at line 101
com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper in dispatchTouchEvent at line 121
com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView in dispatchTouchEvent at line 31
android.view.ViewGroup in dispatchTransformedTouchEvent at line 2677

Environment

  • RNGH: 1.1.0
  • RN: 0.57.8
  • Plateform: Android
  • Device info: Elite 4T, Android 7.0

I'm getting the same crash in production. I'm using version 1.3.0
(react-native 0.59.10)

Has this issue been resolved?
My app crashes in the release version but runs perfectly on an emulator.

Not resolved. Running latest version of gesture handler and react native. Yet, it still breaks.

Hello, I had the same crash in production with the new release

Description

NullPointerException - Attempt to invoke virtual method 'android.view.View com.swmansion.gesturehandler.GestureHandler.getView()' on a null object reference

com.swmansion.gesturehandler.GestureHandlerOrchestrator in deliverEventToGestureHandler at line 279
com.swmansion.gesturehandler.GestureHandlerOrchestrator in deliverEventToGestureHandlers at line 259
com.swmansion.gesturehandler.GestureHandlerOrchestrator in onTouchEvent at line 101
com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper in dispatchTouchEvent at line 121
com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView in dispatchTouchEvent at line 31
android.view.ViewGroup in dispatchTransformedTouchEvent at line 2677

Environment

  • RNGH: 1.1.0
  • RN: 0.57.8
  • Plateform: Android
  • Device info: Elite 4T, Android 7.0

I solved this problem using patch-package.

    private void deliverEventToGestureHandler(GestureHandler handler, MotionEvent event) {
+    if (handler == null) {
+      return;
+    }
     if (!isViewAttachedUnderWrapper(handler.getView())) {
       handler.cancel();
       return;

@kmagiera @osdnk Is this path include in the new version? I got the same error with the latest version!

@osdnk I have same issue with react-native-gesture-handler 1.6.0 and react-native 0.61.5

Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'boolean com.swmansion.gesturehandler.GestureHandler.mIsActive' on a null object reference
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator$1.compare(GestureHandlerOrchestrator.java:33)
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator$1.compare(GestureHandlerOrchestrator.java:30)
       at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
       at java.util.TimSort.sort(TimSort.java:220)
       at java.util.Arrays.sort(Arrays.java:1498)
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.java:257)
       at com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent(GestureHandlerOrchestrator.java:101)
       at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent(RNGestureHandlerRootHelper.java:126)
       at com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView.dispatchTouchEvent(RNGestureHandlerEnabledRootView.java:36)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844)
       at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:601)
       at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1871)
       at android.app.Activity.dispatchTouchEvent(Activity.java:3384)
       at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
       at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:563)
       at android.view.View.dispatchPointerEvent(View.java:12791)
       at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5668)
       at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5463)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4956)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5009)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4975)
       at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5112)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4983)
       at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5169)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4956)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5009)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4975)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4983)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4956)
       at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7734)
       at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7674)
       at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7635)
       at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7845)
       at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:197)
       at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java)
       at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:186)
       at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:7808)
       at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:7872)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
       at android.view.Choreographer.doCallbacks(Choreographer.java:723)
       at android.view.Choreographer.doFrame(Choreographer.java:652)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
       at android.os.Handler.handleCallback(Handler.java:789)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6944)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Hey @EugeneDraitsev – judging by the stacktrace it seem to be a different issue. Mind making a small reproducable demo of the crash and opening a new issue for it?

@kmagiera that would be great!

Was this page helpful?
0 / 5 - 0 ratings