Detox icon indicating copy to clipboard operation
Detox copied to clipboard

Tests fail with error "java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so"

Open michalgrzegor opened this issue 1 year ago • 22 comments

What happened?

After upgrading react-native to version 0.68.2 from 0.63.4, the tests fail. The built application works. The error that is thrown by the tests is:

DetoxRuntimeError: Failed to run application on the device

    HINT: Most likely, your tests have timed out and called detox.cleanup() while it was waiting for "ready" message (over WebSocket) from the instrumentation process.

      3 | describe('Example', () => {
      4 |   beforeAll(async () => {
    > 5 |     await device.launchApp()
        |                  ^
      6 |   })
      7 |

      at onboarding.e2e.ts:5:18
      at onboarding.e2e.ts:8:71
      at Object.<anonymous>.__awaiter (onboarding.e2e.ts:4:12)
      at Object.<anonymous> (onboarding.e2e.ts:4:24)

By reading the more detailed logs, we find that the following command causes an error:

13:13:09.324 detox[105379] DEBUG: [SPAWN_CMD, #27, cpid=105524] /home/user/Library/Android/sdk/platform-tools/adb -s emulator-14004 shell am instrument -w -r -e detoxServer ws://localhost:39081 -e detoxSessionId d6ae8bef-12df-0b4e-4336-c96d21b681d9 -e debug false com.revelator.originalworks.test/androidx.test.runner.AndroidJUnitRunner
13:13:10.443 detox[105379] DEBUG: [SPAWN_END, #27, cpid=105524] /home/user/Library/Android/sdk/platform-tools/adb -s emulator-14004 shell am instrument -w -r -e detoxServer ws://localhost:39081 -e detoxSessionId d6ae8bef-12df-0b4e-4336-c96d21b681d9 -e debug false com.revelator.originalworks.test/androidx.test.runner.AndroidJUnitRunner exited with code #0

adb shell output:

 detoxSessionId d6ae8bef-12df-0b4e-4336-c96d21b681d9 -e debug false com.revelator.originalworks.test/androidx.test.runner.AndroidJUnitRunner                                                                     <
INSTRUMENTATION_RESULT: shortMsg=Process crashed.
INSTRUMENTATION_CODE: 0

These are logs from adb logcat. This is the error part.

logs:
07-14 15:31:24.634 19982 19982 E SoLoader: couldn't find DSO to load: libhermes.so
07-14 15:31:24.634 19982 19982 E SoLoader: 	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~uSoN9VPkk1WOrWDuOLHKBA==/com.revelator.originalworks-JByrEhVwC7zOOGW0bGmoXg==/lib/x86_64 flags = 0]
07-14 15:31:24.634 19982 19982 E SoLoader: 	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~_40r519kmaU-M2cpDflLfQ==/com.revelator.originalworks.test-iZJ33nB4_UiufyC2njdQTg==/base.apk!/lib/x86_64]
07-14 15:31:24.634 19982 19982 E SoLoader: 	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
07-14 15:31:24.634 19982 19982 E SoLoader: 	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
07-14 15:31:24.634 19982 19982 E SoLoader: 	Native lib dir: /data/app/~~uSoN9VPkk1WOrWDuOLHKBA==/com.revelator.originalworks-JByrEhVwC7zOOGW0bGmoXg==/lib/x86_64
07-14 15:31:24.634 19982 19982 E SoLoader:  result: 0
07-14 15:31:24.635 19982 19982 W System.err: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
07-14 15:31:24.635 19982 19982 W System.err: 	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~uSoN9VPkk1WOrWDuOLHKBA==/com.revelator.originalworks-JByrEhVwC7zOOGW0bGmoXg==/lib/x86_64 flags = 0]
07-14 15:31:24.635 19982 19982 W System.err: 	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~_40r519kmaU-M2cpDflLfQ==/com.revelator.originalworks.test-iZJ33nB4_UiufyC2njdQTg==/base.apk!/lib/x86_64]
07-14 15:31:24.635 19982 19982 W System.err: 	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
07-14 15:31:24.635 19982 19982 W System.err: 	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
07-14 15:31:24.635 19982 19982 W System.err: 	Native lib dir: /data/app/~~uSoN9VPkk1WOrWDuOLHKBA==/com.revelator.originalworks-JByrEhVwC7zOOGW0bGmoXg==/lib/x86_64
07-14 15:31:24.635 19982 19982 W System.err:  result: 0
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.hermes.reactexecutor.HermesExecutor.loadLibrary(HermesExecutor.java:25)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:19)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.hermes.reactexecutor.HermesExecutor.loadLibrary(HermesExecutor.java:23)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory(ReactInstanceManagerBuilder.java:369)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:318)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.react.ReactNativeHost.createReactInstanceManager(ReactNativeHost.java:95)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.facebook.react.ReactNativeHost.getReactInstanceManager(ReactNativeHost.java:42)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.revelator.originalworks.MainApplication.onCreate(MainApplication.java:55)
07-14 15:31:24.635 19982 19982 W System.err: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
07-14 15:31:24.635 19982 19982 W System.err: 	at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:442)
07-14 15:31:24.635 19982 19982 W System.err: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6712)
07-14 15:31:24.635 19982 19982 W System.err: 	at android.app.ActivityThread.access$1300(ActivityThread.java:237)
07-14 15:31:24.635 19982 19982 W System.err: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
07-14 15:31:24.635 19982 19982 W System.err: 	at android.os.Handler.dispatchMessage(Handler.java:106)
07-14 15:31:24.635 19982 19982 W System.err: 	at android.os.Looper.loop(Looper.java:223)
07-14 15:31:24.635 19982 19982 W System.err: 	at android.app.ActivityThread.main(ActivityThread.java:7656)
07-14 15:31:24.635 19982 19982 W System.err: 	at java.lang.reflect.Method.invoke(Native Method)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
07-14 15:31:24.635 19982 19982 W System.err: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
07-14 15:31:24.635 19982 19982 D AndroidRuntime: Shutting down VM
07-14 15:31:24.636 19982 19982 E AndroidRuntime: FATAL EXCEPTION: main
07-14 15:31:24.636 19982 19982 E AndroidRuntime: Process: com.revelator.originalworks, PID: 19982
07-14 15:31:24.636 19982 19982 E AndroidRuntime: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~uSoN9VPkk1WOrWDuOLHKBA==/com.revelator.originalworks-JByrEhVwC7zOOGW0bGmoXg==/lib/x86_64 flags = 0]
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~_40r519kmaU-M2cpDflLfQ==/com.revelator.originalworks.test-iZJ33nB4_UiufyC2njdQTg==/base.apk!/lib/x86_64]
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	Native lib dir: /data/app/~~uSoN9VPkk1WOrWDuOLHKBA==/com.revelator.originalworks-JByrEhVwC7zOOGW0bGmoXg==/lib/x86_64
07-14 15:31:24.636 19982 19982 E AndroidRuntime:  result: 0
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(Unknown Source:0)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory(ReactInstanceManagerBuilder.java:351)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:318)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.react.ReactNativeHost.createReactInstanceManager(ReactNativeHost.java:95)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.facebook.react.ReactNativeHost.getReactInstanceManager(ReactNativeHost.java:42)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.revelator.originalworks.MainApplication.onCreate(MainApplication.java:55)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:442)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6712)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at android.app.ActivityThread.access$1300(ActivityThread.java:237)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:223)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7656)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
07-14 15:31:24.636 19982 19982 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
07-14 15:31:24.636 19982 19982 E AndroidJUnitRunner: An unhandled exception was thrown by the app.
07-14 15:31:24.638 19982 19982 E InstrumentationResultPrinter: Failed to mark test No Tests as finished after process crash
07-14 15:31:24.638 19982 19982 I AndroidJUnitRunner: Bringing down the entire Instrumentation process.

Setup ./android/build.gradle: https://pastebin.com/raw/kFP9SvkV ./android/app/build.gradle: https://pastebin.com/raw/AdYvm1tC DetoxTest.java: https://pastebin.com/raw/V8vZMt6E

What was the expected behaviour?

No response

Was it tested on latest Detox?

  • [X] I have tested this issue on the latest Detox release and it still reproduces.

Did your test throw out a timeout?

Help us reproduce this issue!

No response

In what environment did this happen?

Detox version: 19.6.9 React Native version: 0.68.2 Node version: 12.21 Device model: Nexus_5X_API_R Android version: 11 Test-runner (select one): jest+jasmine

Detox logs

https://pastebin.com/raw/2Z6s7bYj

Device logs

https://pastebin.com/raw/PHwrUEMY

More data, please!

No response

michalgrzegor avatar Jul 14 '22 14:07 michalgrzegor

I am facing a similar issue. I upgraded my app to 0.68.2 RN and got the same error.

ceharsh24 avatar Jul 15 '22 12:07 ceharsh24

oh, I'm so glad we're not the only ones!

kowalski avatar Jul 15 '22 13:07 kowalski

Also glad to have company!

We have the same java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so error on multiple machines.

I have found that the issue with libjscexecutor.so only causes an error and a crash when Detox is trying to open the app on the AVD (i.e. (device.launchApp()):

  1. When I open the compiled version of the app that Detox was choking on myself, in the same AVD, it runs fine.
  2. When I run the usual yarn react-native run-android (i.e. a standard Debug build, not with Detox), I also see the same libjscexecutor.so message in adb logcat, but it does not show as an error and does not cause the app to crash.
  3. Our tests run fine on our CI. This might be because we run those on a Release build, not a Debug build.

I unfortunately don't have any suggestions for a fix, but happy to try anything that the Detox team might recommend and report back. It would definitely be nice to get our tests running locally again!

To replicate

The Detox crash:

  1. Run detox build --configuration android.emu.debug && detox test --configuration android.emu.debug
  2. Detox successfully builds the app.
  3. Detox loads the app onto the AVD, but then immediately reports that the test has failed. I never see the app attempting to open in the GUI - there was no "flash" as the app is launched. It seems to crash before the splash screen even appears.
  4. adb logcat output shows the java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so error that @michalgrzegor reported. See my adb logcat - detox.txt

And then:

  1. Either run detox test --configuration android.emu.debug again, and cancel the script after it loads the .apk onto the AVD, or manually drop the .apk into the AVD.
  2. Tap to open the app.
  3. The app launches. When I adb logcat for this manual launch, I can see that the same libjscexecutor.so not found message is shown, but it doesn't seem to cause a crash. See adb logcat - manual.txt and:
07-16 17:16:55.753  7442  7442 D SoLoader: libjscexecutor.so not found on /data/app/~~R_UhU_1E1n0LFIT1zQeYTQ==/com.helloworld.redactedappname.debug-5imjrLF19cwQO_5Hhif2dA==/lib/x86_64
07-16 17:16:55.753  7442  7442 D SoLoader: libjscexecutor.so not found on /data/app/~~R_UhU_1E1n0LFIT1zQeYTQ==/com.helloworld.redactedappname.debug-5imjrLF19cwQO_5Hhif2dA==/base.apk!/lib/x86_64
07-16 17:16:55.753  7442  7442 D SoLoader: libjscexecutor.so not found on /system/lib64
07-16 17:16:55.753  7442  7442 D SoLoader: libjscexecutor.so not found on /vendor/lib64
07-16 17:16:55.755  7442  7442 E SoLoader: couldn't find DSO to load: libjscexecutor.so
07-16 17:16:55.755  7442  7442 E SoLoader: 	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~R_UhU_1E1n0LFIT1zQeYTQ==/com.helloworld.redactedappname.debug-5imjrLF19cwQO_5Hhif2dA==/lib/x86_64 flags = 0]
07-16 17:16:55.755  7442  7442 E SoLoader: 	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~R_UhU_1E1n0LFIT1zQeYTQ==/com.helloworld.redactedappname.debug-5imjrLF19cwQO_5Hhif2dA==/base.apk!/lib/x86_64]
07-16 17:16:55.755  7442  7442 E SoLoader: 	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
07-16 17:16:55.755  7442  7442 E SoLoader: 	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
07-16 17:16:55.755  7442  7442 E SoLoader: 	Native lib dir: /data/app/~~R_UhU_1E1n0LFIT1zQeYTQ==/com.helloworld.redactedappname.debug-5imjrLF19cwQO_5Hhif2dA==/lib/x86_64
07-16 17:16:55.755  7442  7442 E SoLoader:  result: 0

Environment

I've tried this in a bunch of different environments and versions of RN. While it's possible that I might have gotten a stale cache at some point, with all of these permutations, I definitely see the libjscexecutor.so crash issue on both RN 0.67.4 and 0.69.1.

  • Detox / RN version:
    • RN 0.69.1 + Detox 19.4.0, 19.7.0, 19.7.1
    • RN 0.67.4 + Detox 19.7.0, 19.7.1
  • Node version: 16.15.1
  • Android Device / Version: Pixel 3 and Pixel 5 AVDs, with both:
    • system-images;android-30;default;x86_64
    • system-images;android-29;default;x86
  • Test-runner: jest

hanno-jonlay avatar Jul 16 '22 21:07 hanno-jonlay

Downgrading soloader to 0.10.1 fixed this for me. However I have an entirely separate set of problems which is that Detox android is far too slow to accomplish a test #3486

shamilovtim avatar Jul 17 '22 00:07 shamilovtim

Downgrading soloader to 0.10.1 fixed this for me. However I have an entirely separate set of problems which is that Detox android is far too slow to accomplish a test #3486

This didn't do a trick for me, I still have the same error. What I've done:

  • Add
 apply from: "../../node_modules/react-native/react.gradle"
@@ -207,6 +208,8 @@ android {
 dependencies {
     implementation fileTree(dir: "libs", include: ["*.jar"])
     //noinspection GradleDynamicVersion
+
+    implementation 'com.facebook.soloader:soloader:0.10.1'
  • Run ./gradlew clean
  • Rebuild and run tests

I still have exact same error. @shamilovtim have you done anything additional to what I listed above?

kowalski avatar Jul 18 '22 10:07 kowalski

How strange. One of the first things I had tried last week was forcing Soloader to 0.10.3, but it didn't seem to fix the issue.

However, forcing it to 0.10.4 solves the problem for me (see releases):

In my android/app/build.gradle:

dependencies {
    ...
    implementation 'com.facebook.soloader:soloader:0.10.4+'
    ....
}

There seem to be several complaints in the Soloader project, regarding this error appearing in 64-bit environments. I'm guessing all of us are using "system-images;android-30;default;x86_64" or similar for our AVDs?

hanno-jonlay avatar Jul 18 '22 14:07 hanno-jonlay

@hanno-jonlay I thought that too for a minute. But already tried in several images.

  • android-30;default;x86_64
  • android-30;google_apis;x86_64
  • android-30;google_apis;x86

All of them log the same error: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/app/~~wWw63Xw3XuHckpe9HIzkGw==/com.myapp.test-eHV-I7_1b6vVx-wOOBZiRA==/base.apk!/lib/x86/libhermes.so" not found

I'm curious about the com.myapp.test ".test" information. That gives me an impression that the problem is coming from the test build used by detox.

Gerlison avatar Jul 18 '22 19:07 Gerlison

How strange. One of the first things I had tried last week was forcing Soloader to 0.10.3, but it didn't seem to fix the issue.

However, forcing it to 0.10.4 solves the problem for me (see releases):

In my android/app/build.gradle:

dependencies {
    ...
    implementation 'com.facebook.soloader:soloader:0.10.4+'
    ....
}

There seem to be several complaints in the Soloader project, regarding this error appearing in 64-bit environments. I'm guessing all of us are using "system-images;android-30;default;x86_64" or similar for our AVDs?

Tried the soloader 0.10.4, and that changed the logcat a little. Now I can see a new error: image

But I honestly don't know if this error is relevant or just a consequence of changing the soloader version.

Gerlison avatar Jul 18 '22 19:07 Gerlison

I'm guessing all of us are using "system-images;android-30;default;x86_64" or similar for our AVDs?

That's exactly what we're using.

That gives me an impression that the problem is coming from the test build used by detox.

I also think it's caused by detox somehow. As Michał mentioned in description, the apk built with assembleRelease works fine. It's only the apk built with assembleAndroidTest -DtestBuildType=debug that fails.

kowalski avatar Jul 19 '22 08:07 kowalski

I'm in the same boat as you - same problem

Arron-Gill avatar Jul 19 '22 16:07 Arron-Gill

Same, can't run detox against an android release build with hermes enabled.

rikur avatar Jul 19 '22 19:07 rikur

That's a hunch, but I'm starting to suspect this line: https://github.com/facebook/react-native/blob/b66db7a84093b0da9b619b1e187c2c812b16893e/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt#L228

I actually don't know kotlin or gradle, but what I think I'm looking at is a mechanism that removes from the bundle all files that match glob */libjsc.so. The error would be caused by the fact that normal app doesnt need libjsc but Detox test needs it.

I've tried commenitng out this line in node_modules and rebuilding the app, but I can't see to get it to use my modified code. Perhaps someone in this thread is more knowledgable and can confirm/disprove my conjecture.

kowalski avatar Jul 19 '22 20:07 kowalski

Unfortunately I don't think I can share much more on our end, as we now have this working in both RN 0.69.1 and 0.67.4 with the Soloader version pinning.

However, @kowalski - the link you've just posted reminds me of something I also stumbled across in earlier debugging here.

Specifically https://github.com/facebook/react-native/issues/25537#issuecomment-1104619909, which suggests setting the enableVmCleanup: false property in the android/app/build.gradle:

project.ext.react = [
    enableHermes: true,
    enableVmCleanup: false,
]

This was one of the first things I tried in our environment, but it didn't seem to have much effect at the time, so I ended up reverting it.

Perhaps you'll have more luck? It may be a better option than trying to patch node_modules directly.

hanno-jonlay avatar Jul 19 '22 23:07 hanno-jonlay

One last addition from me.

We're upgrading a couple of RN projects at the moment and have stumbled across a lot of discussion about Soloader 0.10.3 causing issues in Android instrumented tests:

  • https://github.com/reactwg/react-native-releases/discussions/26#discussioncomment-3166381
  • https://github.com/facebook/SoLoader/issues/94#issuecomment-1187800843

Good luck to all of you!

hanno-jonlay avatar Jul 20 '22 20:07 hanno-jonlay

Thanks @hanno-jonlay. None of the pointers resolved the issue for me, but I appreciate the effort.

I will wait for Expo 46 and hope that RN69 (with bundled Hermes) fixes the issue.

rikur avatar Jul 20 '22 23:07 rikur

we now have this working in both RN 0.69.1 and 0.67.4 with the Soloader version pinning.

@hanno-jonlay do I understand correctly that it works fine for you on 0.69.1? What exact version of Soloader have you pinned to?

kowalski avatar Jul 21 '22 12:07 kowalski

...

Tried the soloader 0.10.4, and that changed the logcat a little. Now I can see a new error: image

But I honestly don't know if this error is relevant or just a consequence of changing the soloader version.

Firstly i tried just to use specific version of soloader (0.10.4+) image , and that alone didn't work for detox test build, because it was causing another error. Which, later, I solved by doing the following guide: https://wix.github.io/Detox/docs/introduction/android/#setting-detox-up-as-a-compiling-dependency

Thank you all

Gerlison avatar Jul 21 '22 12:07 Gerlison

@hanno-jonlay do I understand correctly that it works fine for you on 0.69.1? What exact version of Soloader have you pinned to?

@kowalski - Yes - I'm pinned to 0.10.4 in both RN versions, and it appears to be working.

hanno-jonlay avatar Jul 21 '22 15:07 hanno-jonlay

fixing to implementation 'com.facebook.soloader:soloader:0.10.4+' fixed this for me

scottwio avatar Sep 07 '22 15:09 scottwio

this issue symptoms was release version that didn't work in release move while working in debug , for traceability reasons

aviatam avatar Sep 14 '22 14:09 aviatam

upgrading to 0.10.4 didn;t work

iamarjun avatar Sep 14 '22 18:09 iamarjun

Same issue for me (using the soloader:0.10.4+ fix, with Detox 19.12.1 and RN 0.68.2). The weird thing is the tests don't run for me on an Intel chip (building the app in x86_64) but it works for my colleagues running the exact same test code and build on an M1 chip with arm64-v8a

ggilchrist-ledger avatar Sep 15 '22 11:09 ggilchrist-ledger

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you believe the issue is still relevant, please test on the latest Detox and report back.

Thank you for your contributions!

For more information on bots in this repository, read this discussion.

stale[bot] avatar Oct 15 '22 15:10 stale[bot]

The issue has been closed for inactivity.

stale[bot] avatar Oct 22 '22 16:10 stale[bot]