mozilla / mentat

UNMAINTAINED A persistent, relational store inspired by Datomic and DataScript.
https://mozilla.github.io/mentat/
Apache License 2.0
1.65k stars 115 forks source link

Android pre-API21: Exception java/lang/UnsatisfiedLinkError; Cannot load library: reloc_library[1306]: 1165 cannot locate 'mmap64' #723

Open grigoryk opened 6 years ago

grigoryk commented 6 years ago

Seeing this on Android API16 while trying to use the Android SDK.

D/dalvikvm( 2491): Trying to load lib /data/data/org.mozilla.samplefenixprofile/lib/libmentat_ffi.so 0xa711e900
W/dalvikvm( 2491): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/mozilla/mentat/Mentat;
D/AndroidRuntime( 2491): Shutting down VM
W/dalvikvm( 2491): threadid=1: thread exiting with uncaught exception (group=0xa669c228)
E/AndroidRuntime( 2491): FATAL EXCEPTION: main
E/AndroidRuntime( 2491): java.lang.ExceptionInInitializerError
E/AndroidRuntime( 2491):    at org.mozilla.samplefenixprofile.MainActivity.onCreate(MainActivity.kt:14)
E/AndroidRuntime( 2491):    at android.app.Activity.performCreate(Activity.java:5008)
E/AndroidRuntime( 2491):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
E/AndroidRuntime( 2491):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
E/AndroidRuntime( 2491):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
E/AndroidRuntime( 2491):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
E/AndroidRuntime( 2491):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
E/AndroidRuntime( 2491):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 2491):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 2491):    at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime( 2491):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 2491):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 2491):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime( 2491):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 2491):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 2491): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1306]:  1165 cannot locate 'mmap64'...
E/AndroidRuntime( 2491): 
E/AndroidRuntime( 2491):    at java.lang.Runtime.loadLibrary(Runtime.java:370)
E/AndroidRuntime( 2491):    at java.lang.System.loadLibrary(System.java:535)
E/AndroidRuntime( 2491):    at org.mozilla.mentat.Mentat.<clinit>(Mentat.java:26)
E/AndroidRuntime( 2491):    ... 15 more
W/ActivityManager( 1520):   Force finishing activity org.mozilla.samplefenixprofile/.MainActivity
grigoryk commented 6 years ago

Same error, but better wording on API19. java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "mmap64" referenced by "libmentat_ffi.so"...

grigoryk commented 6 years ago

It seems like there's no mmap64 before API21.

ncalexan commented 6 years ago

This is all just Google butchering various parts of the tooling that they ship. For example, https://searchfox.org/mozilla-central/rev/38bcf897f1fa19c1eba441a611cf309482e0d6e5/nsprpub/pr/src/md/unix/unix.c#2716-2720 is working around exactly this issue. We have people (particularly froydnj) who know lots about Android NDK symbol wrinkles; we can definitely address this type of thing if we need to.