Skip to content

[Android] Runtime sample app and test crash with OpenJDK 21 #102714

Open
@matouskozak

Description

@matouskozak

Description

Android sample app and tests fail when using OpenJDK 21 on the latest dotnet/runtime main. Using OpenJDK 17 is a working workaround.

Reproduction Steps

  1. Install OpenJDK 21 https://learn.microsoft.com/en-us/java/openjdk/download#openjdk-21
  2. Build dotnet/runtime locally (tested on f4c9264)
  3. Run Android sample app: cd src/mono/sample/Android and make run

Expected behavior

The Android sample app starts normally.

Actual behavior

The compilation fails with:

error MSB4018: The "AndroidAppBuilderTask" task failed unexpectedly.
error MSB4018: System.Exception: Error: Process returned non-zero exit code: Error in <PATH_TO_RUNTIME>/artifacts/bin/AndroidSampleApp/arm64/Debug/android-arm64/publish/apk/obj/net/dot/MainActivity$1.class:
error MSB4018: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
error MSB4018: Compilation failed with an internal error.
error MSB4018: Exception in thread "main" java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: <PATH_TO_RUNTIME>/artifacts/bin/AndroidSampleApp/arm64/Debug/android-arm64/publish/apk/obj/net/dot/MainActivity$1.class
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:126)
error MSB4018:     at com.android.tools.r8.D8.main(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:5)
error MSB4018: Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: <PATH_TO_RUNTIME>/artifacts/bin/AndroidSampleApp/arm64/Debug/android-arm64/publish/apk/obj/net/dot/MainActivity$1.class
error MSB4018:     at Version.fakeStackEntry(Version_8.2.2-dev.java:0)
error MSB4018:     at com.android.tools.r8.M.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:5)
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:81)
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:32)
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:31)
error MSB4018:     at com.android.tools.r8.utils.R0.b(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:2)
error MSB4018:     at com.android.tools.r8.D8.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:26)
error MSB4018:     at com.android.tools.r8.D8.b(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:13)
error MSB4018:     at com.android.tools.r8.D8.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:24)
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:113)
error MSB4018:     ... 1 more
error MSB4018: Caused by: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
error MSB4018:     at com.android.tools.r8.graph.u2.<init>(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:5)
error MSB4018:     at com.android.tools.r8.graph.p1.c(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:3)
error MSB4018:     at com.android.tools.r8.graph.Q3.b(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:10)
error MSB4018:     at com.android.tools.r8.internal.Ga.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:873)
error MSB4018:     at com.android.tools.r8.graph.T3.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:44)
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:129)
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:130)
error MSB4018:     at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:128)
error MSB4018:     at com.android.tools.r8.graph.T3.b(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:2)
error MSB4018:     at com.android.tools.r8.dex.a.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:27)
error MSB4018:     at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1456)
error MSB4018:     at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
error MSB4018:     at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
error MSB4018:     at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
error MSB4018:     at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
error MSB4018:     at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
error MSB4018:     Suppressed: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.android.tools.r8.utils.T0: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
error MSB4018:             at com.android.tools.r8.dex.c.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:60)
error MSB4018:             at com.android.tools.r8.dex.c.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:9)
error MSB4018:             at com.android.tools.r8.dex.c.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:8)
error MSB4018:             at com.android.tools.r8.D8.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:29)
error MSB4018:             at com.android.tools.r8.D8.d(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:17)
error MSB4018:             at com.android.tools.r8.D8.c(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:1)
error MSB4018:             at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:28)
error MSB4018:             at com.android.tools.r8.utils.R0.b(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:2)
error MSB4018:             at com.android.tools.r8.D8.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:26)
error MSB4018:             at com.android.tools.r8.D8.b(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:13)
error MSB4018:             at com.android.tools.r8.D8.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:24)
error MSB4018:             at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:113)
error MSB4018:             at com.android.tools.r8.D8.main(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:5)
error MSB4018:     Caused by: java.util.concurrent.ExecutionException: com.android.tools.r8.utils.T0: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
error MSB4018:             at java.base/java.util.concurrent.ForkJoinTask.reportExecutionException(ForkJoinTask.java:581)
error MSB4018:             at java.base/java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:993)
error MSB4018:             at com.android.tools.r8.utils.d3.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:64)
error MSB4018:             at com.android.tools.r8.dex.c.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:41)
error MSB4018:             ... 12 more
error MSB4018:     Caused by: com.android.tools.r8.utils.T0: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
error MSB4018:             at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:149)
error MSB4018:             at com.android.tools.r8.utils.R0.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:128)
error MSB4018:             at com.android.tools.r8.graph.T3.b(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:2)
error MSB4018:             at com.android.tools.r8.dex.a.a(R8_8.2.2-dev_53a55043254cc5be8ef500331bba25d1b4ca4bc2cd66c555d4358bf672a1f10a:27)
error MSB4018:             at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1456)
error MSB4018:             at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
error MSB4018:             at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
error MSB4018:             at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
error MSB4018:             at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
error MSB4018:             at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
error MSB4018:     Caused by: [CIRCULAR REFERENCE: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null]
error MSB4018:    at Utils.RunProcess(TaskLoggingHelper logger, String path, String args, IDictionary`2 envVars, String workingDir, Boolean ignoreErrors, Boolean silent, MessageImportance debugMessageImportance) in <PATH_TO_RUNTIME>/src/tasks/Common/Utils.cs:line 126
error MSB4018:    at ApkBuilder.BuildApk(String runtimeIdentifier, String mainLibraryFileName, String monoRuntimeHeaders) in <PATH_TO_RUNTIME>/src/tasks/AndroidAppBuilder/ApkBuilder.cs:line 415
error MSB4018:    at AndroidAppBuilderTask.Execute() in <PATH_TO_RUNTIME>/src/tasks/AndroidAppBuilder/AndroidAppBuilder.cs:line 141
error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)

Regression?

Yes

Known Workarounds

Use OpenJDK 17

Configuration

tested on dotnet/runtime main f4c9264
OS: MacOS
Arch: arm64

Other information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions