react-native-screens: Crashes on iOS
Description
I’ve noticed 2 crashes in our app related to this library. I’m pasting the crash reports from Bugsnag.
Crash 1
Possible cause
App is backgrounded then possibly change orientation? I only saw this issue on iOS 16.5.1 so it might be related to this certain iOS version?
Crashlog
CrashReporter Key: 881766c857fa167c50e024bcce7ac3e2baad338a
Hardware Model: iPhone12,3
Process: xxx
Identifier: xxx
Version: xxx
Role: Background
OS Version: iOS 16.5.1
NSRangeException: *** -[__NSArrayI_Transfer objectAtIndexedSubscript:]: index 0 beyond bounds for empty array
0 CoreFoundation +0x9cb0 ___exceptionPreprocess
1 libobjc.A.dylib +0x183cc _objc_exception_throw
2 CoreFoundation +0x1aff80 __CFThrowFormattedException
3 CoreFoundation +0xb8228 -[__NSArrayI_Transfer objectAtIndexedSubscript:]
4 xxx +0x8fe430 __56+[RNSScreenWindowTraits enforceDesiredDeviceOrientation]_block_invoke (RNSScreenWindowTraits.mm:181:49)
5 libdispatch.dylib +0x231c __dispatch_call_block_and_release
6 libdispatch.dylib +0x3ea8 __dispatch_client_callout
7 libdispatch.dylib +0x126a0 __dispatch_main_queue_drain
8 libdispatch.dylib +0x122f0 __dispatch_main_queue_callback_4CF
9 CoreFoundation +0x98c24 ___CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
10 CoreFoundation +0x7a55c ___CFRunLoopRun
11 CoreFoundation +0x7f3e8 _CFRunLoopRunSpecific
12 GraphicsServices +0x1358 _GSEventRunModal
13 UIKitCore +0x39d6e4 -[UIApplication _run]
14 UIKitCore +0x39d348 _UIApplicationMain
15 xxx +0x70bc main (main.m:8:12)
16 dyld +0x15de8 start
Crash 2
Possible cause
This function seems to be running into an infinite loop. We’re displaying a modal screen prior to this crash so I assume that might be the cause. Found this existing bug report too: https://github.com/software-mansion/react-native-screens/issues/1678
Crashlog
CrashReporter Key: fe9b4fb12f3ff773d82d43bdeb56fed61c6a0972
Hardware Model: iPhone14,2
Process: xxx
Identifier: xxx
Version: xxx
Role: Foreground
OS Version: iOS 16.5.1
Exception Type: EXC_BAD_ACCESS
Exception Subtype: KERN_INVALID_ADDRESS
EXC_BAD_ACCESS: Stack overflow in (null)
0 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
1 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
2 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
3 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
4 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
5 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
6 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
7 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
8 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
9 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
10 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
11 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
12 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
13 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
14 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
15 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
16 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
17 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
18 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
19 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
20 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
21 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
22 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
23 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
24 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
25 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
26 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
27 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
28 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
29 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
30 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
31 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
32 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
33 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
34 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
35 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
36 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
37 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
38 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
39 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
40 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
41 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
42 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
43 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
44 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
45 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
46 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
47 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
48 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
49 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
50 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
51 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
52 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
53 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
54 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
55 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
56 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
57 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
58 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
59 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
60 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
61 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
62 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
63 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
64 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
65 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
66 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
67 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
68 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
69 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
70 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
71 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
72 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
73 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
74 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
75 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
76 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
77 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
78 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
79 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
80 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
81 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
82 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
83 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
84 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
85 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
86 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
87 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
88 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
89 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
90 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
91 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
92 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
93 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
94 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
95 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
96 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
97 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
98 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
99 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
100 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
101 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
102 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
103 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
104 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
105 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
106 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
107 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
108 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
109 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
110 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
111 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
112 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
113 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
114 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
115 xxx +0x8eeb18 -[RNSScreen findChildVCForConfigAndTrait:includingModals:] (RNSScreen.mm:1043:11)
116 xxx +0x8ef064 -[RNSScreen childViewControllerForHomeIndicatorAutoHidden] (RNSScreen.mm:1139:26)
117 UIKitCore +0x206598 -[UIViewController _effectiveHomeIndicatorAutoHiddenViewController]
118 UIKitCore +0x206580 -[UIViewController _effectiveHomeIndicatorAutoHiddenViewController]
119 UIKitCore +0x2064a0 -[_UISystemAppearanceManager updateHomeIndicatorAutoHidden]
120 UIKitCore +0x206440 ___59-[UIViewController setNeedsUpdateOfHomeIndicatorAutoHidden]_block_invoke_2
121 UIKitCore +0xdeea8 -[UIViewController _updateSystemAppearanceWithRecursionBlock:action:]
122 UIKitCore +0xdee0c -[UIViewController _updateSystemAppearanceWithRecursionBlock:action:]
123 UIKitCore +0x1b1698 -[UINavigationController pushViewController:transition:forceImmediate:]
124 UIKitCore +0x1b1358 -[UINavigationController pushViewController:animated:]
125 xxx +0x8f45f8 -[RNSScreenStackView setPushViewControllers:] (RNSScreenStack.mm:517:7)
126 xxx +0x8f4960 -[RNSScreenStackView updateContainer] (RNSScreenStack.mm:548:3)
127 xxx +0x8f479c __45-[RNSScreenStackView setPushViewControllers:]_block_invoke_2 (RNSScreenStack.mm:463:13)
128 UIKitCore +0x344f34 -[_UIViewControllerTransitionCoordinator _applyBlocks:releaseBlocks:]
129 UIKitCore +0x2b343c -[_UIViewControllerTransitionContext _runAlongsideCompletions]
130 UIKitCore +0x2b24a8 -[_UIViewControllerTransitionContext completeTransition:]
131 UIKitCore +0x2b362c -[UITransitionView notifyDidCompleteTransition:]
132 UIKitCore +0x2b322c -[UITransitionView _didCompleteTransition:]
133 UIKitCore +0x106082c ___UIVIEW_IS_EXECUTING_ANIMATION_COMPLETION_BLOCK__
134 UIKitCore +0xce8d4 -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:]
135 UIKitCore +0xcd830 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:]
136 UIKitCore +0xccf4c -[UIViewAnimationState animationDidStop:finished:]
137 UIKitCore +0xcd060 -[UIViewAnimationState animationDidStop:finished:]
138 QuartzCore +0x13620 CA::Layer::run_animation_callbacks(void*)
139 libdispatch.dylib +0x3ea8 __dispatch_client_callout
140 libdispatch.dylib +0x126a0 __dispatch_main_queue_drain
141 libdispatch.dylib +0x122f0 __dispatch_main_queue_callback_4CF
142 CoreFoundation +0x98c24 ___CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
143 CoreFoundation +0x7a55c ___CFRunLoopRun
144 CoreFoundation +0x7f3e8 _CFRunLoopRunSpecific
145 GraphicsServices +0x1358 _GSEventRunModal
146 UIKitCore +0x39d6e4 -[UIApplication _run]
147 UIKitCore +0x39d348 _UIApplicationMain
148 xxx +0x70bc main (main.m:8:12)
149 dyld +0x15de8 start
Steps to reproduce
Sadly not entirely sure
Snack or a link to a repository
Screens version
3.22.1
React Native version
0.71.8
Platforms
Android, iOS
JavaScript runtime
Hermes
Workflow
React Native (without Expo)
Architecture
Paper (Old Architecture)
Build type
Release mode
Device
Real device
Device model
any iPhone
Acknowledgements
Yes
About this issue
- Original URL
- State: open
- Created a year ago
- Comments: 21 (5 by maintainers)
We got the same error when trying to open the CarPlay app with the iPhone app closed.
[CPTemplateApplicationScene requestGeometryUpdateWithPreferences:errorHandler:]: unrecognized selector sent to instance 0x12372f590
I’m not an objective-c expert, but I think I found the source of the bug.
In
RNSScreenWindowTraits.mm
the scene get type casted toUIWindowScene
. But when opening the CarPlay app, the scene atarray[0]
is in our case aCPTemplateApplicationScene
If I add a check like this before the above code the app is not crashing
if (![array[0] isKindOfClass:[UIWindowScene class]]) { return; }
yep @tboba - will try it out and let you know. I’ll need ~2 weeks to check on Bugsnag if it is all good.
Not the best solution, but I finally decided to turn off react native screens in my project:
My app works now good in Carplay and in my iPhone.