Skip to content

Missing libjsc.so in the arm64 build #143

Open
@rfestag

Description

@rfestag

Issue Description

I playing with an example project that enables pnpm to be used with React Native (https://github.com/vjpr/pnpm-react-native-example). After manually installing @react-native-community/cli-platform-android, I was able to get it to build and install on my Pixel 3. Unfortunately, it immediately crashed.

Running adb logcat *:E gave me the following error:

2-28 11:16:49.986 25439 25439 E SoLoader: couldn't find DSO to load: libjscexecutor.so caused by: dlopen failed: library "libjsc.so" not found: needed by /data/app/~~67CGxiQSd0m7OQ8TSCA2_g==/com.myproject-grXe2H7eonB2NHT7xx4TlQ==/lib/arm64/libjscexecutor.so in namespace classloader-namespace result: 0
02-28 11:16:50.239 25439 25489 E libc    : Access denied finding property "vendor.gralloc.disable_ahardware_buffer"
02-28 11:16:50.529  1061  6232 E statsd  : Stats puller failed for tag: 10038 at 1367719882693279
02-28 11:16:50.838  1061  6232 E statsd  : Gauge Stats puller failed for tag: 10062 at 1367719882693279
02-28 11:16:50.838  1061  6232 E statsd  : Gauge Stats puller failed for tag: 10063 at 1367719882693279
02-28 11:17:00.305 25439 25515 E SoLoader: couldn't find DSO to load: libhermes.so
02-28 11:17:00.305 25439 25515 E SoLoader: 	SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/user/0/com.myproject/lib-main flags = 1]
02-28 11:17:00.305 25439 25515 E SoLoader: 	SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/~~67CGxiQSd0m7OQ8TSCA2_g==/com.myproject-grXe2H7eonB2NHT7xx4TlQ==/lib/arm64 flags = 0]
02-28 11:17:00.305 25439 25515 E SoLoader: 	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
02-28 11:17:00.305 25439 25515 E SoLoader: 	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
02-28 11:17:00.305 25439 25515 E SoLoader: 	Native lib dir: /data/app/~~67CGxiQSd0m7OQ8TSCA2_g==/com.myproject-grXe2H7eonB2NHT7xx4TlQ==/lib/arm64
02-28 11:17:00.305 25439 25515 E SoLoader:  result: 0
02-28 11:17:00.308 25439 25515 E AndroidRuntime: FATAL EXCEPTION: create_react_context
02-28 11:17:00.308 25439 25515 E AndroidRuntime: Process: com.myproject, PID: 25439
02-28 11:17:00.308 25439 25515 E AndroidRuntime: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/user/0/com.myproject/lib-main flags = 1]
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/~~67CGxiQSd0m7OQ8TSCA2_g==/com.myproject-grXe2H7eonB2NHT7xx4TlQ==/lib/arm64 flags = 0]
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	Native lib dir: /data/app/~~67CGxiQSd0m7OQ8TSCA2_g==/com.myproject-grXe2H7eonB2NHT7xx4TlQ==/lib/arm64
02-28 11:17:00.308 25439 25515 E AndroidRuntime:  result: 0
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:896)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:725)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:649)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:629)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1017)
02-28 11:17:00.308 25439 25515 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:923)

I inspected the APK, and sure enough there was no libjsc.so in the arm64 build:

unzip -l ./android/app/build/outputs/apk/debug/app-debug.apk | grep jsc
   325784  1980-00-00 00:00   lib/arm64-v8a/libjscexecutor.so
 10163664  1980-00-00 00:00   lib/armeabi-v7a/libjsc.so
   259800  1980-00-00 00:00   lib/armeabi-v7a/libjscexecutor.so
 12688204  1980-00-00 00:00   lib/x86/libjsc.so
   321256  1980-00-00 00:00   lib/x86/libjscexecutor.so
 14051720  1980-00-00 00:00   lib/x86_64/libjsc.so
   342440  1980-00-00 00:00   lib/x86_64/libjscexecutor.so

Version, config, any additional info

It looks like React Native is pulling from the git repo, and was building against 245459.0.0. I was able to work around the issue by manually install jsc-android in my application, forcing me to fall back to 241213.1.0. I can only assume there are meaningful udpates/changes in the past 2 years, so it would be great if this could be resolved. I've seen a number of tickets referencing crashes with 245459.0.0, so perhaps this is related?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions