crisp-im / crisp-sdk-android

:package: Crisp Android SDK, add a chat in any Android app and communicate with your users.
https://docs.crisp.chat/guides/chatbox-sdks/android-sdk/
Other
56 stars 17 forks source link

java.lang.ArrayIndexOutOfBoundsException #121

Closed kakarrot closed 2 years ago

kakarrot commented 2 years ago

Crash logs

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=1; index=-1
       at java.util.ArrayList.remove(ArrayList.java:506)
       at im.crisp.client.internal.b.a.$r8$lambda$EVOn-c3s5QRpjwX48pzuZqCG32M(a.java:52)
       at im.crisp.client.internal.f.b.a(b.java:669)
       at im.crisp.client.internal.f.b.a(b.java:1)
       at im.crisp.client.internal.f.a.$r8$lambda$0twJuw9WgM4yewfdsLTkXu5dkVo(a.java:27)
       at im.crisp.client.internal.f.a.$r8$lambda$0twJuw9WgM4yewfdsLTkXu5dkVo(a.java:3)
       at im.crisp.client.internal.f.a.$r8$lambda$7WH2Gq-4pww6FTnjmzNmv736F-s(a.java:244)
       at im.crisp.client.internal.f.a.$r8$lambda$w4nJ1p_lUgd3GMB4Dj8YWnSJ_dI(a.java:18)
       at im.crisp.client.internal.f.a.$r8$lambda$0twJuw9WgM4yewfdsLTkXu5dkVo(a.java)
       at im.crisp.client.internal.f.a$$InternalSyntheticLambda$0$b65b69a395d3b30551e5f1188667f3dfb0fdfb04a3569291f5654fbed7edda4b$16.call$bridge(a.java:14)
       at io.socket.emitter.Emitter.emit(Emitter.java:26)
       at io.socket.client.Socket.onevent(Socket.java:2)
       at io.socket.client.Socket.onpacket(Socket.java:1)
       at io.socket.client.Socket$2$2.call(Socket.java:9)
       at io.socket.emitter.Emitter.emit(Emitter.java:26)
       at io.socket.client.Manager.ondecoded(Manager.java:2)
       at io.socket.client.Manager$5.call(Manager.java:2)
       at io.socket.parser.IOParser$Decoder.add(IOParser.java:8)
       at io.socket.client.Manager$2.call(Manager.java:2)
       at io.socket.emitter.Emitter.emit(Emitter.java:26)
       at io.socket.engineio.client.Socket.onPacket(Socket.java:1)
       at io.socket.engineio.client.Socket$5.call(Socket.java:1)
       at io.socket.emitter.Emitter.emit(Emitter.java:26)
       at io.socket.engineio.client.Transport.onPacket(Transport.java:8)
       at io.socket.engineio.client.Transport.onData(Transport.java:2)
       at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:2)
       at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:2)
       at io.socket.thread.EventThread$2.run(EventThread.java:3)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:919)

Information

OS Version : Android 10/12
Phones : realme 2 Pro / Redmi Note 10 Pro
SDK Version : 1.0.11
Doc1faux commented 2 years ago

Hi @kakarrot and thank you for your feedback.

This crash seems to be caused by a concurrency issue on cache... I've just qualified every cache method called externally (only some were) and added an index > -1 check just to be sure that the item exists before deleting it...

It will be released in the next 1.0.12. I let you know when it will be available.

Doc1faux commented 2 years ago

@kakarrot 1.0.12 fixing this issue has just been released. It can take a few hours before it will be available. I close the issue.