crossbario / autobahn-java

WebSocket & WAMP in Java for Android and Java 8
https://crossbar.io/autobahn
MIT License
1.52k stars 427 forks source link

IllegalStateException: Attempted to take ownership of already-owned FileDescriptor #539

Closed cuijianzhi closed 1 year ago

cuijianzhi commented 1 year ago

when re-create connection after fail connection [code = 3, reason = WebSockets connection lost]. on Android platform.

08-29 18:46:58.968 20431 22158 E AndroidRuntime: FATAL EXCEPTION: WebSocketConnector:MOTION_SENSOR,1661769702609
--
10008-29 18:46:58.968 20431 22158 E AndroidRuntime: Process: com.xxx.xxx, PID: 20431
10108-29  18:46:58.968 20431 22158 E AndroidRuntime:  java.lang.IllegalStateException: Attempted to take ownership of  already-owned FileDescriptor
10208-29 18:46:58.968 20431 22158 E AndroidRuntime:     at libcore.io.IoUtils.setFdOwner(IoUtils.java:137)
10308-29 18:46:58.968 20431 22158 E AndroidRuntime:     at java.net.PlainSocketImpl.socketCreate(PlainSocketImpl.java:129)
10408-29 18:46:58.968 20431 22158 E AndroidRuntime:     at java.net.AbstractPlainSocketImpl.create(AbstractPlainSocketImpl.java:128)
10508-29 18:46:58.968 20431 22158 E AndroidRuntime:     at java.net.Socket.createImpl(Socket.java:490)
10608-29 18:46:58.968 20431 22158 E AndroidRuntime:     at java.net.Socket.getImpl(Socket.java:553)
10708-29 18:46:58.968 20431 22158 E AndroidRuntime:     at java.net.Socket.setSoTimeout(Socket.java:1190)
10808-29  18:46:58.968 20431 22158 E AndroidRuntime:    at  com.android.org.conscrypt.AbstractConscryptSocket.setSoTimeout(AbstractConscryptSocket.java:264)
10908-29  18:46:58.968 20431 22158 E AndroidRuntime:    at  com.websocket.WebSocketConnection$WebSocketConnector.run(WebSocketConnection.java:189)
cuijianzhi commented 1 year ago

It's my fault.The usage is not correct, multiple threads create the same WebConnection instance at the same time.