Repository navigation
Commit 7b95167
vendor-hermes: advance the pin past Hermes' JSI_UNSTABLE default flip
The Android test app crashed on startup, in `NodeApiHostPackage.<init>`:
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol
"_ZTIN8facebook3jsi10SerializedE" referenced by ".../libhermesvm.so"
com.facebook.soloader.SoLoaderDSONotFoundError: couldn't find DSO to
load: libhermesvm.so
That symbol is `typeinfo for facebook::jsi::Serialized`. JSI's
`Serialized` / `ISerialization` APIs sit behind `#ifdef JSI_UNSTABLE`,
and React Native never defines it when building the `libjsi.so` it ships
in the ReactAndroid AAR. Our pinned Hermes still defaulted `JSI_UNSTABLE`
to ON, so `hermesvm` compiled those APIs in and referenced symbols that
nothing in the APK defines.
Apple builds are unaffected because JSI is compiled into the `hermesvm`
framework itself; on Android the two are separate shared libraries, and
RN's hermes-engine build imports `libjsi.so` rather than packaging the
copy Hermes builds for itself.
facebook/hermes 5a795c9f8 ("Fix: JSI_UNSTABLE CMake flag should be OFF by
default") is the immediate child of the previous pin, so this picks up
the one-line fix and nothing else.
Verified by rebuilding the release APK for x86_64: `libhermesvm.so` no
longer references `jsi::Serialized`, and every undefined JSI symbol it
does have is defined by a library shipped in the APK.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 84cf4cc commit 7b95167
1 file changed
Lines changed: 10 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
34 | 43 | | |
35 | 44 | | |
36 | 45 | | |
| |||
0 commit comments