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

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

Open
westofpluto opened this issue Jul 17, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@westofpluto
Copy link

westofpluto commented Jul 17, 2024

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?

@westofpluto westofpluto added the bug Something isn't working label Jul 17, 2024
@landabaso
Copy link

Same. Adding some more traces in case it helps. I will try to figure out what happens but is hard since it's kind of random and hard to reproduce:

[CoreFoundation] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(
0   CoreFoundation                      0x00000001804ae0f8 __exceptionPreprocess + 172
1   libobjc.A.dylib                     0x0000000180087db4 objc_exception_throw + 56
2   CoreFoundation                      0x000000018051c84c -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 660
3   CoreFoundation                      0x00000001804ac9cc +[NSDictionary dictionaryWithObjects:forKeys:count:] + 48
4   XXXXX.debug.dylib           0x0000000105f716f0 -[TcpSockets onConnect:] + 512
5   XXXXX.debug.dylib           0x0000000105f6ffc8 -[TcpSocketClient socket:didConnectToHost:port:] + 236
6   XXXXX.debug.dylib           0x0000000105191f6c __29-[GCDAsyncSocket didConnect:]_block_invoke_3 + 64
7   libdispatch.dylib                   0x00000001<…>

@landabaso
Copy link

landabaso commented Oct 29, 2024

I’ve been reviewing various forks of this repository to identify fixes implemented on other branches. See this one: cb7eb99

Without a deep familiarity with this repo’s codebase, could this potentially resolve the issue, @Rapsssito ?

EDIT: I've patch-packaged the package with this fix and have not been able to reproduce the crash so far.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants