nwales
nwales

Reputation: 3561

React Native ios app crashes when run outside of xcode with failed to scene-create after 19.88s error

My react native app is crashing when launched outside of Xcode with the following exception showing up in the crash report on the device logs for thread 0.

    Incident Identifier: DB5E0F81-977F-44B0-BD8B-FAAF33F98119
CrashReporter Key:   e3b8d0751b47b37db0d7d6fcc5dde46051f8d30c
Hardware Model:      iPhone7,1
Process:             crashTest [388]
Path:                /var/mobile/Containers/Bundle/Application/CE56E818-7288-4A39-8220-16E17158C916/crashTest.app/crashTest
Identifier:          org.reactjs.native.example.crashTest
Version:             1 (1.0)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2017-04-25 12:42:30.30 -0400
Launch Time:         2017-04-25 12:42:10.10 -0400
OS Version:          iOS 9.1 (13B143)
Report Version:      105

Exception Type:  00000020
Exception Codes: 0x000000008badf00d
Exception Note:  SIMULATED (this is NOT a crash)
Highlighted by Thread:  0

Application Specific Information:
org.reactjs.native.example.crashTest failed to scene-create after 19.92s (launch took 0.08s of total time limit 20.00s)

Elapsed total CPU time (seconds): 9.230 (user 9.230, system 0.000), 23% CPU 
Elapsed application CPU time (seconds): 0.113, 0% CPU

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0:
0   libsystem_kernel.dylib          0x0000000199ff0a7c semaphore_wait_trap + 8
1   libdispatch.dylib               0x0000000199ece614 _dispatch_semaphore_wait_slow + 244
2   CFNetwork                       0x0000000184246ac0 CFURLConnectionSendSynchronousRequest + 288
3   CFNetwork                       0x000000018426a07c +[NSURLConnection sendSynchronousRequest:returningResponse:error:] + 120
4   crashTest                       0x0000000100128858 -[RCTBundleURLProvider isPackagerRunning:] (RCTBundleURLProvider.m:76)
5   crashTest                       0x0000000100128b00 -[RCTBundleURLProvider guessPackagerHost] (RCTBundleURLProvider.m:92)
6   crashTest                       0x0000000100128d10 -[RCTBundleURLProvider packagerServerHost] (RCTBundleURLProvider.m:106)
7   crashTest                       0x0000000100128ed4 -[RCTBundleURLProvider jsBundleURLForBundleRoot:fallbackResource:] (RCTBundleURLProvider.m:123)
8   crashTest                       0x000000010006a8cc -[AppDelegate application:didFinishLaunchingWithOptions:] (AppDelegate.m:21)
9   UIKit                           0x000000018a0f5324 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 400
10  UIKit                           0x000000018a323acc -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2904
11  UIKit                           0x000000018a327e0c -[UIApplication _runWithMainScene:transitionContext:completion:] + 1656
12  UIKit                           0x000000018a324f50 -[UIApplication workspaceDidEndTransaction:] + 168
13  FrontBoardServices              0x000000018e90b7c4 -[FBSSerialQueue _performNext] + 184
14  FrontBoardServices              0x000000018e90bb44 -[FBSSerialQueue _performNextFromRunLoopSource] + 56
15  CoreFoundation                  0x0000000184aa4544 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
16  CoreFoundation                  0x0000000184aa3fd8 __CFRunLoopDoSources0 + 540
17  CoreFoundation                  0x0000000184aa1cd8 __CFRunLoopRun + 724
18  CoreFoundation                  0x00000001849d0ca0 CFRunLoopRunSpecific + 384
19  UIKit                           0x000000018a0ee1c8 -[UIApplication _run] + 460
20  UIKit                           0x000000018a0e8ffc UIApplicationMain + 204
21  crashTest                       0x000000010006ad08 main (main.m:16)
22  libdyld.dylib                   0x0000000199eee8b8 start + 4

I understand that my app is taking too long to launch and display. If I run directly from Xcode with my device tethered there are no issues (but it does take forever to launch)

I am testing this with the default react project produced with react-native init

When I build the project in Xcode I see the following warning:

[tid:com.facebook.react.JavaScript][RCTModuleData.mm:220] RCTBridge required dispatch_sync to load RCTDevSettings. This may lead to deadlocks

I am new to react-native, and I am assuming maybe this is running in some sort of dev mode that does not allow me to launch the app when un-tethered or on a different network? Are there special instructions I am missing that I need to follow when building the app to run independently on the device without having to archive the app in Xcode?

Upvotes: 0

Views: 2589

Answers (3)

Kamil Sarna
Kamil Sarna

Reputation: 6301

Check if you're connected to the same WiFi network. Just had this.

Upvotes: 4

inquisitive
inquisitive

Reputation: 41

I've run into the same issue, and don't have a solution, but a temporary workaround that helped me. I've posted it here - https://github.com/facebook/react-native/issues/10187 in the hopes that someone better versed with objective-c and url loading will take a look and put in the proper fix. Hope this helps. Thanks.

The issue, as Aaron Golden has pointed out, is that a synchronous request is made from the main thread at load time in order to figure out whether the react packager (remote server running on the same network) is accessible. This can take awhile for reasons beyond my knowledge (if someone can expound on this, I'd be grateful), but apple will crash the app if this takes longer than 19 seconds (approx).

Upvotes: 0

Aaron Golden
Aaron Golden

Reputation: 7102

In your -[AppDelegate application:didFinishLaunchingWithOptions:] function you're kicking off a synchronous network request, and that request appears to be taking too long. iOS kills your app because it has failed to finish launching (specifically, it's failed to return from application:didFinishLaunchingWithOptions:) after 20 seconds.

Upvotes: 1

Related Questions