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

iOS 14 Only attempt to insert nil object from objects[0] #29970

Closed
sergey-g-s opened this issue Sep 17, 2020 · 1 comment
Closed

iOS 14 Only attempt to insert nil object from objects[0] #29970

sergey-g-s opened this issue Sep 17, 2020 · 1 comment
Labels
Needs: Triage 🔍 Platform: iOS iOS applications. Resolution: Locked This issue was locked by the bot.

Comments

@sergey-g-s
Copy link

sergey-g-s commented Sep 17, 2020

Hi all. This is a problem that I only got on devices with iOS 14.

Description

My project worked well on iOS 13 and after I tried to run it on iOS 14 I always get an error in xcode

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'

React Native version:

System:
    OS: macOS 11.0
    CPU: (4) x64 Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
    Memory: 65.82 MB / 8.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 10.16.1 - ~/.nvm/versions/node/v10.16.1/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.9.0 - ~/.nvm/versions/node/v10.16.1/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.9.3 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 14.0, DriverKit 20.0, macOS 11.0, tvOS 14.0, watchOS 7.0
    Android SDK: Not Found
  IDEs:
    Android Studio: Not Found
    Xcode: 12.0/12A8189h - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_252 - /usr/bin/javac
    Python: 2.7.16 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.13.1 => 16.13.1 
    react-native: 0.63.2 => 0.63.2 
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Expected Results

I want to find the cause of the problem

Log:

2020-09-17 15:23:46.876152+0300 MYAPP[4143:493632] <Warning>: Please set a value for FacebookAutoLogAppEventsEnabled. Set the flag to TRUE if you want to collect app install, app launch and in-app purchase events automatically. To request user consent before collecting data, set the flag value to FALSE, then change to TRUE once user consent is received. Learn more: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events.
    2020-09-17 15:23:46.877416+0300 MYAPP[4143:493632] <Warning>: You haven't set a value for FacebookAdvertiserIDCollectionEnabled. Set the flag to TRUE if you want to collect Advertiser ID for better advertising and analytics results.
2020-09-17 15:24:47.234399+0300 MYAPP[4143:493866] Task <3B7D3C61-B3E5-4E92-B884-E98B86FF97E9>.<1> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x2822729d0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <3B7D3C61-B3E5-4E92-B884-E98B86FF97E9>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <3B7D3C61-B3E5-4E92-B884-E98B86FF97E9>.<1>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=http://192.168.0.105:8081/status, NSErrorFailingURLKey=http://192.168.0.105:8081/status, _kCFStreamErrorDomainKey=4}
2020-09-17 15:24:47.256281+0300 MYAPP[4143:493632] [native] Running application MYAPP ({
initialProps =     {
};
rootTag = 1;
})
2020-09-17 15:24:47.268978+0300 MYAPP[4143:493881] 6.25.0 - [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) to your application initialization. Read more: https://goo.gl/ctyzm8.
2020-09-17 15:24:47.312992+0300 MYAPP[4143:493866] 6.25.0 - [Firebase/Messaging][I-FCM001000] FIRMessaging Remote Notifications proxy enabled, will swizzle remote notification receiver handlers. If you'd prefer to manually integrate Firebase Messaging, add "FirebaseAppDelegateProxyEnabled" to your Info.plist, and set it to NO. Follow the instructions at:
https://firebase.google.com/docs/cloud-messaging/ios/client#method_swizzling_in_firebase_messaging
to ensure proper integration.
2020-09-17 15:24:47.317115+0300 MYAPP[4143:493866] 6.25.0 - [Firebase/Analytics][I-ACS031025] Analytics screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable screen reporting, set the flag FirebaseScreenReportingEnabled to NO (boolean) in the Info.plist
2020-09-17 15:24:47.340982+0300 MYAPP[4143:493866] 6.25.0 - [Firebase/Analytics][I-ACS023007] Analytics v.60501000 started
2020-09-17 15:24:47.341770+0300 MYAPP[4143:493866] 6.25.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see http://goo.gl/RfcP7r)
2020-09-17 15:24:47.410764+0300 MYAPP[4143:493992] [Client] Updating selectors after delegate removal failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 88 named com.apple.commcenter.coretelephony.xpc was invalidated from this process." UserInfo={NSDebugDescription=The connection to service on pid 88 named com.apple.commcenter.coretelephony.xpc was invalidated from this process.}
2020-09-17 15:24:47.429141+0300 MYAPP[4143:493632] FBSDKLog: fb-messenger-share-api is missing from your Info.plist under LSApplicationQueriesSchemes and is required for iOS 9.0
2020-09-17 15:24:47.429431+0300 MYAPP[4143:493632] FBSDKLog: fbauth2 is missing from your Info.plist under LSApplicationQueriesSchemes and is required for iOS 9.0
2020-09-17 15:24:47.431858+0300 MYAPP[4143:493881] [tcp] tcp_input [C2.1:3] flags=[R] seq=2910663435, ack=0, win=0 state=CLOSED rcv_nxt=2910663435, snd_una=2084476413
2020-09-17 15:24:47.432180+0300 MYAPP[4143:493881] [tcp] tcp_input [C2.1:3] flags=[R] seq=2910663435, ack=0, win=0 state=CLOSED rcv_nxt=2910663435, snd_una=2084476413
2020-09-17 15:24:47.436111+0300 MYAPP[4143:493632] FBSDKLog: starting with Graph API v2.4, GET requests for /195739114824780/model_asset should contain an explicit "fields" parameter
2020-09-17 15:24:47.471741+0300 MYAPP[4143:493881] [tcp] tcp_input [C1.1:3] flags=[R] seq=2629399053, ack=0, win=0 state=CLOSED rcv_nxt=2629399053, snd_una=3107602082
2020-09-17 15:24:47.471909+0300 MYAPP[4143:493881] [tcp] tcp_input [C1.1:3] flags=[R] seq=2629399053, ack=0, win=0 state=CLOSED rcv_nxt=2629399053, snd_una=3107602082
2020-09-17 15:24:47.572210+0300 MYAPP[4143:494213] 6.25.0 - [Firebase/Analytics][I-ACS800023] No pending snapshot to activate. SDK name: app_measurement
2020-09-17 15:25:07.703378+0300 MYAPP[4143:494224] [tcp] tcp_output [C14.1:3] flags=[R.] seq=912352729, ack=2533363381, win=4096 state=CLOSED rcv_nxt=2533363381, snd_una=912352729
2020-09-17 15:25:07.705428+0300 MYAPP[4143:494224] Connection 14: received failure notification
2020-09-17 15:25:07.705746+0300 MYAPP[4143:494224] Connection 14: failed to connect 3:-9816, reason -1
2020-09-17 15:25:07.705837+0300 MYAPP[4143:494224] Connection 14: encountered error(3:-9816)
2020-09-17 15:25:18.335269+0300 MYAPP[4143:494219] [tcp] tcp_output [C15.1:3] flags=[R.] seq=2353633686, ack=248484103, win=4096 state=CLOSED rcv_nxt=248484103, snd_una=2353633686
2020-09-17 15:25:18.338275+0300 MYAPP[4143:494219] Connection 15: received failure notification
2020-09-17 15:25:18.339071+0300 MYAPP[4143:494219] Connection 15: failed to connect 3:-9816, reason -1
2020-09-17 15:25:18.340516+0300 MYAPP[4143:494219] Connection 15: encountered error(3:-9816)
2020-09-17 15:25:18.416619+0300 MYAPP[4143:494224] [boringssl] boringssl_context_handle_fatal_alert(1763) [C17.1:2][0x10720d610] read alert, level: fatal, description: inappropriate fallback
2020-09-17 15:25:18.418166+0300 MYAPP[4143:494224] [boringssl] boringssl_session_handshake_incomplete(90) [C17.1:2][0x10720d610] SSL library error
2020-09-17 15:25:18.418648+0300 MYAPP[4143:494224] [boringssl] boringssl_session_handshake_error_print(41) [C17.1:2][0x10720d610] Error: 4360096920:error:1000043e:SSL routines:OPENSSL_internal:TLSV1_ALERT_INAPPROPRIATE_FALLBACK:/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-351.0.1/ssl/tls_record.cc:592:SSL alert number 86
2020-09-17 15:25:18.419022+0300 MYAPP[4143:494224] [boringssl] nw_protocol_boringssl_handshake_negotiate_proceed(761) [C17.1:2][0x10720d610] handshake failed at state 12288: not completed
2020-09-17 15:25:18.423447+0300 MYAPP[4143:494224] Connection 17: received failure notification
2020-09-17 15:25:18.424619+0300 MYAPP[4143:494224] Connection 17: failed to connect 3:-9860, reason -1
2020-09-17 15:25:18.424861+0300 MYAPP[4143:494224] Connection 17: encountered error(3:-9860)
2020-09-17 15:25:18.427595+0300 MYAPP[4143:494224] Task <145461A1-5355-49F3-B990-A63ADD61AEBF>.<1> HTTP load failed, 0/0 bytes (error code: -1200 [3:-9860])
2020-09-17 15:25:48.269210+0300 MYAPP[4143:494224] Task <E0E85B74-2BA3-4904-AF29-40B7B2C0B08B>.<2> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x282277b10 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <E0E85B74-2BA3-4904-AF29-40B7B2C0B08B>.<2>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <E0E85B74-2BA3-4904-AF29-40B7B2C0B08B>.<2>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=http://192.168.0.105:8081/status, NSErrorFailingURLKey=http://192.168.0.105:8081/status, _kCFStreamErrorDomainKey=4}
2020-09-17 15:25:48.317358+0300 MYAPP[4143:494412] [connection] nw_socket_handle_socket_event [C18.1:1] Socket SO_ERROR [61: Connection refused]
2020-09-17 15:25:48.320763+0300 MYAPP[4143:494412] [connection] nw_socket_handle_socket_event [C18.2:1] Socket SO_ERROR [61: Connection refused]
2020-09-17 15:25:48.321604+0300 MYAPP[4143:494239] [connection] nw_connection_get_connected_socket [C18] Client called nw_connection_get_connected_socket on unconnected nw_connection
2020-09-17 15:25:48.321674+0300 MYAPP[4143:494239] TCP Conn 0x281b3c420 Failed : error 0:61 [61]
2020-09-17 15:25:48.346472+0300 MYAPP[4143:494555] 6.25.0 - [Firebase/Messaging][I-FCM012002] Error in application:didFailToRegisterForRemoteNotificationsWithError: (null)
2020-09-17 15:25:48.355030+0300 MYAPP[4143:493632] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(0x19c40a5ac 0x1b048442c 0x19c4794cc 0x19c485608 0x19c2fec8c 0x19c2f1840 0x1009e3350 0x10070c4c4 0x10094c264 0x103aa3b68 0x103aa55f0 0x103ab4890 0x19c3871e4 0x19c3813b4 0x19c3804bc 0x1b2e05820 0x19ed24734 0x19ed29e10 0x10070c994 0x19c047e60)
libc++abi.dylib: terminating with uncaught exception of type NSException

@safaiyeh
Copy link
Contributor

Hi @Sergey-grishko, based on your logs it seems like it is a Firebase issue. I would recommend opening an issue with the firebase module. Feel free to create a new issue if this occurs in a raw React Native template.

@facebook facebook locked as resolved and limited conversation to collaborators Oct 1, 2021
@react-native-bot react-native-bot added the Resolution: Locked This issue was locked by the bot. label Oct 1, 2021
facebook-github-bot pushed a commit that referenced this issue Dec 5, 2022
)

Summary:
This PR prevents blob data from being prematurely de-allocated in native code when using slice to create views into an existing blob. Currently, whenever a new blob is created via createFromOptions, BlobManager.js creates a new blobCollector object since options.__collector is never provided.

https://github.com/facebook/react-native/blob/dc80b2dcb52fadec6a573a9dd1824393f8c29fdc/Libraries/Blob/BlobManager.js#L115-L123

When the reference to a blobCollector is garbage collected, the corresponding native memory for the blob data is de-allocated.

https://github.com/facebook/react-native/blob/27651720b40cab564a0cbd41be56a02584e0c73a/Libraries/Blob/RCTBlobCollector.mm#L19-L25

Since, `blob.slice()` is supposed to create a new view onto the same binary data as the original blob, we need to re-use the same collector object when slicing so that it is not GC'd until the last reference to the binary data is no longer reachable. Currently, since each blob slice gets a new blobCollector object, the memory is de-allocated when the first blob is GC'd.

Fixes #29970
Fixes #27857

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[iOS] [Fixed] - Blob data is no longer prematurely deallocated when using blob.slice

Pull Request resolved: #31392

Test Plan: I could use help coming up with a test plan here. I could add a referential equality check for the blob.data.__collector in `Blob-test` but it doesn't seem quite right to be testing the implementation detail there.

Reviewed By: javache

Differential Revision: D41730782

Pulled By: cortinico

fbshipit-source-id: 5671ae2c69908f4c9acb5d203ba198b41b421294
kelset pushed a commit that referenced this issue Mar 28, 2023
)

Summary:
This PR prevents blob data from being prematurely de-allocated in native code when using slice to create views into an existing blob. Currently, whenever a new blob is created via createFromOptions, BlobManager.js creates a new blobCollector object since options.__collector is never provided.

https://github.com/facebook/react-native/blob/dc80b2dcb52fadec6a573a9dd1824393f8c29fdc/Libraries/Blob/BlobManager.js#L115-L123

When the reference to a blobCollector is garbage collected, the corresponding native memory for the blob data is de-allocated.

https://github.com/facebook/react-native/blob/27651720b40cab564a0cbd41be56a02584e0c73a/Libraries/Blob/RCTBlobCollector.mm#L19-L25

Since, `blob.slice()` is supposed to create a new view onto the same binary data as the original blob, we need to re-use the same collector object when slicing so that it is not GC'd until the last reference to the binary data is no longer reachable. Currently, since each blob slice gets a new blobCollector object, the memory is de-allocated when the first blob is GC'd.

Fixes #29970
Fixes #27857

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[iOS] [Fixed] - Blob data is no longer prematurely deallocated when using blob.slice

Pull Request resolved: #31392

Test Plan: I could use help coming up with a test plan here. I could add a referential equality check for the blob.data.__collector in `Blob-test` but it doesn't seem quite right to be testing the implementation detail there.

Reviewed By: javache

Differential Revision: D41730782

Pulled By: cortinico

fbshipit-source-id: 5671ae2c69908f4c9acb5d203ba198b41b421294
kelset pushed a commit that referenced this issue Apr 3, 2023
)

Summary:
This PR prevents blob data from being prematurely de-allocated in native code when using slice to create views into an existing blob. Currently, whenever a new blob is created via createFromOptions, BlobManager.js creates a new blobCollector object since options.__collector is never provided.

https://github.com/facebook/react-native/blob/dc80b2dcb52fadec6a573a9dd1824393f8c29fdc/Libraries/Blob/BlobManager.js#L115-L123

When the reference to a blobCollector is garbage collected, the corresponding native memory for the blob data is de-allocated.

https://github.com/facebook/react-native/blob/27651720b40cab564a0cbd41be56a02584e0c73a/Libraries/Blob/RCTBlobCollector.mm#L19-L25

Since, `blob.slice()` is supposed to create a new view onto the same binary data as the original blob, we need to re-use the same collector object when slicing so that it is not GC'd until the last reference to the binary data is no longer reachable. Currently, since each blob slice gets a new blobCollector object, the memory is de-allocated when the first blob is GC'd.

Fixes #29970
Fixes #27857

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[iOS] [Fixed] - Blob data is no longer prematurely deallocated when using blob.slice

Pull Request resolved: #31392

Test Plan: I could use help coming up with a test plan here. I could add a referential equality check for the blob.data.__collector in `Blob-test` but it doesn't seem quite right to be testing the implementation detail there.

Reviewed By: javache

Differential Revision: D41730782

Pulled By: cortinico

fbshipit-source-id: 5671ae2c69908f4c9acb5d203ba198b41b421294
kelset pushed a commit that referenced this issue Apr 3, 2023
)

Summary:
This PR prevents blob data from being prematurely de-allocated in native code when using slice to create views into an existing blob. Currently, whenever a new blob is created via createFromOptions, BlobManager.js creates a new blobCollector object since options.__collector is never provided.

https://github.com/facebook/react-native/blob/dc80b2dcb52fadec6a573a9dd1824393f8c29fdc/Libraries/Blob/BlobManager.js#L115-L123

When the reference to a blobCollector is garbage collected, the corresponding native memory for the blob data is de-allocated.

https://github.com/facebook/react-native/blob/27651720b40cab564a0cbd41be56a02584e0c73a/Libraries/Blob/RCTBlobCollector.mm#L19-L25

Since, `blob.slice()` is supposed to create a new view onto the same binary data as the original blob, we need to re-use the same collector object when slicing so that it is not GC'd until the last reference to the binary data is no longer reachable. Currently, since each blob slice gets a new blobCollector object, the memory is de-allocated when the first blob is GC'd.

Fixes #29970
Fixes #27857

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[iOS] [Fixed] - Blob data is no longer prematurely deallocated when using blob.slice

Pull Request resolved: #31392

Test Plan: I could use help coming up with a test plan here. I could add a referential equality check for the blob.data.__collector in `Blob-test` but it doesn't seem quite right to be testing the implementation detail there.

Reviewed By: javache

Differential Revision: D41730782

Pulled By: cortinico

fbshipit-source-id: 5671ae2c69908f4c9acb5d203ba198b41b421294
OlimpiaZurek pushed a commit to OlimpiaZurek/react-native that referenced this issue May 22, 2023
…ebook#31392)

Summary:
This PR prevents blob data from being prematurely de-allocated in native code when using slice to create views into an existing blob. Currently, whenever a new blob is created via createFromOptions, BlobManager.js creates a new blobCollector object since options.__collector is never provided.

https://github.com/facebook/react-native/blob/dc80b2dcb52fadec6a573a9dd1824393f8c29fdc/Libraries/Blob/BlobManager.js#L115-L123

When the reference to a blobCollector is garbage collected, the corresponding native memory for the blob data is de-allocated.

https://github.com/facebook/react-native/blob/27651720b40cab564a0cbd41be56a02584e0c73a/Libraries/Blob/RCTBlobCollector.mm#L19-L25

Since, `blob.slice()` is supposed to create a new view onto the same binary data as the original blob, we need to re-use the same collector object when slicing so that it is not GC'd until the last reference to the binary data is no longer reachable. Currently, since each blob slice gets a new blobCollector object, the memory is de-allocated when the first blob is GC'd.

Fixes facebook#29970
Fixes facebook#27857

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[iOS] [Fixed] - Blob data is no longer prematurely deallocated when using blob.slice

Pull Request resolved: facebook#31392

Test Plan: I could use help coming up with a test plan here. I could add a referential equality check for the blob.data.__collector in `Blob-test` but it doesn't seem quite right to be testing the implementation detail there.

Reviewed By: javache

Differential Revision: D41730782

Pulled By: cortinico

fbshipit-source-id: 5671ae2c69908f4c9acb5d203ba198b41b421294
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Needs: Triage 🔍 Platform: iOS iOS applications. Resolution: Locked This issue was locked by the bot.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants