Closed cristianoccazinsp closed 2 years ago
This crash doesn't come from 1.8.0, line numbers don't match.
Seems like we may be handling tracking pointers incorrectly, given that count
has to be <= 0.
You are right, the version the crash happened is actually 1.6.1
. Although I'm currently using 1.8.
We are getting this crash in production using version 1.7.0
I have found the same issue in production. The crash appeared to be from line 277 of GestureHandler.java.
Still seeing this randomly. There's a chance this is coming from background/foreground interactions.
java.lang.IllegalArgumentException: pointerCount must be at least 1
at android.view.MotionEvent.nativeInitialize(MotionEvent.java:-2)
at android.view.MotionEvent.obtain(MotionEvent.java:1706)
at android.view.MotionEvent.obtain(MotionEvent.java:1752)
at com.swmansion.gesturehandler.GestureHandler.adaptEvent(GestureHandler.java:284)
at com.swmansion.gesturehandler.GestureHandler.handle(GestureHandler.java:309)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler(GestureHandlerOrchestrator.java:301)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.java:259)
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:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:495)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1868)
at android.app.Activity.dispatchTouchEvent(Activity.java:4022)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:453)
at android.view.View.dispatchPointerEvent(View.java:14261)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5903)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5706)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5206)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5172)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5180)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5206)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5172)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5328)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5180)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5385)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5206)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5172)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5180)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8002)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7969)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7930)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8156)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:189)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
at android.os.MessageQueue.next(MessageQueue.java:336)
at android.os.Looper.loop(Looper.java:174)
at android.app.ActivityThread.main(ActivityThread.java:7615)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
I've the same issue in react-native-gesture-handler: 1.8.0
Fatal Exception: java.lang.IllegalArgumentException: pointerCount must be at least 1
at android.view.MotionEvent.nativeInitialize(MotionEvent.java)
at android.view.MotionEvent.obtain(MotionEvent.java:1706)
at android.view.MotionEvent.obtain(MotionEvent.java:1752)
at com.swmansion.gesturehandler.GestureHandler.adaptEvent(GestureHandler.java:284)
at com.swmansion.gesturehandler.GestureHandler.handle(GestureHandler.java:309)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler(GestureHandlerOrchestrator.java:301)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.java:259)
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:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:495)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1868)
at android.app.Activity.dispatchTouchEvent(Activity.java:4022)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:453)
at android.view.View.dispatchPointerEvent(View.java:14261)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5903)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5706)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5206)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5172)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5180)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5206)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5172)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5328)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5180)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5385)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5206)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5172)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5180)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5153)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8002)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7969)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7930)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8156)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:189)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:179)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:8086)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:8180)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1043)
at android.view.Choreographer.doCallbacks(Choreographer.java:866)
at android.view.Choreographer.doFrame(Choreographer.java:794)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1028)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7615)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
I tried debugging this one for a bit and I didn't found much. What we know for sure:
this bug is caused by array mTrackedPointerIDs
being reset – we don't track pointers for the gesture handler when the event generated by it arrives.
I have the same issue for a while now, currently my app is using version 1.8.0, and according to the logs the majority of the crashes are happening on a screen with a mapview (react-native-maps) and on LG stylo devices, the app does not have any custom gesture handlers, we use it because of react-navigation.
Same Issue.
"react-native-gesture-handler": "1.9.0"
stack trace:
java.lang.IllegalArgumentException: pointerCount must be at least 1 at android.view.MotionEvent.nativeInitialize(MotionEvent.java:-2) at android.view.MotionEvent.obtain(MotionEvent.java:1803) at com.swmansion.gesturehandler.GestureHandler.adaptEvent(GestureHandler.java:284) at com.swmansion.gesturehandler.GestureHandler.handle(GestureHandler.java:309) at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler(GestureHandlerOrchestrator.java:301) at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.java:259) at com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent(GestureHandlerOrchestrator.java:101) at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent(RNGestureHandlerRootHelper.java:126) at com.swmansion.gesturehandler.react.RNGestureHandlerRootView.dispatchTouchEvent(RNGestureHandlerRootView.java:63) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:615) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1879) at android.app.Activity.dispatchTouchEvent(Activity.java:3441) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:577) at android.view.View.dispatchPointerEvent(View.java:12880) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5863) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5658) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5151) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5204) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5170) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5307) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5178) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5364) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5151) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5204) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5170) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5178) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5151) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7981) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7921) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7882) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8092) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:198) at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java:-2) at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:187) at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:8055) at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:8119) 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:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:7000) at java.lang.reflect.Method.invoke(Method.java:-2) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
is there any solution for this?
I have found the same issue in production. The crash appeared to be from line 203 of GestureHandler.java.
React Native: 0.61.5 React Native Gesture Handler: 1.6.1 Device Info:: Brand:LGE Model:Stylo 6 Operating System Version:10
is there any solution for this?
I have found the same issue in production
React Native: 0.64.2 React Native Gesture Handler: 1.10.3 Device Info: Samsung SM-A107M Operating System Version:10
` java.lang.IllegalArgumentException: pointerCount must be at least 1
Traceback java.lang.IllegalArgumentException: pointerCount must be at least 1 android.view.MotionEvent.nativeInitialize (MotionEvent.java:-2) android.view.MotionEvent.obtain (MotionEvent.java:1910) android.view.MotionEvent.obtain (MotionEvent.java:2003) com.swmansion.gesturehandler.GestureHandler.adaptEvent (GestureHandler.java:284) com.swmansion.gesturehandler.GestureHandler.handle (GestureHandler.java:309) com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler (GestureHandlerOrchestrator.java:301) com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers (GestureHandlerOrchestrator.java:259) com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent (GestureHandlerOrchestrator.java:101) com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent (RNGestureHandlerRootHelper.java:126) com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView.dispatchTouchEvent (RNGestureHandlerEnabledRootView.java:36) android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863) android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551) android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863) android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551) android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863) android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551) android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863) android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551) android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3885) android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551) com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:733) com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1952) android.app.Activity.dispatchTouchEvent (Activity.java:4038) androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:69) com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:691) android.view.View.dispatchPointerEvent (View.java:14643) android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:6532) android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:6319) android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5757) android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5810) android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5776) android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:5932) android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5784) android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:5989) android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5757) android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5810) android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5776) android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5784) android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5757) android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:8969) android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:8830) android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:8783) android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:9105) android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:194) android.os.MessageQueue.nativePollOnce (MessageQueue.java:-2) android.os.MessageQueue.next (MessageQueue.java:336) android.os.Looper.loop (Looper.java:197) android.app.ActivityThread.main (ActivityThread.java:8019) java.lang.reflect.Method.invoke (Method.java:-2) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)`
Hi Guys, Same issue with LG device on Prod:
Android 10 Device: LG G8X ThinQ
Fatal Exception: java.lang.IllegalArgumentException pointerCount must be at least 1 android.view.MotionEvent.nativeInitialize (MotionEvent.java) android.view.MotionEvent.obtain (MotionEvent.java:1706) android.view.MotionEvent.obtain (MotionEvent.java:1752) com.swmansion.gesturehandler.GestureHandler.adaptEvent (GestureHandler.java:16) com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler (GestureHandlerOrchestrator.java:16) com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers (GestureHandlerOrchestrator.java:16) com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent (GestureHandlerOrchestrator.java:16) com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent (RNGestureHandlerRootHelper.java:16) com.swmansion.gesturehandler.react.RNGestureHandlerRootView.dispatchTouchEvent (RNGestureHandlerRootView.java:11)
Hi @j-piasecki, I have errors with the logs that you implemented in https://github.com/software-mansion/react-native-gesture-handler/pull/1685
I share you 3 logs from different users/devices
react-native: 0.64.2
react-native-gesture-handler: 2.0.0
Android: 9 3705A
Caused by com.swmansion.gesturehandler.GestureHandler$AdaptEventException: handler: RootViewGestureHandler
state: 2
view: com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView{9ce4162 V.E...... ........ 0,0-1080,1998 #1}
orchestrator: com.swmansion.gesturehandler.GestureHandlerOrchestrator@1282049
isEnabled: true
isActive: false
isAwaiting: false
trackedPointersCount: 0
trackedPointers: 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
while handling event: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=1, x[0]=51.951897, y[0]=696.6774, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=33697344, downTime=33682540, deviceId=5, source=0x1002 }
at com.swmansion.gesturehandler.GestureHandler.adaptEvent(GestureHandler.kt:274)
at com.swmansion.gesturehandler.GestureHandler.handle(GestureHandler.kt:307)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler(GestureHandlerOrchestrator.kt:250)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.kt:206)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent(GestureHandlerOrchestrator.kt:44)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent(RNGestureHandlerRootHelper.kt:95)
at com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView.dispatchTouchEvent(RNGestureHandlerEnabledRootView.kt:25)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830)
at android.app.Activity.dispatchTouchEvent(Activity.java:3401)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398)
at android.view.View.dispatchPointerEvent(View.java:12753)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5139)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4942)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4459)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4512)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4478)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4618)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4486)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4675)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4459)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4512)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4478)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4486)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4459)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7134)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7103)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7064)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7237)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:187)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:326)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:6746)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Android: 10 TBD
view
, orchestrator
and trackedPointers
have changes
Caused by com.swmansion.gesturehandler.GestureHandler$AdaptEventException: handler: RootViewGestureHandler
state: 2
view: com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView{2c38100 V.E...... ........ 0,0-480,888 #1}
orchestrator: com.swmansion.gesturehandler.GestureHandlerOrchestrator@5eb6eca
isEnabled: true
isActive: false
isAwaiting: false
trackedPointersCount: 0
trackedPointers: -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1
while handling event: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=1, x[0]=288.39917, y[0]=95.9001, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=182820353, downTime=182820164, deviceId=3, source=0x1002, displayId=0 }
at com.swmansion.gesturehandler.GestureHandler.adaptEvent(GestureHandler.kt:274)
at com.swmansion.gesturehandler.GestureHandler.handle(GestureHandler.kt:307)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler(GestureHandlerOrchestrator.kt:250)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.kt:206)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent(GestureHandlerOrchestrator.kt:44)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent(RNGestureHandlerRootHelper.kt:95)
at com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView.dispatchTouchEvent(RNGestureHandlerEnabledRootView.kt:25)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3116)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2777)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3116)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2777)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3116)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2777)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3116)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2777)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3116)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2777)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:465)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1849)
at android.app.Activity.dispatchTouchEvent(Activity.java:3993)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:423)
at android.view.View.dispatchPointerEvent(View.java:13727)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5661)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5455)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4954)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5007)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4973)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5113)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4981)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5170)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4954)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5007)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4973)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4981)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4954)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7761)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7730)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7681)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7900)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:188)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:336)
at android.os.Looper.loop(Looper.java:174)
at android.app.ActivityThread.main(ActivityThread.java:7386)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
Android: 10
Stylo 6
view
, orchestrator
and trackedPointers
have changes
Caused by com.swmansion.gesturehandler.GestureHandler$AdaptEventException: handler: RootViewGestureHandler
state: 2
view: com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView{3cba0d1 V.E...... ........ 0,0-1080,2406 #1}
orchestrator: com.swmansion.gesturehandler.GestureHandlerOrchestrator@b5033ce
isEnabled: true
isActive: false
isAwaiting: false
trackedPointersCount: 0
trackedPointers: -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1
while handling event: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=162.30432, y[0]=626.8261, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=64145701, downTime=64145521, deviceId=2, source=0x1002, displayId=0 }
at com.swmansion.gesturehandler.GestureHandler.adaptEvent(GestureHandler.kt:274)
at com.swmansion.gesturehandler.GestureHandler.handle(GestureHandler.kt:307)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandler(GestureHandlerOrchestrator.kt:250)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.deliverEventToGestureHandlers(GestureHandlerOrchestrator.kt:206)
at com.swmansion.gesturehandler.GestureHandlerOrchestrator.onTouchEvent(GestureHandlerOrchestrator.kt:44)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.dispatchTouchEvent(RNGestureHandlerRootHelper.kt:95)
at com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView.dispatchTouchEvent(RNGestureHandlerEnabledRootView.kt:25)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:495)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1868)
at android.app.Activity.dispatchTouchEvent(Activity.java:4022)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:453)
at android.view.View.dispatchPointerEvent(View.java:14261)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5900)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5703)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5150)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5203)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5169)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5177)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5150)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5203)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5169)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5325)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5177)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5382)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5150)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5203)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5169)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5177)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5150)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7999)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7966)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7927)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8153)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:189)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:179)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:8083)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:8177)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1049)
at android.view.Choreographer.doCallbacks(Choreographer.java:872)
at android.view.Choreographer.doFrame(Choreographer.java:800)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1034)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7615)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
Hi!
You can fix this by adding
if (count == 0) return event; // Avoid crash in MotionEvent.obtain when count = 0
before
MotionEvent result = MotionEvent.obtain(
event.getDownTime(),
event.getEventTime(),
action,
count,
sPointerProps, /* props are copied and hence it is safe to use static array here */
sPointerCoords, /* same applies to coords */
event.getMetaState(),
event.getButtonState(),
event.getXPrecision(),
event.getYPrecision(),
event.getDeviceId(),
event.getEdgeFlags(),
event.getSource(),
event.getFlags());
event.setLocation(oldX, oldY);
result.setLocation(oldX, oldY);
return result;
In GestureHandler.java
, private MotionEvent adaptEvent(MotionEvent event)
, line 284.
You can use attached patch with patch-package: Just follow setup instructions, unzip attached file and copy into Your project patches
folder (create one if needed).
Thank you so much for your help @thegdznet!
@j-piasecki do you know if the patch of @thegdznet could be affect another thing? Thanks,
This is the fix adapted to react-native-gesture-handler: 2.0.0
(the version that I'm using)
Note: I didn't tested yet!
File: react-native-gesture-handler+2.0.0.patch
Content:
diff --git a/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt b/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt
index 9157bfa..f1137c7 100644
--- a/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt
+++ b/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt
@@ -252,6 +252,10 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
throw IllegalStateException("pointerCoords.size=${pointerCoords.size}, pointerProps.size=${pointerProps.size}")
}
+ if (count == 0) {
+ return event
+ }
+
val result: MotionEvent
try {
result = MotionEvent.obtain(
Hi,
I also commented and replaced code in RNGestureHandlerEnabledRootView
initialize
:
public void initialize() {
/*if (mGestureRootHelper != null) {
throw new IllegalStateException("GestureHandler already initialized for root view " + this);
}*/
if (mGestureRootHelper == null) mGestureRootHelper = new RNGestureHandlerRootHelper(mReactInstanceManager.getCurrentReactContext(), this);
}
And make changes in GestureHandlerOrchestrator
recordViewHandlersForPointer
:
private boolean recordViewHandlersForPointer(View view, float[] coords, int pointerId) {
ArrayList<GestureHandler> handlers = mHandlerRegistry.getHandlersForView(view);
boolean found = false;
int size = (handlers == null) ? 0 : handlers.size();
if (size > 0) {
for (int i = 0; i < size; i++) {
GestureHandler handler = handlers.get(i);
if (handler.isEnabled() && handler.isWithinBounds(view, coords[0], coords[1])) {
recordHandlerIfNotPresent(handler, view);
handler.startTrackingPointer(pointerId);
found = true;
}
}
}
return found;
}
to fix a crash whenhandlers == null.
Thanx++ for Your work...
Regards, Guillaume Droulez Mobile Lead Engineer +33 6 66 18 69 06 @.*** Skype: thegdz.net Twitter: @thegdznet http://www.thegdz-net.com
Le 21 déc. 2021 à 13:33 +0100, Rodolfo @.***>, a écrit :
Thank you so much for your help @thegdznet! @j-piasecki do you know if the patch of @thegdznet could be affect another thing? Thanks, — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you were mentioned.Message ID: @.***>
Hi @j-piasecki, how do you see this fix?
Thank you so much for your help @thegdznet!
@j-piasecki do you know if the patch of @thegdznet could be affect another thing? Thanks,
This is the fix adapted to
react-native-gesture-handler: 2.0.0
(the version that I'm using) Note: I didn't tested yet!File:
react-native-gesture-handler+2.0.0.patch
Content:diff --git a/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt b/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt index 9157bfa..f1137c7 100644 --- a/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +++ b/node_modules/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt @@ -252,6 +252,10 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu throw IllegalStateException("pointerCoords.size=${pointerCoords.size}, pointerProps.size=${pointerProps.size}") } + if (count == 0) { + return event + } + val result: MotionEvent try { result = MotionEvent.obtain(
Hi, sorry for the late reply, I must've missed previous notification. As for this fix, while it will mitigate the crash it may cause gesture handlers to misbehave. One of the things that adaptEvent
method is supposed to do is to filter out the pointers that shouldn't be processed by the specific gesture handler. If it returns the original event, then the handler will receive information about all pointers on the screen at the time, which may cause other issues.
I just wonder why the trackedPointersCount is 0, but trackedPointers still shows 12 pointers?
com.swmansion.gesturehandler.GestureHandler$AdaptEventException: handler: NativeViewGestureHandler
state: 4
view: com.facebook.react.views.scroll.ReactScrollView{ef41886 VFED.V... ........ 0,56-1080,1900 #df}
orchestrator: com.swmansion.gesturehandler.GestureHandlerOrchestrator@23c31d2
isEnabled: true
isActive: true
isAwaiting: false
trackedPointersCount: 0
trackedPointers: -1, 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1
while handling event: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=170.0, y[0]=2124.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=11833993, downTime=11833046, deviceId=3, source=0x1002, displayId=0 }
at com.swmansion.gesturehandler.GestureHandler.adaptEvent(GestureHandler.kt:277)
Hi, sorry for the late reply, I must've missed previous notification. As for this fix, while it will mitigate the crash it may cause gesture handlers to misbehave. One of the things that
adaptEvent
method is supposed to do is to filter out the pointers that shouldn't be processed by the specific gesture handler. If it returns the original event, then the handler will receive information about all pointers on the screen at the time, which may cause other issues.
YES. But we prefer misbehavior than a crash.
YES. But we prefer misbehavior than a crash.
Agree. I would at least give it a try. If the misbehave frequency is the same as crashing, I could accept it.
YES. But we prefer misbehavior than a crash.
Agree. I would at least give it a try. If the misbehave frequency is the same as crashing, I could accept it.
The problem with that approach is that we lose information about the crash. This creates a possibility where we accept invalid event which causes gesture handlers to misbehave - after it gets noticed eventually we'll get an issue report which will be unfixable since it won't link to this issue. I'd like to keep the current invariant. If it crashes your app frequently, then use patch-package to locally patch RNGH. I'll try to debug this issue once more in the following days, I'll keep you updated if I find anything.
I'd be ok with merging a change that mitigates the issue. Seems like there are many people reporting it and no way for us to get a repro. Would suggest to make it so that it still crashes in DEV but not in PROD, this way there is still possibility for us to discover the reason of the crash in the future. Will defer to @j-piasecki for the final resolution
Description
Crash reported by our crash analytics tool. Reason is unknown, but this library shows in the stack trace.
Screenshots
Stack trace:
Steps To Reproduce
Expected behavior
No crash.
Actual behavior
Random crash
Snack or minimal code example
I'm not using the library directly, but rather react-navigation is using it. However, the following code is used for initialization:
index.js
MainActivity.java (as documented in the installation guide)
Package versions