Rapsssito / react-native-tcp-socket

React Native TCP socket API for Android, iOS & macOS with SSL/TLS support.
MIT License
315 stars 80 forks source link

Occasional App crash: [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0] #197

Open westofpluto opened 1 month ago

westofpluto commented 1 month ago

Fatal Exception: NSInvalidArgumentException: [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]

This happens in line 191 of TcpSockets.m, called from line 476 in TcpCocketClient.m. My server is a plain old TCP socket server, no TLS.

It is a bug reported by crashlytics so a user experienced this, but I have not been able to reproduce

Specs: iPhone 13 iOS 17.5.1 RN version: 0.69.6 react-native-tcp-sockets: 6.0.6

I notice in TcpSocket.m that you get socket from: GCDAsyncSocket *socket = [client getSocket]; But then you never check to see if it is null. It would best to check for null and if null, send another event to indicate a null socket so that the JS/TS code can respond to that as an error rather than allowing it to crash the app. Of course, I am just guessing here, maybe the socket is ok but its properties are bad? I don't know. In any case, is there any workaround to prevent the app from crashing?