realm / realm-java

Realm is a mobile database: a replacement for SQLite & ORMs
http://realm.io
Apache License 2.0
11.47k stars 1.75k forks source link

UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH/DT_GNU_HASH #7894

Open victorjimbei opened 5 months ago

victorjimbei commented 5 months ago

How frequently does the bug occur?

Always

Description

Hello, I was testing our appliaction with an Android emulator with Android 15 with support for 16KB page sizes, and it crashed with the below stacktrace when trying to init the Realm instance.

Stacktrace & log output

java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH/DT_GNU_HASH in "/data/data/com.example.realmsampleapplication/app_lib/librealm-jni.so.10.18.0" (new hash type from the future?) at java.lang.Runtime.load0(Runtime.java:933) at java.lang.System.load(System.java:1729) at com.getkeepsafe.relinker.SystemLibraryLoader.loadPath(SystemLibraryLoader.java:29) at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:204) at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136) at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70) at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:57) at io.realm.internal.RealmCore.loadLibrary(RealmCore.java:60) at io.realm.Realm.initializeRealm(Realm.java:348) at io.realm.Realm.init(Realm.java:263) at com.example.realmsampleapplication.MainActivity.onCreate(MainActivity.kt:20)

Can you reproduce the bug?

Always

Reproduction Steps

I've created a sample app to reproduce this bug and pushed it on github. Steps to reproduce:

  1. Clone the RealmSampleApplication project.
  2. Create an Android emulator following steps from this page: https://developer.android.com/guide/practices/page-sizes#16kb-emulator
  3. Build and run the app.
  4. It will crash as soon as the Realm.init(this) is called.

Version

Java SDK 10.18.0 or Kotlin SDK 1.16.0

What Atlas App Services are you using?

Local Database only

Are you using encryption?

No

Platform OS and version(s)

Android 15 Beta 2 (Android API VanillaIceCream (Google APIs Page Size 16KB))

Build environment

Android Studio version: Android Studio Koala | 2024.1.1 Beta 2 Android Build Tools version: 35-rc4 Gradle version: 8.4.1

sync-by-unito[bot] commented 5 months ago

➤ PM Bot commented:

Jira ticket: RJAVA-1264

VicMikhailau commented 5 months ago

The same issue.

yd-threra-and commented 5 months ago

We are also encountering this issue with the Realm SDK on Android 15 emulators with 16 KB page sizes.

We are in the middle of developing our next official release that will support Android 15, and this issue is critical for our progress. Could you please provide any updates on the status of this issue? Is there a planned fix for both the Java and Kotlin SDKs?

victorjimbei commented 4 months ago

A similar issue for the kotlin version is in progress.

Mihir3646 commented 4 months ago

On Realm.init(this); getting the same error in lib version 10.18.0

Fatal Exception: java.lang.UnsatisfiedLinkError
dlopen failed: cannot locate symbol "ExecuteProgram" referenced by "/data/data/com.my.app/app_lib/librealm-jni.so.10.18.0"...
java.lang.Runtime.load0 (Runtime.java:933)
java.lang.System.load (System.java:1729)
com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal (ReLinkerInstance.java:204)
com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary (ReLinkerInstance.java:134)
com.getkeepsafe.relinker.ReLinker.loadLibrary (ReLinker.java:70)
com.getkeepsafe.relinker.ReLinker.loadLibrary (ReLinker.java:57)
io.realm.internal.RealmCore.loadLibrary (RealmCore.java:60)
io.realm.Realm.isInstantApp (Realm.java:318)
io.realm.Realm.initializeRealm (Realm.java:344)
io.realm.Realm.init (Realm.java:47) 
swankjesse commented 4 months ago

I saw a similar crash with an unrelated cause. I was able to fix it in our NDK project by following the Android guide, Support 16 KB page sizes.

ridcully99 commented 3 months ago

So, is this project now abandoned by MongoDB? This issue here will break all apps using Realm on Android devices with the new 16KB page size and they don't even care.

Mihir3646 commented 3 months ago

So, is this project now abandoned by MongoDB? This issue here will break all apps using Realm on Android devices with the new 16KB page size and they don't even care.

Yes, it's almost 2 months, and still no update on this. Really !!!

mannodermaus commented 3 months ago

I ended up compiling Realm myself with the 16 KB page size flags, and this caused our crash on launch to go away. While it's a pretty simple change, it needs some more thorough testing (esp. with the object server library, which we aren't using in our project). https://github.com/realm/realm-java/pull/7897

asadwaheed1 commented 3 months ago

I am having the same problem on android emulator running android 15 with 16KB page size rom

ABINAYASEL commented 3 months ago

I am facing same issue, when will be the new version released with this fix?

victorjimbei commented 2 months ago

Are there plans to release a new version with this fix in place?