GithubHelp home page GithubHelp logo

Comments (23)

Aung-Myint-Thein avatar Aung-Myint-Thein commented on April 25, 2024 10

I am using firebase to track the crashes and a few of my users with following Android version are having crashes:

Android 4.2.2
Android 4.3
Android 4.3.1
Android 4.4.2
Android 5.1

Fatal Exception: java.lang.UnsatisfiedLinkError - couldn't find DSO to load: libhermes.so

I am using RN 0.60.5 and split APKs.

from hermes.

Tim-Snow avatar Tim-Snow commented on April 25, 2024 7

I'm seeing this crash in production with RN 0.61.2, using android bundles with hermes disabled.

from hermes.

taschik avatar taschik commented on April 25, 2024 3

Thanks @mhorowitz for the hint. I did look into the app bundle and extracted the apk for the device type. It contains the libjsc.so file but not the libhermes.so. Which imho is correct because my gradle is configured to not include it. The big question is why does it want to load it if it not enabled? What also surprised me is that I found libhermes-executor-release.so and libhermes-executor-debug.so in it too. Shouldn't they be excluded too? If you think it will make sense to bring this up in the react-native project, I will do so and link the issue here.

midnight_runners_mobile  ~:Documents:mycrew:midnight-runners-mobile:android  - ~:Downloads:mycrew apk 2019-08-02 10-39-46

from hermes.

mhorowitz avatar mhorowitz commented on April 25, 2024 2

the relevant bit of code is here: https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java#L288-L296 React Native tries to load JSC, and if it's not present, it tries to load Hermes. If the latter fails, you get the exception you're seeing.

Since you're building for JSC, the latter error is expected, but the first error is not. From your screen shot, libjscexecutor.so seems to be present, but the code is swallowing the error loading JSC, which is what would tell us what's wrong. I've asked someone here to improve the error reporting. In the interim, you could hack this code to comment out the try/catch. This will break enableHermes in the gradle files, but it should illuminate the problem.

One hypothesis is that the failing devices are not arm32, and the libraries for that platform are different.

I it makes sense to open an RN issue. I'm not sure what the problem is, but I suspect the fix will need to be in the react-native repo.

You're right that those hermes .so files should be excluded, but that's a separate problem.

from hermes.

mhorowitz avatar mhorowitz commented on April 25, 2024 1

Thanks for the more detailed report! A few other people have reported similar issues in facebook/react-native#25601 and running ./gradlew clean has fixed it. Can you try that?

from hermes.

taschik avatar taschik commented on April 25, 2024 1

Our build pipeline does fresh checkouts removing all gradle caches programmatically and running gradle in a non-daemon mode.

rm -rf node_modules && rm -rf $TMPDIR/react-*
rm -rf $HOME/.gradle/caches
npm i

echo "Build Android"
bundle exec fastlane android build flags:--no-daemon --env=live

Shouldn't that be sufficient and not require us to run a ./gradlew clean ?

from hermes.

woshi82 avatar woshi82 commented on April 25, 2024 1

Something wrong with SoLoader.loadLibrary("jscexecutor");

private JavaScriptExecutorFactory getDefaultJSExecutorFactory(String appName, String deviceName) {
    try {
      // If JSC is included, use it as normal
      SoLoader.loadLibrary("jscexecutor"); // something wrong with here
      return new JSCExecutorFactory(appName, deviceName);
    } catch(UnsatisfiedLinkError jscE) {
      jscE.printStackTrace();  // something wrong with here
      // Otherwise use Hermes
      return new HermesExecutorFactory();
    }
  }

The crash is here facebook/react-native#25923 (comment)

I'm still trying to find the solution. -!!!

from hermes.

woshi82 avatar woshi82 commented on April 25, 2024 1

facebook/react-native#25986 (comment)
@Zloka

YES,but not work.
My project has used Jsc, and disable Hermes.
It OK in android 6.* 7.*
It has crashed in android 5.0

from hermes.

mhorowitz avatar mhorowitz commented on April 25, 2024

I don't really know a lot about fastlane and how it interacts with gradle, so I'm not knowledgeable enough to answer that. Perhaps someone else is, but you might be better off opening a react-native issue, since this seems more likely to be an issue with the react native build files than the hermes build files, and there are more people paying attention to these kinds of issues over there.

That said, the error you're seeing implies that the apk doesn't have a libhermes.so or a libjsc.so in it. Can you look at your apk, and see if either is there? If you're building without hermes, then libjsc.so should be in the apk, and if it's not, then that's the problem you'll need to understand and fix.

from hermes.

owinter86 avatar owinter86 commented on April 25, 2024

Is this related to this issue I am having with Hermes not working with (.abb) bundle releases?

https://github.com/facebook/hermes/issues/80

from hermes.

Zloka avatar Zloka commented on April 25, 2024

Not sure if it's relevant to you guys, but I ran into a somewhat similar issue where jsc wasn't being loaded. This comment might help: facebook/react-native#25986 (comment)

from hermes.

IamMasterWayne avatar IamMasterWayne commented on April 25, 2024

+1

from hermes.

Zloka avatar Zloka commented on April 25, 2024

@woshi82 Did you look into my comment into the other issue? facebook/react-native#25986 (comment)

from hermes.

yasir-netlinks avatar yasir-netlinks commented on April 25, 2024

Hi guys, I am receiving crashes and mostly from a user with android 6.0.1 and also, 7.1.1, '5.1.1'
Also, l'm wondering if we can recreate this issue on debug mode, can we !!

from hermes.

miguelfaggioni avatar miguelfaggioni commented on April 25, 2024

Any news on this???. Crashes all over android 6.0 devices

from hermes.

Pingou avatar Pingou commented on April 25, 2024

Would be very nice to have a fix on that, I resorted to using APK instead of AAB, but now the app is 3x bigger.

from hermes.

miguelfaggioni avatar miguelfaggioni commented on April 25, 2024

I did a review of the issue using crashlytics. The problem seems to be on the emulator/dev devices. In my case, 100% of the events were tagged as a Nexus device using Andriod 6.0 (At this time, I was using the simulator).

Hope it helps

from hermes.

mhorowitz avatar mhorowitz commented on April 25, 2024

As observed above, this error will happen when JSC can't load, and Hermes is not enabled. I have landed a change in facebook/react-native@65d3167 to clarify the warning. I'll try to get this picked into RN 0.62, but for now I'm going to close this issue, in favor of reports based on the new code which will help us diagnose this better.

from hermes.

Desintegrator avatar Desintegrator commented on April 25, 2024

has same issue on android 4 when hermes is disabled

from hermes.

mikehardy avatar mikehardy commented on April 25, 2024

@Desintegrator minSdkVersion for react-native is 21 now, I doubt Android 4.x issues will see any attention at all.

from hermes.

Desintegrator avatar Desintegrator commented on April 25, 2024

@mikehardy is there any official announcement about that? RN repo says it supports sdk 16 or newer.

from hermes.

liamjones avatar liamjones commented on April 25, 2024

@Desintegrator See facebook/react-native@a17ff44 - it's happening in 0.64

from hermes.

iqqmuT avatar iqqmuT commented on April 25, 2024

There is a PR related to the error java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so: facebook/react-native#30749

The PR does not fix the real issue, but it fixes the error handling. Like many have said, the error about libhermes.so is misguiding because the real issue must be something to do with JSC loading when Hermes is disabled.

from hermes.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.