react-native-ble-plx icon indicating copy to clipboard operation
react-native-ble-plx copied to clipboard

🐛 com.bleplx.adapter.BleModule.cleanServicesAndCharacteristicsForDevice outOfBounds

Open scarlettmiss opened this issue 1 year ago • 0 comments

Prerequisites

  • [X] I checked the documentation and FAQ without finding a solution
  • [X] I checked to make sure that this issue has not already been filed

Expected Behavior

the app not to crash and cleanServicesAndCharacteristicsForDevice to be called successfully

Current Behavior

The app is crashig with above error. We havent seen it a lot and we have yet to reproduce on our own. Didn't happen on the v2.x

Library version

3.1.2-rc.0

Device

Galaxy Tab A7, Galaxy Tab S7 FE, Galaxy Tab A8, Galaxy Tab S6 Lite, Galaxy S20 FE 5G, Galaxy Tab A

Environment info

hermesEnabled:true
react native: "0.72.6"

Steps to reproduce

we have not yet reproduced on our side

Formatted code sample or link to a repository

-

Relevant log output

Caused by java.lang.ArrayIndexOutOfBoundsException
Array index out of range: 5
android.util.SparseArray.keyAt (SparseArray.java:317)
com.bleplx.adapter.BleModule.cleanServicesAndCharacteristicsForDevice (BleModule.java:1545)
com.bleplx.adapter.BleModule.onDeviceDisconnected (BleModule.java:1286)
com.bleplx.adapter.BleModule.lambda$safeConnectToDevice$29$com-bleplx-adapter-BleModule (BleModule.java:1273)
com.bleplx.adapter.BleModule$$ExternalSyntheticLambda34.accept (Unknown Source:8)
io.reactivex.internal.observers.LambdaObserver.onError (LambdaObserver.java:77)
io.reactivex.internal.operators.observable.ObservableDoFinally$DoFinallyObserver.onError (ObservableDoFinally.java:85)
io.reactivex.internal.observers.DisposableLambdaObserver.onError (DisposableLambdaObserver.java:65)
io.reactivex.internal.operators.observable.ObservableDoFinally$DoFinallyObserver.onError (ObservableDoFinally.java:85)
io.reactivex.internal.operators.observable.ObservableUnsubscribeOn$UnsubscribeObserver.onError (ObservableUnsubscribeOn.java:70)
io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onError (ObservableSubscribeOn.java:63)
io.reactivex.internal.operators.observable.ObservableDoFinally$DoFinallyObserver.onError (ObservableDoFinally.java:85)
io.reactivex.internal.observers.DisposableLambdaObserver.onError (DisposableLambdaObserver.java:65)
io.reactivex.internal.operators.observable.ObservableDelaySubscriptionOther$DelayObserver$OnComplete.onError (ObservableDelaySubscriptionOther.java:99)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.checkTerminate (ObservableFlatMap.java:496)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop (ObservableFlatMap.java:334)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain (ObservableFlatMap.java:326)
io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver.onError (ObservableFlatMap.java:575)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.checkTerminate (ObservableFlatMap.java:496)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop (ObservableFlatMap.java:334)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain (ObservableFlatMap.java:326)
io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver.onError (ObservableFlatMap.java:575)
io.reactivex.internal.disposables.EmptyDisposable.error (EmptyDisposable.java:63)
io.reactivex.internal.operators.observable.ObservableError.subscribeActual (ObservableError.java:38)
io.reactivex.Observable.subscribe (Observable.java:12284)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.subscribeInner (ObservableFlatMap.java:165)
io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext (ObservableFlatMap.java:139)
io.reactivex.internal.util.NotificationLite.accept (NotificationLite.java:246)
io.reactivex.internal.operators.observable.ObservableReplay$UnboundedReplayBuffer.replay (ObservableReplay.java:553)
io.reactivex.internal.operators.observable.ObservableReplay$ReplayObserver.replay (ObservableReplay.java:401)
io.reactivex.internal.operators.observable.ObservableReplay$ReplayObserver.onNext (ObservableReplay.java:366)
io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onNext (ObservableDoOnEach.java:101)
io.reactivex.internal.operators.observable.ObservableElementAt$ElementAtObserver.onNext (ObservableElementAt.java:86)
com.jakewharton.rxrelay2.BehaviorRelay$BehaviorDisposable.test (BehaviorRelay.java:364)
com.jakewharton.rxrelay2.BehaviorRelay$BehaviorDisposable.emitNext (BehaviorRelay.java:358)
com.jakewharton.rxrelay2.BehaviorRelay.accept (BehaviorRelay.java:135)
com.polidea.rxandroidble2.internal.connection.DisconnectionRouter.onDisconnectedException (DisconnectionRouter.java:110)
com.polidea.rxandroidble2.internal.connection.RxBleGattCallback$2.onConnectionStateChange (RxBleGattCallback.java:81)
android.bluetooth.BluetoothGatt$1$5.run (BluetoothGatt.java:346)
android.bluetooth.BluetoothGatt.runOrQueueCallback (BluetoothGatt.java:964)
android.bluetooth.BluetoothGatt.access$600 (BluetoothGatt.java:48)
android.bluetooth.BluetoothGatt$1.onClientConnectionState (BluetoothGatt.java:341)
android.bluetooth.IBluetoothGattCallback$Stub.onTransact (IBluetoothGattCallback.java:216)
android.os.Binder.execTransactInternal (Binder.java:1220)
android.os.Binder.execTransact (Binder.java:1179)

Additional information

No response

scarlettmiss avatar Nov 21 '23 10:11 scarlettmiss