react-native
react-native copied to clipboard
App crashes with `dyld[38734]: symbol not found in flat namespace '_jump_fcontext'` with `use_frameworks!`
New Version
0.73.0-rc.1
Old Version
0.72.5
Build Target(s)
iOS simulator
Output of react-native info
System:
OS: macOS 13.5.2
CPU: (10) arm64 Apple M1 Max
Memory: 23.29 GB / 64.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.16.1
path: /var/folders/5l/y80kyhh93kl22_mbytwl_hg40000gq/T/yarn--1696591343127-0.3534219795138642/node
Yarn:
version: 1.22.19
path: /var/folders/5l/y80kyhh93kl22_mbytwl_hg40000gq/T/yarn--1696591343127-0.3534219795138642/yarn
npm:
version: 9.5.1
path: ~/.volta/tools/image/node/18.16.1/bin/npm
Watchman: Not Found
Managers:
CocoaPods:
version: 1.12.1
path: /Users/louis.zawadzki/.rbenv/shims/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.0
- iOS 17.0
- macOS 14.0
- tvOS 17.0
- watchOS 10.0
Android SDK: Not Found
IDEs:
Android Studio: 2022.3 AI-223.8836.35.2231.10671973
Xcode:
version: 15.0/15A240d
path: /usr/bin/xcodebuild
Languages:
Java:
version: 11.0.16.1
path: /Users/louis.zawadzki/.sdkman/candidates/java/current/bin/javac
Ruby:
version: 2.7.5
path: /Users/louis.zawadzki/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.73.0-rc.1
wanted: 0.73.0-rc.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false
Issue and Reproduction Steps
- Create a new project with
npx react-native@latest init MyApp --version 0.73.0-rc.1
- Run
(cd ios && USE_FRAMEWORKS=dynamic pod install)
- Build the app using XCode 15
The app crashes immediately with the following error:
dyld[38734]: symbol not found in flat namespace '_jump_fcontext'
XCode screenshot:
:warning: | Missing Reproducible Example |
---|---|
:information_source: | We could not detect a reproducible example in your issue report. Please provide either:
|
Hi Luiz, can you try if this is happening also with Xcode 14? I fear that it is an Xcode 15 issue, unfortunately...
Uhm... I just tried and it doesn't repro for me:
Hi,
I get the following different error in XCode 14.3.1 when building the app:
Ld /Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Intermediates.noindex/Pods.build/Release-iphonesimulator/libevent.build/Objects-normal/x86_64/Binary/libevent normal x86_64 (in target 'libevent' from project 'Pods')
cd /Users/louis.zawadzki/go/src/github.com/DataDog/mobile/apps/MyApp/ios/Pods
/Applications/Xcode-14.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Xlinker -reproducible -target x86_64-apple-ios13.4-simulator -dynamiclib -isysroot /Applications/Xcode-14.3.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.4.sdk -L/Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Intermediates.noindex/EagerLinkingTBDs/Release-iphonesimulator -L/Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Products/Release-iphonesimulator/libevent -F/Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Intermediates.noindex/EagerLinkingTBDs/Release-iphonesimulator -F/Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Products/Release-iphonesimulator/libevent -filelist /Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Intermediates.noindex/Pods.build/Release-iphonesimulator/libevent.build/Objects-normal/x86_64/libevent.LinkFileList -install_name @rpath/libevent.framework/libevent -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Intermediates.noindex/Pods.build/Release-iphonesimulator/libevent.build/Objects-normal/x86_64/libevent_lto.o -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Wl -ld_classic -framework Foundation -Xlinker -no_adhoc_codesign -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Intermediates.noindex/Pods.build/Release-iphonesimulator/libevent.build/Objects-normal/x86_64/libevent_dependency_info.dat -o /Users/louis.zawadzki/Library/Developer/Xcode/DerivedData/MyApp-foosftvymsuqgubztrolvgonqfox/Build/Intermediates.noindex/Pods.build/Release-iphonesimulator/libevent.build/Objects-normal/x86_64/Binary/libevent
ld: library not found for -ld_classic
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Following the hint from this issue I'm able to build by removing the -ld_classic
flag in Pods and libevent targets (removing it in project.pbxproj
wasn't enough), then the app works fine with XCode 14.3.1.
yes, so... to run it in Xcode 14.3, you need to switch the build tool with xcode-select
and rerun pod install to let cocoapods remove the flags for you. At that point, you don't have -ld_classic
anymore and it work right away.
Can you try again with Xcode 15.1? My app works with Xcode 15.1...
Hi! Sorry for the long delay, I just retried with rc3 and I don't reproduce the issue anymore, I'll close this issue :)
@cipolleschi i have the exact same problem.
Started a new project npx react-native@latest init AwesomeProjectTest
, ran USE_FRAMEWORKS=dynamic NO_FLIPPER=1 pod install
and then i get this
React Native info:
info Fetching system and libraries information...
System:
OS: macOS 14.2
CPU: (10) arm64 Apple M1 Max
Memory: 309.75 MB / 32.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.16.1
path: ~/.nvm/versions/node/v18.16.1/bin/node
Yarn:
version: 1.22.17
path: /opt/homebrew/bin/yarn
npm:
version: 9.5.1
path: ~/.nvm/versions/node/v18.16.1/bin/npm
Watchman: Not Found
Managers:
CocoaPods:
version: 1.14.3
path: /Users/mateioprea/.rvm/gems/ruby-2.7.6/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.2
- iOS 17.2
- macOS 14.2
- tvOS 17.2
- watchOS 10.2
Android SDK:
API Levels:
- "28"
- "29"
- "30"
- "31"
- "32"
- "33"
- "33"
Build Tools:
- 28.0.3
- 29.0.2
- 30.0.2
- 30.0.3
- 32.0.0
- 33.0.0
- 33.0.2
- 34.0.0
System Images:
- android-31 | Google Play ARM 64 v8a
- android-32 | Google APIs ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: Giraffe 2022.3.1 Patch 2 Giraffe 2022.3.1 Patch 2
Xcode:
version: 15.1/15C65
path: /usr/bin/xcodebuild
Languages:
Java:
version: 20.0.1
path: /opt/homebrew/opt/openjdk/bin/javac
Ruby:
version: 2.7.6
path: /Users/mateioprea/.rvm/rubies/ruby-2.7.6/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.73.0
wanted: 0.73.0
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false
same on "react-native": "0.73.0",
@mateioprea @aybarska
- which version of Xcode are you using? (you can check it by running
xcodebuild -v
) - why are you not using bundler? (specifically, you should run
USE_FRAMEWORKS=dynamic NO_FLIPPER=1 bundle exec pod install
) - I just tried the following:
npx react-native@latest init AwesomeProjectTest --skip-install
cd AwesomeProjectTest
yarn install
cd ios
bundle install
USE_FRAMEWORKS=dynamic NO_FLIPPER=1 bundle exec pod install
open AwesomeProjectTest.xcworkspace
and them ⌘+R
and it works.
$ xcodebuild -version
Xcode 15.1
Build version 15C5028h
Can you try again?
@cipolleschi, I tried those steps, and I get the dyld[620]: symbol not found in flat namespace '_jump_fcontext'
error only when I run in a physical device. If I target a simulator, everything works fine.
Here's the requested info, if it helps:
$ xcodebuild -version
Xcode 15.1
Build version 15C65
And the output of react-native info
:
$ npx react-native@latest info
info Fetching system and libraries information...
System:
OS: macOS 14.2
CPU: (10) arm64 Apple M1 Max
Memory: 2.28 GB / 32.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 20.10.0
path: ~/.nvm/versions/node/v20.10.0/bin/node
Yarn:
version: 1.22.21
path: /opt/homebrew/bin/yarn
npm:
version: 10.2.5
path: ~/.nvm/versions/node/v20.10.0/bin/npm
Watchman:
version: 2023.12.04.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.14.3
path: /Users/rfontes/.rvm/gems/ruby-3.0.6/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.2
- iOS 17.2
- macOS 14.2
- tvOS 17.2
- watchOS 10.2
Android SDK: Not Found
IDEs:
Android Studio: 2023.1 AI-231.9392.1.2311.11076708
Xcode:
version: 15.1/15C65
path: /usr/bin/xcodebuild
Languages:
Java:
version: 11.0.21
path: /usr/bin/javac
Ruby:
version: 3.0.6
path: /Users/rfontes/.rvm/rubies/ruby-3.0.6/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.73.1
wanted: 0.73.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false
I managed to reproduce it. This is not a simple bug, as the stack trace reports that it happens in thread 1 at startup with little to no extra information. I also tried in release mode and it still fails. I'll need some more time to investigate. It could be an apple bug of the new linker too.
Have you tried with Xcode 15.2-beta already?
So, I made another test.
The app runs properly with USE_FRAMEWORKS=static
. For the time being, this should be a valid workaround.
Meanwhile, I found that jump_fcontext
is a function in boost
. So, what I think is happening is that boost
is not compiled to a framework and not copied over to the device.
Hi there @cipolleschi , I keep getting the error mentioned in the issue when running on a physical device (using the USE_FRAMEWORKS=static
workaround).
Using Xcode 15.1:
$ xcodebuild -version
Xcode 15.1
Build version 15C65
The output of react-native info
:
$ npx react-native@latest info
info Fetching system and libraries information...
System:
OS: macOS 14.2.1
CPU: (12) x64 Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
Memory: 1.55 GB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.18.0
path: /usr/local/bin/node
Yarn:
version: 1.22.21
path: /usr/local/bin/yarn
npm:
version: 9.8.1
path: /usr/local/bin/npm
Watchman:
version: 2023.12.04.00
path: /usr/local/bin/watchman
Managers:
CocoaPods:
version: 1.14.3
path: /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.2
- iOS 17.2
- macOS 14.2
- tvOS 17.2
- watchOS 10.2
Android SDK:
API Levels:
- "33"
- "34"
Build Tools:
- 30.0.3
- 33.0.0
- 34.0.0
System Images:
- android-33 | Google APIs Intel x86_64 Atom
- android-34 | Google APIs Intel x86_64 Atom
Android NDK: Not Found
IDEs:
Android Studio: Not Found
Xcode:
version: 15.1/15C65
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.9
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.73.1
wanted: 0.73.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false
Any ideas on how to get on this? Thank you!
EDIT: managed to build & run successfully by removing -ld_classic
from the Pods
project:
which version of Xcode are you using? That flag has been added by Apple because we actually asked them to give us a way to make C++'s weak symbols work with their new linker. I know that they fixed the issue for good in Xcode 15.1, so we might be able to remove it for everyone right now!
I'm actually using Xcode 15.1 (Build version 15C65). Maybe it's the case and we can remove that flag?
@piraces yes, I'll work on that this week or next week, worst case scenario. There are a few test that I want to run, to make sure we don't break React Native for other users, but I'm planning that work! Many thanks for reporting this.
Hi! For the record, I had the same issue as mention above:
- on XCode 15.0
- with RN 0.73.1
- using Dynamic Frameworks
- building on physical device only
- simulators okay (note: I build only using Rosetta for simulators because of one of my dependancies)
Switching to Static Frameworks was enough 🙂
I'm available to give more info / to test other workaround, ideally I would like to go back to dynamics later!
Thanks for the reporting. Next week I'll be back in the office, with a better connection and bandwidth, and I'll be able to download multiple Xcode and test with/without the flags on multiple system to implement a solution that might work for everyone.
My understanding, as of today is that:
- If you use Xcode < 15 => You don't need flags, but you can't target iOS 17
- if you use Xcode >= 15.0.0 && < 15.1.0 => You need the flags, you can target iOS 17
- if you use Xcode >= 15.1 => You don't need flags, you can target iOS 17
I want to test these hypothesis, but my current connectivity foes not allow me to download 30+ Gb in a day 🤦
@mateioprea It works on simulator but not on real device
@cipolleschi, I've attempted to target iOS 17 using Xcode 15.1, but I'm encountering the same issue on a real device:
dyld[1495]: symbol not found in flat namespace '_jump_fcontext'
Hi everyone.
I've spent a couple of days investigating the issue. I think we should be able to fix the problem by adding this patch to the utils.rb
file:
- line 165
project.build_configurations.each do |config|
# fix for weak linking
self.safe_init(config, other_ld_flags_key)
- if self.is_using_xcode15_or_greater(:xcodebuild_manager => xcodebuild_manager)
+ if self.is_using_xcode15_0(:xcodebuild_manager => xcodebuild_manager)
- line 389
- def self.is_using_xcode15_or_greater(xcodebuild_manager: Xcodebuild)
+ def self.is_using_xcode15_0(xcodebuild_manager: Xcodebuild)
xcodebuild_version = xcodebuild_manager.version
# The output of xcodebuild -version is something like
# Xcode 15.0
# or
# Xcode 14.3.1
# We want to capture the version digits
regex = /(\d+)\.(\d+)(?:\.(\d+))?/
if match_data = xcodebuild_version.match(regex)
major = match_data[1].to_i
+ minor = match_data[2].to_i
- return major >= 15
+ return major == 15 && minor == 0
end
return false
end
With these changes, I was able to run a 0.73 app on the device.
However, the reason why we have to add the -ld_classic
flag with Xcode 15 was because Apple reimplemented the linker in Xcode 15 and it was not compatible with versions of iOS < 15.
Now, I cannot install iOS 14.5 on my laptop anymore, because it is not compatible with Sonoma. The last version of macOS that can install and build iOS < 15 is macOS 13.5 IIRC (which is Ventura).
Is there someone that can help out by:
- Create a new app with 0.73
- Modify the
node_modules/react-native/scripts/cocoapods/utils.rb
file applying the patches above - Run the app on a simulator/device using iOS < 15 (e.g. 14.5)
- Report its finding 🙏🙏🙏🙏
The help would be much appreciated and will help the whole community!
So, I was able to test using Firebase Test Lab and it looks like that older devices are working.
I created PRs also for the supported versions:
- 0.73: https://github.com/facebook/react-native/pull/42227
- 0.72: https://github.com/facebook/react-native/pull/42228
- 0.71: https://github.com/facebook/react-native/pull/42229
Hey @cipolleschi, I hate that this is coming back up but I am having this problem with
- RN 0.73.3
- Xcode 15.2
Xcode 15.2
Build version 15C500b
And system
System:
OS: macOS 14.3
CPU: (10) arm64 Apple M1 Max
Memory: 2.92 GB / 64.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.15.0
path: ~/.nvm/versions/node/v18.15.0/bin/node
Yarn:
version: 1.22.19
path: /opt/homebrew/bin/yarn
npm:
version: 9.6.2
path: ~/.nvm/versions/node/v18.15.0/bin/npm
Watchman:
version: 2024.01.22.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.14.3
path: /Users/wwyatt/.rbenv/shims/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.2
- iOS 17.2
- macOS 14.2
- tvOS 17.2
- visionOS 1.0
- watchOS 10.2
IDEs:
Xcode:
version: 15.2/15C500b
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.10
path: /usr/bin/javac
Ruby:
version: 2.7.7
path: /Users/wwyatt/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.73.3
wanted: 0.73.3
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: Not found
newArchEnabled: Not found
iOS:
hermesEnabled: true
newArchEnabled: true
Our app is rather large and has a mix of dynamic and static frameworks.
Our min version of iOS is also 16
And when building the app, it crashes with the error
symbol not found in flat namespace '_jump_fcontext'
I also tried manually removing all the -ld_classic
flags and it still didn't work. Any suggestions?
same problem here with [email protected] and react-native 0.73.6 just
npx react-native@latest init AwesomeProjectTest
USE_FRAMEWORKS=dynamic NO_FLIPPER=1 pod install
System: OS: macOS 14.4.1 CPU: (12) arm64 Apple M2 Pro Memory: 599.81 MB / 32.00 GB Shell: version: "5.9" path: /bin/zsh Binaries: Node: version: 18.19.0 path: /usr/local/bin/node Yarn: version: 1.22.19 path: /usr/local/bin/yarn npm: version: 10.2.3 path: /usr/local/bin/npm Watchman: version: 2024.03.18.00 path: /opt/homebrew/bin/watchman Managers: CocoaPods: version: 1.14.3 path: /usr/local/bin/pod SDKs: iOS SDK: Platforms: - DriverKit 23.4 - iOS 17.4 - macOS 14.4 - tvOS 17.4 - visionOS 1.1 - watchOS 10.4 Android SDK: Not Found IDEs: Android Studio: 2022.3 AI-223.8836.35.2231.11005911 Xcode: version: 15.3/15E204a path: /usr/bin/xcodebuild Languages: Java: version: 17.0.8 path: /usr/bin/javac Ruby: version: 3.3.0 path: /opt/homebrew/opt/ruby/bin/ruby npmPackages: "@react-native-community/cli": Not Found react: installed: 18.2.0 wanted: 18.2.0 react-native: installed: 0.73.6 wanted: 0.73.6 react-native-macos: Not Found npmGlobalPackages: "react-native": Not Found Android: hermesEnabled: true newArchEnabled: false iOS: hermesEnabled: true newArchEnabled: false
Same for me, were you able to find a fix?
Same for me, were you able to find a fix?
Hi everyone, I was on a long PTO (3 weeks) and came back this week. I'm looking into this.
@sunzongzheng @wkwyatt I just tried the following steps:
npx react-native@latest init AwesomeProjectTest --version latest --skip-install
cd AwesomeProjectTest
yarn install
cd ios
bundle install
USE_FRAMEWORKS=dynamic NO_FLIPPER=1 bundle exec pod install
open AwesomeProjectTest.xcworkspace
Build: ⌘+B And it built successfully.
I'm using React Native 0.73.6 and Xcode 15.3.
I think that there is something funky in your local setups, perhaps caching.
Could you try to:
- pod deintegrate
- Delete derived data in Xcode
- USE_FRAMEWORKS=dynamic NO_FLIPPER=1 bundle exec pod install
and try again?
Are you running it on a device later? Because my issue is not compiling/building but if I run it on a physical device
No I was only building. I'll try to connect a device, then.