Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Always Crash on Connect #642

Closed
faizalmp opened this issue Dec 11, 2020 · 5 comments
Closed

Always Crash on Connect #642

faizalmp opened this issue Dec 11, 2020 · 5 comments
Labels
Milestone

Comments

@faizalmp
Copy link

I struggled with this error report and get nothing wrong in my code. I implement my socket client in my fragment. I use version 1.0.1 of this library and use version 2.3.0 at my Node.js server.

2020-12-11 17:12:14.567 21432-21557/com.example.myapp E/EventThread: Task threw exception
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
        at io.socket.client.Socket.onevent(Socket.java:337)
        at io.socket.client.Socket.onpacket(Socket.java:289)
        at io.socket.client.Socket.access$100(Socket.java:24)
        at io.socket.client.Socket$2$2.call(Socket.java:120)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.client.Manager.ondecoded(Manager.java:431)
        at io.socket.client.Manager.access$1600(Manager.java:30)
        at io.socket.client.Manager$7.call(Manager.java:407)
        at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
        at io.socket.client.Manager.ondata(Manager.java:423)
        at io.socket.client.Manager.access$1000(Manager.java:30)
        at io.socket.client.Manager$2.call(Manager.java:374)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
        at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
        at io.socket.engineio.client.Socket$5.call(Socket.java:335)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
        at io.socket.engineio.client.Transport.onData(Transport.java:118)
        at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
        at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
        at io.socket.thread.EventThread$2.run(EventThread.java:80)
        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:764)
2020-12-11 17:12:14.570 21432-21557/com.example.myapp E/AndroidRuntime: FATAL EXCEPTION: EventThread
    Process: com.example.myapp, PID: 21432
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
        at io.socket.client.Socket.onevent(Socket.java:337)
        at io.socket.client.Socket.onpacket(Socket.java:289)
        at io.socket.client.Socket.access$100(Socket.java:24)
        at io.socket.client.Socket$2$2.call(Socket.java:120)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.client.Manager.ondecoded(Manager.java:431)
        at io.socket.client.Manager.access$1600(Manager.java:30)
        at io.socket.client.Manager$7.call(Manager.java:407)
        at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
        at io.socket.client.Manager.ondata(Manager.java:423)
        at io.socket.client.Manager.access$1000(Manager.java:30)
        at io.socket.client.Manager$2.call(Manager.java:374)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
        at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
        at io.socket.engineio.client.Socket$5.call(Socket.java:335)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
        at io.socket.engineio.client.Transport.onData(Transport.java:118)
        at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
        at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
        at io.socket.thread.EventThread$2.run(EventThread.java:80)
        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:764)
2020-12-11 17:12:14.578 21432-21558/com.example.myapp E/EventThread: Task threw exception
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
        at io.socket.client.Socket.onevent(Socket.java:337)
        at io.socket.client.Socket.onpacket(Socket.java:289)
        at io.socket.client.Socket.access$100(Socket.java:24)
        at io.socket.client.Socket$2$2.call(Socket.java:120)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.client.Manager.ondecoded(Manager.java:431)
        at io.socket.client.Manager.access$1600(Manager.java:30)
        at io.socket.client.Manager$7.call(Manager.java:407)
        at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
        at io.socket.client.Manager.ondata(Manager.java:423)
        at io.socket.client.Manager.access$1000(Manager.java:30)
        at io.socket.client.Manager$2.call(Manager.java:374)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
        at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
        at io.socket.engineio.client.Socket$5.call(Socket.java:335)
        at io.socket.emitter.Emitter.emit(Emitter.java:117)
        at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
        at io.socket.engineio.client.Transport.onData(Transport.java:118)
        at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
        at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
        at io.socket.thread.EventThread$2.run(EventThread.java:80)
        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:764)
@darrachequesne
Copy link
Member

Hi! Could you please provide the code of your Socket.IO server?

@darrachequesne
Copy link
Member

Update: I could indeed reproduce with the following server code:

io.on('connection', (socket) => {
  socket.emit(null);
});

I'm not sure if it's worth fixing though.

@faizalmp
Copy link
Author

Hi, thank you for replied my issue. I realize It happens when I want to pass JSONArray in the socket message. It works well when I pass JSONObject.

@iagormoraes
Copy link

iagormoraes commented Apr 16, 2021

I realize that the crashes happens when you pass in JSONArray a null value directly, if the array is wrapped in a JSONObject the problem solves.

UPDATE: if you emit from server in the following cases below will throw the exception:

  • socket.emit(null)
  • socket.emit("some_event", [null])
  • socket.emit("some_event", [null, 1, "1", {...}, [..., null]])

darrachequesne added a commit that referenced this issue Apr 26, 2021
This commit should prevent some NPE issues encountered after the
parsing of the packet.

Related:

- #642
- #609
- #505
@darrachequesne
Copy link
Member

For future readers:

This should be fixed in version 2.0.1: e8ffe9d

Please reopen if needed.

@darrachequesne darrachequesne added this to the 2.0.1 milestone Jul 2, 2022
darrachequesne added a commit that referenced this issue Jul 10, 2022
This commit should prevent some NPE issues encountered after the
parsing of the packet.

Related:

- #642
- #609
- #505

Backported from e8ffe9d
darrachequesne added a commit that referenced this issue Jul 10, 2022
This commit should prevent some NPE issues encountered after the
parsing of the packet.

Related:

- #642
- #609
- #505

Backported from e8ffe9d
cedev935 added a commit to cedev935/socket-java that referenced this issue Sep 14, 2023
This commit should prevent some NPE issues encountered after the
parsing of the packet.

Related:

- socketio/socket.io-client-java#642
- socketio/socket.io-client-java#609
- socketio/socket.io-client-java#505
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants