Skip to content

New app crashes enabling Hermes on Android emulators with API <= 19 #25646

Closed
@lcarrettin

Description

@lcarrettin

Enabling Hermes in a new app created from scratch, the app crashes at startup on Android x86 emulators from API 16 to 19.

This is the logcat in case of a debug build:

07-14 17:03:50.673 2028-2068/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
java.lang.ExceptionInInitializerError
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:27)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:949)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so caused by: Cannot load library: reloc_library[1306]: 1170 cannot locate 'sigemptyset'...

    at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:738)
    at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:591)
    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:529)
    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:484)
    at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
    at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:27) 
    at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:949) 
    at java.lang.Thread.run(Thread.java:856) 

The Release variant shows different errors based on the emulator API level. For example:

  • API 16
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so caused by: Cannot load library: reloc_library[1306]: 1170 cannot locate 'sigemptyset'...
  • API 19
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so caused by: dlopen failed: cannot locate symbol "posix_fallocate" referenced by "libhermes.so"...

The app doesn't crash if API > 19.

React Native version:
System:
OS: macOS 10.14.5
CPU: (12) x64 Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
Memory: 1.79 GB / 16.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 10.14.1 - /usr/local/bin/node
Yarn: 1.15.2 - /usr/local/bin/yarn
npm: 6.4.1 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
Android SDK:
Android NDK: 20.0.5594570
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.6 => 16.8.6
react-native: 0.60.3 => 0.60.3
npmGlobalPackages:
react-native-cli: 2.0.1

Steps To Reproduce

  1. Create a new app:
    react-native init AwesomeProject
  2. Enable Hermes as explained in the guide
  3. Run the app on an Android x86 emulator from API 16 to 19.

Describe what you expected to happen:
the app shouldn't crash.

Snack, code example, or link to a repository:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions