socketio / socket.io-client-java

Full-featured Socket.IO Client Library for Java, which is compatible with Socket.IO v1.0 and later.
https://socketio.github.io/socket.io-client-java/installation.html
Other
5.31k stars 969 forks source link

NullPointerException in Socket.java #727

Closed mega-arbuz closed 1 month ago

mega-arbuz commented 1 year ago

Describe the bug Sometimes there is a crash when trying to connect while there is no connectivity (Android device in airplane mode)

To Reproduce

Please fill the following code example: Line 232 in Socket.java

Socket.IO client version: 2.1.0

Java client

public void run() {
      // remove the ack from the map (to prevent an actual acknowledgement)
      acks.remove(ackId);

      // remove the packet from the buffer (if applicable)
      Iterator<Packet<JSONArray>> iterator = sendBuffer.iterator();
      while (iterator.hasNext()) {
          if (iterator.next().id == ackId) {
              iterator.remove();
          }
      }

      ackWithTimeout.onTimeout();
  }

The crash is happening when accessing iterator.next().id It happened once on an obfuscated build, this is the stacktrace:

ava.lang.NullPointerException: Attempt to read from field 'int io.socket.parser.Packet.b' on a null object reference in method 'void io.socket.client.Socket$6$1.run()'
    at io.socket.client.Socket$6$1.run(SourceFile:4)
    at java.util.TimerThread.mainLoop(Timer.java:563)
    at java.util.TimerThread.run(Timer.java:513)

Expected behavior Failed connection without crashing

Platform:

Additional context Looks like one of the items in the iterator is null

rmirabelle commented 1 year ago
java.lang.NullPointerException · Attempt to read from field 'int io.socket.parser.Packet.id' on a null object reference
Socket.java:232 io.socket.client.Socket$6$1.runTimer.java:562 
java.util.TimerThread.mainLoopTimer.java:512 
java.util.TimerThread.run

Same I think. Unfortunately, the stack trace is so short, I can't determine the source.

Harshvardhan5488 commented 2 months ago

I am Working on an Android Project in Kotlin that uses this library for socket. I am facing the same issue. Is there any fix for it? This crash appears a lot many times.

Please provide any fix or update in the library. Thanks

Here is the stack trace: (io.socket.client.Socket$6$1.run (Socket.java:232)) (Fatal Exception: java.lang.NullPointerException Attempt to read from field 'int io.socket.parser.Packet.id' on a null object reference in method 'void io.socket.client.Socket$6$1.run()')

at io.socket.client.Socket$6$1.run(Socket.java:232) at java.util.TimerThread.mainLoop(Timer.java:563) at java.util.TimerThread.run(Timer.java:513)

darrachequesne commented 1 month ago

This should be fixed by https://github.com/socketio/socket.io-client-java/commit/b00ae8eec1ef0aa5094fca7fad918a437603eb12, included in version 2.1.1.

Please reopen if needed.