oracle / graal

GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀
https://www.graalvm.org
Other
20.21k stars 1.62k forks source link

Graal Initialization Failure - Intel i3 Processors 2nd Gen #9592

Open codewithakamathb opened 2 weeks ago

codewithakamathb commented 2 weeks ago

We where able to consume Graal Generated one of the shared library in both Windows as well as MAC. We see from logs from certain customers Graal Initialization Failure. Currently we see 5% failure in our application. We see majority of the customer failures are occurring on AMD Gen 2 and Intel i3 Gen 3 and below.

Steps to reproduce the issue Run simple app on following mentioned Processors

Describe GraalVM and your environment:

https://download.oracle.com/graalvm/22/archive/graalvm-jdk-22_macos-x64_bin.tar.gz

More details Command we used WIN: "C:\Program Files\graalvm-jdk-22+36.1\bin\native-image.cmd" -cp .\bin\fps-engine-native-win-%FPS_ENGINE_JAR_VERSION%-jar-with-dependencies.jar --shared --no-fallback --allow-incomplete-classpath -H:IncludeResources="..json|..xml|.*.conf" "-H:Name=fps-engine" -H:ConfigurationFileDirectories=META-INF/native-image -O3 -H:GenerateDebugInfo=0

MAC: "graalvm-jdk-22+36.1/Contents/Home/bin/native-image" -cp ./bin/fps-engine-native-win-$FPS_ENGINE_JAR_VERSION-jar-with-dependencies.jar --shared --no-fallback --allow-incomplete-classpath -H:IncludeResources="..json|..xml|.*.conf" "-H:Name=fps-engine" -H:ConfigurationFileDirectories=META-INF/native-image -march=x86-64 --target=darwin-amd64

Do we have list of Process Architecture supported?

selhagani commented 2 weeks ago

Hi @codewithakamathb,

Thank you for reaching out to us about this. Can you try using the latest version of graalvm found here? it should give you a list of GraalVM versions alongside their architectures.

Also to be sure can you test creating the native image from a simple java class to be sure that the issue is indeed linked to the processor type used?

You can do so following these steps:

Create your java class. For example this:

     public static void main(String[] args) {
         System.out.println("Hello, Native World!");
     }
 }

Compile it and build a native executable from the Java class javac HelloWorld.java native-image HelloWorld

Run the application: ./helloworld

Could you also provide us with the exact error that you're seeing when it fails please?

Thank you

sowrab1994 commented 1 week ago

Hi @codewithakamathb

Found one stackoverflow article about this issue - https://stackoverflow.com/questions/78542332/graal-create-isolate-fuction-return-error-graalvm-native-image

Could you please try adding -march=compatibility

commandline to native-image command ? I have tried it and it seems to be working.

@selhagani Could you please confirm if this can be used to fix the issue ?

selhagani commented 5 days ago

Hi @codewithakamathb, did you get a chance to test? if yes could you please share the found error with me?