-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Native AOT broken in Android-arm64 #76983
Comments
We are happy to accept community contributions to make native AOT to work on Android and other currently unsupported platforms. |
Tagging subscribers to 'arch-android': @steveisok, @akoeplinger Issue DetailsDescriptionI have been experimenting with Android and NativeAOT through JNI shared libraries that are consumed by the HelloJNI application. However with latest runtime version, opening the application closes it due to the absence of the "tls_CurrentThread" symbol into the compiled library. My last successful experiment was on 2022 July 20th with microsoft.dotnet.ilcompiler 7.0.0-rc.1.22370.2. The JNI library code is: https://github.com/josephmoresena/NativeAOT-AndroidHelloJniLib The branch I use to compile NativeAOT is: Reproduction Steps
Expected behaviorThe android application loads an shows a text generated by NativeAOT JNI library. Actual behaviorApplication crashes and debugger shows following error:
Regression?I don't know with accurrancy, latest succesfull experimente was mate on 2022 July 20th. Known WorkaroundsNo response Configuration
Other informationNo response
|
TLS-related issues were fixed by this in the past: dotnet/corert#8323. We either introduced a new place that needs an ifdef or something else regressed. (I'm on vacation and won't be looking at this more right now.) |
Fixed in #77475. |
Description
I have been experimenting with Android and NativeAOT through JNI shared libraries that are consumed by the HelloJNI application.
However with latest runtime version, opening the application closes it due to the absence of the "tls_CurrentThread" symbol into the compiled library.
My last successful experiment was on 2022 July 20th with microsoft.dotnet.ilcompiler 7.0.0-rc.1.22370.2.
The JNI library code is: https://github.com/josephmoresena/NativeAOT-AndroidHelloJniLib
The branch I use to compile NativeAOT is:
https://github.com/josephmoresena/runtime/tree/android
Reproduction Steps
export NDK_VER=r21e export ANDROID_NDK_ROOT=~/android-ndk-${NDK_VER} export ANDROID_SDK_ROOT=~/android-sdk export HOST_OS=linux export RUNTIME_REPO=~/source/repos/runtime
TARGET_BUILD_ARCH=arm64 ./build.sh -s clr.nativeaotruntime+clr.nativeaotlibs+libs+mono -arch arm64 -os Android -c Release -lc Release -rc Release
Expected behavior
The android application loads an shows a text generated by NativeAOT JNI library.
Actual behavior
Application crashes and debugger shows following error:
I/xample.hellojn: Late-enabling -Xcheck:jni E/xample.hellojn: Unknown bits set in runtime_flags: 0x8000 D/tperf_getInstance: processName = com.example.hellojni unsupported!!! D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.hellojni, PID: 17805 java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "tls_CurrentThread" referenced by "/data/app/com.example.hellojni-XDL8YyYt8MsAq_ToR3xQ8A==/base.apk!/lib/arm64-v8a/libhello-jni.so"... at java.lang.Runtime.loadLibrary0(Runtime.java:1071) at java.lang.Runtime.loadLibrary0(Runtime.java:1007) at java.lang.System.loadLibrary(System.java:1667) at com.example.hellojni.HelloJni.<clinit>(HelloJni.kt:72) at java.lang.Class.newInstance(Native Method) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45) at android.app.Instrumentation.newActivity(Instrumentation.java:1252) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3318) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3562) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2131) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7540) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
Regression?
I don't know with accurrancy, latest succesfull experimente was mate on 2022 July 20th.
Known Workarounds
No response
Configuration
Other information
No response
The text was updated successfully, but these errors were encountered: