react-native
react-native copied to clipboard
PRODUCTION CRASH: Fatal Exception: java.lang.UnsatisfiedLinkError couldn't find DSO to load: libhermes.so
Please provide all the information requested. Issues that do not follow this format are likely to stall.
Description
Please provide a clear and concise description of what the bug is. Include screenshots if needed. Please test using the latest React Native release to make sure your issue has not already been fixed: https://reactnative.dev/docs/upgrading.html
React Native version:
Run react-native info in your terminal and copy the results here.
System:
OS: macOS 11.2.1
CPU: (8) x64 Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
Memory: 401.39 MB / 16.00 GB
Shell: 5.8 - /bin/zsh
Binaries:
Node: 15.10.0 - /var/folders/zg/f6_98ss10lj5b841clyhsxlh0000gn/T/yarn--1618131301327-0.47985465111075376/node
Yarn: 1.22.10 - /var/folders/zg/f6_98ss10lj5b841clyhsxlh0000gn/T/yarn--1618131301327-0.47985465111075376/yarn
npm: 7.5.3 - ~/.nvm/versions/node/v15.10.0/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.10.1 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: iOS 14.4, DriverKit 20.2, macOS 11.1, tvOS 14.3, watchOS 7.2
Android SDK:
API Levels: 24, 26, 28, 29, 30
Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.2
System Images: android-24 | Google Play Intel x86 Atom, android-26 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-29 | Google Play Intel x86 Atom, android-30 | Google APIs Intel x86 Atom, android-30 | Google Play Intel x86 Atom
Android NDK: Not Found
IDEs:
Android Studio: 4.1 AI-201.8743.12.41.6953283
Xcode: 12.4/12D4e - /usr/bin/xcodebuild
Languages:
Java: 1.8.0_282 - /usr/bin/javac
Python: 2.7.16 - /usr/bin/python
npmPackages:
@react-native-community/cli: Not Found
react: 17.0.1 => 17.0.1
react-native: 0.63.4 => 0.63.4
react-native-macos: Not Found
npmGlobalPackages:
*react-native*: Not Found
Steps To Reproduce
I am unsure, it seems to be an intermittent crash that doesn't really affect every user. I can only see this in google firebase crashlytics report, so far there have been 8 crashes of the same error on various android devices.
I have hermes enabled.
This is happening on my app, Entrepic http://entrepic.com/, and only on Android so far.
Here's the complete error message:
Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/com.aprmp.projpronetplataa/lib-main flags = 1]
SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/com.aprmp.projpronetplataa-Stx0SDtLuXCZ6kmaa1x9Jg==/lib/arm64 flags = 0]
SoSource 2: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
SoSource 3: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
Native lib dir: /data/app/com.aprmp.projpronetplataa-Stx0SDtLuXCZ6kmaa1x9Jg==/lib/arm64
result: 0
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:896)
at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:725)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:649)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:629)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1017)
at java.lang.Thread.run(Thread.java:764)
stack trace related to com.google.firebase.crashlytics.startup1
com.google.firebase.crashlytics.startup1
at com.android.org.conscrypt.NativeCrypto.SSL_read(NativeCrypto.java)
at com.android.org.conscrypt.SslWrapper.read(SslWrapper.java:384)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:541)
at com.android.okhttp.okio.Okio$2.read(Okio.java:136)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:211)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:306)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:300)
at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196)
at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:186)
at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:127)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:737)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:609)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:471)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:538)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode()
at com.google.firebase.crashlytics.internal.network.HttpGetRequest.execute(HttpGetRequest.java:77)
at com.google.firebase.crashlytics.internal.settings.network.DefaultSettingsSpiCall.invoke(DefaultSettingsSpiCall.java:113)
at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:199)
at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:192)
at com.google.android.gms.tasks.zzp.run(:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:64)
at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
at java.lang.Thread.run(Thread.java:764)
I don't think android version has anything to do with this, I can see this happened to variety of devices:
- 1.0.17 (30) Android 4.1.2, LG K4 LTE, Apr 10, 2021, 4:55:13 PM
- 1.0.17 (30) Android 9, Pixel 3 XL, Apr 10, 2021, 2:44:42 PM, seems it happened 7 times on this device,
- 1.0.17 (30) Android 11, Pixel 3a, Apr 10, 2021, 12:05:36 AM, seems it happened 3 times on this device
For the meantime, what I tried is yarn add hermes-engine jsc-android, maybe that will change something? I'll release this as soon as I can. So far, I have not experienced this happening on local development.
Expected Results
This crash should not happen
Snack, code example, screenshot, or link to a repository:
Please provide a Snack (https://snack.expo.io/), a link to a repository on GitHub, or provide a minimal code example that reproduces the problem. You may provide a screenshot of the application if you think it is relevant to your bug report. Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve
Also LGE Nexus 5X suffers same issue. But other devices are going well. I turned on hermes in Android.
+1 in:
- Motorola with android 9
- LGE Nexus 5X with android 8
- Google Pixel 3 with android 10 & 11
Firebase Crashlytics just reported this error to me again, a different app this time. this is happening in production, seems already 2 users experienced this:
Here's the stack trace
Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/com.myapp/lib-main flags = 1]
SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/~~mZYDiDBOpKEAJvJTZGzklw==/com.myapp-5zgc0VZZbzZ6MpBkomzrew==/lib/arm64 flags = 0]
SoSource 2: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
SoSource 3: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
Native lib dir: /data/app/~~mZYDiDBOpKEAJvJTZGzklw==/com.myapp-5zgc0VZZbzZ6MpBkomzrew==/lib/arm64
result: 0
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:918)
at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:740)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:654)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:634)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:582)
at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary()
at com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory(ReactInstanceManagerBuilder.java:352)
at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:319)
at com.facebook.react.ReactNativeHost.createReactInstanceManager(ReactNativeHost.java:95)
at expo.modules.ReactNativeHostWrapper.createReactInstanceManager(ReactNativeHostWrapper.kt:33)
at com.facebook.react.ReactNativeHost.getReactInstanceManager(ReactNativeHost.java:42)
at com.myapp.MainApplication.onCreate(MainApplication.java:63)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
at android.app.ActivityThread.handleMakeApplication(ActivityThread.java:7507)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7446)
at android.app.ActivityThread.access$1400(ActivityThread.java:301)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2148)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1139)
Device: Brand:samsung Model:Galaxy A21s Orientation: Portrait RAM free: 2.41 GB Disk free: 43 GB
Operating system Version:Android 11 Orientation: Portrait Rooted:No
Crash Date:29 Mar 2022, 22:13:08 App version:0.1.3 (18)
Possibly related issues:
- https://github.com/facebook/react-native/issues/32928
if you have minSdkVersion > 21, you could try to add this to app/build.gradle
android{
...
packagingOptions {
jniLibs.useLegacyPackaging = true
}
...
}
@aprilmintacpineda see this issue https://github.com/facebook/SoLoader/commit/25a2d47a98d907731feaa23faa613fdc647ebc56
I have hermes disabled and using the jsc engine. Facing a similar crash on One Plus 8 pro (only seen on this device). Not sure why its trying to load hermes even when its disabled on production.
Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/.../lib-main flags = 1]
...
SoSource 17: com.facebook.soloader.ApkSoSource[root = /data/data/.../lib-16 flags = 1]
SoSource 18: com.facebook.s<truncated: 8213 chars>
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:896)
at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:725)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:649)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:629)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1024)
at java.lang.Thread.run(Thread.java:923)
@sarthakpranesh any updates ?
Hey @Developeranees and others My team has finally shifted to the latest version of React Native (v0.70.6) and we successfully completed the update process. We are now also running Hermes as its default in the latest version. We haven't seen this issue after updating to the latest version of RN, hope that continues ✌🏽
This and all the "couldn't find DSO to load" bugs have been fixed in React Native 0.71.
The issue on previous versions was a "too aggressive" clean-up logic in the react.gradle file. In 0.71 the clean-up logic has been rewritten to be more Android friendly and is now living inside the React Native Gradle Plugin.
I'm closing this, please update to 0.71 and open a new issue if the "couldn't find DSO to load" crash is still happening on 0.71+.
Hi @cortinico I cannot upgrade to RN 0.71 because one crucial 3rd-party package is not compatible with it. It'd be great if there were any hot fix for earlier versions (I'm using RN 0.70.6).
clean-up logic in the
react.gradlefile. In 0.71 the clean-up logic has been rewritten to be more Android friendly and is now living inside the React Native Gradle Plu
Sadly this can't easily be backported. If you're able to provide a reproducer for 0.70.6, pleas e share it in a separate issue.
@cortinico Hi. I've upgraded RN to 0.71.1 but I still got this kind of crash on OnePlus8Pro:
Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so caused by: couldn't find DSO to load: libjsi.so caused by: couldn't find DSO to load: libfolly_runtime.so caused by: couldn't find DSO to load: libglog.so caused by: couldn't find DSO to load: libc++_shared.so caused by: dlopen failed: "/data/data/watch.panpan/lib-3/libc++_shared.so" is for EM_AARCH64 (183) instead of EM_X86_64 (62) result: 0 result: 0 result: 0 result: 0 result: 0
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1127)
at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:943)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:855)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:802)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:772)
at com.facebook.hermes.reactexecutor.HermesExecutor.loadLibrary(HermesExecutor.java:26)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
at com.facebook.hermes.reactexecutor.HermesExecutor.loadLibrary(HermesExecutor.java:24)
at com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory(ReactInstanceManagerBuilder.java:369)
at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:316)
at com.facebook.react.ReactNativeHost.createReactInstanceManager(ReactNativeHost.java:94)
at com.facebook.react.ReactNativeHost.getReactInstanceManager(ReactNativeHost.java:41)
at watch.panpan.MainApplication.onCreate(MainApplication.java:60)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1194)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6756)
at android.app.ActivityThread.access$1300(ActivityThread.java:238)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1914)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7701)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
@cortinico Hi. I've upgraded RN to 0.71.1 but I still got this kind of crash on OnePlus8Pro:
This seems related to https://github.com/facebook/SoLoader/issues/59 Please open a separate issue, with a reproducer and specifically on which device this is happening.