Skip to content

Conversation

@jerboaa
Copy link
Collaborator

@jerboaa jerboaa commented Apr 6, 2023

This fixes Version.getCurrent() invocations for builds, not modifying the base JDK.

Closes: #6379

This fixes Version.getCurrent() invocations for builds, not modifying
the base JDK.

Closes: oracle#6379
@oracle-contributor-agreement oracle-contributor-agreement bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Apr 6, 2023
@jerboaa
Copy link
Collaborator Author

jerboaa commented Apr 6, 2023

@jerboaa jerboaa requested a review from fniephaus April 6, 2023 10:07
@fniephaus
Copy link
Member

I don't think this is needed when you have graalvm/mandrel-packaging@d0ba206 in place, or am I missing something? The builder forwards all external arguments anyway:

$ native-image -Dorg.graalvm.version="12.34.56" VersionTest
...
$ ./versiontest 
12.34.56

@zakkak
Copy link
Collaborator

zakkak commented Apr 6, 2023

The definition passed in the launcher is only used by the jvm running NativeImage, it doesn't seem to get passed to the jvm running NativeImageGeneratorRunner.

$ export VERBOSE_GRAALVM_LAUNCHERS=true
$ $GRAALVM_HOME/bin/native-image --verbose VersionTest
+ exec /home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../../bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -Dorg.graalvm.vendorversion=Mandrel-23.1.0-dev0b7c6a35993 '-Dorg.graalvm.vendor=GraalVM Community' -Dorg.graalvm.vendorurl=https://github.com/graalvm/mandrel/issues --upgrade-module-path /home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../jvmci/graal.jar --add-modules org.graalvm.truffle,org.graalvm.sdk --module-path /home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../truffle/truffle-api.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../jvmci/graal-sdk.jar -Dorg.graalvm.launcher.shell=true -Dorg.graalvm.launcher.executablename=/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/bin/native-image --add-exports=java.base/com.sun.crypto.provider=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.event=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.loader=org.graalvm.nativeimage.builder,org.graalvm.truffle --add-exports=java.base/jdk.internal.logger=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.misc=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto --add-exports=java.base/jdk.internal.module=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.org.objectweb.asm=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.perf=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.ref=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile --add-exports=java.base/jdk.internal.reflect=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.util=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.vm.annotation=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal.vm=org.graalvm.nativeimage.builder --add-exports=java.base/jdk.internal=org.graalvm.nativeimage.builder --add-exports=java.base/sun.invoke.util=org.graalvm.nativeimage.builder --add-exports=java.base/sun.net=org.graalvm.nativeimage.builder --add-exports=java.base/sun.nio.ch=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile --add-exports=java.base/sun.reflect.annotation=org.graalvm.nativeimage.builder --add-exports=java.base/sun.reflect.generics.factory=org.graalvm.nativeimage.builder --add-exports=java.base/sun.reflect.generics.reflectiveObjects=org.graalvm.nativeimage.builder --add-exports=java.base/sun.reflect.generics.repository=org.graalvm.nativeimage.builder --add-exports=java.base/sun.reflect.generics.scope=org.graalvm.nativeimage.builder --add-exports=java.base/sun.reflect.generics.tree=org.graalvm.nativeimage.builder --add-exports=java.base/sun.security.jca=org.graalvm.nativeimage.builder --add-exports=java.base/sun.security.provider=org.graalvm.nativeimage.builder --add-exports=java.base/sun.security.ssl=org.graalvm.nativeimage.builder --add-exports=java.base/sun.security.util=org.graalvm.nativeimage.builder --add-exports=java.base/sun.security.x509=org.graalvm.nativeimage.builder --add-exports=java.base/sun.text.spi=org.graalvm.nativeimage.builder --add-exports=java.base/sun.util.calendar=org.graalvm.nativeimage.builder --add-exports=java.base/sun.util.cldr=org.graalvm.nativeimage.builder --add-exports=java.base/sun.util.locale.provider=org.graalvm.nativeimage.builder --add-exports=java.base/sun.util.locale=org.graalvm.nativeimage.builder --add-exports=java.base/sun.util.resources=org.graalvm.nativeimage.builder --add-exports=java.base/sun.util=org.graalvm.nativeimage.builder --add-exports=java.management/com.sun.jmx.mbeanserver=org.graalvm.nativeimage.builder --add-exports=java.management/sun.management=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto --add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=org.graalvm.nativeimage.builder --add-exports=jdk.httpserver/sun.net.httpserver.simpleserver=org.graalvm.nativeimage.builder --add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile --add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile --add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder --add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder --add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto --add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.riscv64=jdk.internal.vm.compiler --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto --add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto --add-exports=jdk.internal.vm.ci/jdk.vm.ci.riscv64=jdk.internal.vm.compiler --add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto --add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder --add-exports=jdk.jfr/jdk.jfr.events=org.graalvm.nativeimage.builder --add-exports=jdk.jfr/jdk.jfr.internal.jfc=org.graalvm.nativeimage.builder --add-exports=jdk.jfr/jdk.jfr.internal=org.graalvm.nativeimage.builder --add-exports=jdk.management.agent/jdk.internal.agent=org.graalvm.nativeimage.builder --add-exports=jdk.management/com.sun.management.internal=org.graalvm.nativeimage.builder --module-path /home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../graalvm/svm-driver.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../jvmci/graal-sdk.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../jvmci/graal.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../../truffle/truffle-api.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../builder/native-image-base.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../builder/objectfile.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../builder/pointsto.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../builder/svm.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/bin/../library-support.jar --module org.graalvm.nativeimage.driver/com.oracle.svm.driver.NativeImage -J--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler --verbose VersionTest
Apply jar:file:///home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties
Executing [
HOME=/home/zakkak \
LANG=en_IE.UTF-8 \
LC_ALL=en_IE.UTF-8 \
PATH=/home/zakkak/.jbang/bin:/home/zakkak/bin:/home/zakkak/.local/bin:/home/zakkak/.cargo/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/var/lib/snapd/snap/bin \
PWD=/home/zakkak/code/tmp/versiontest \
USE_NATIVE_IMAGE_JAVA_PLATFORM_MODULE_SYSTEM=true \
/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/bin/java \
-XX:+UseParallelGC \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-Dsubstratevm.HostLibC=glibc \
-Dsubstratevm.IgnoreGraalVersionCheck=true \
--add-exports=java.base/com.sun.crypto.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.event=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.loader=org.graalvm.nativeimage.builder,org.graalvm.truffle \
--add-exports=java.base/jdk.internal.logger=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.misc=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=java.base/jdk.internal.module=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.org.objectweb.asm=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.perf=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.ref=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/jdk.internal.reflect=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.vm.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.vm=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.invoke.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.net=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.nio.ch=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/sun.reflect.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.factory=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.repository=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.scope=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.tree=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.jca=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.ssl=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.x509=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.text.spi=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.calendar=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.cldr=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.resources=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util=org.graalvm.nativeimage.builder \
--add-exports=java.management/com.sun.jmx.mbeanserver=org.graalvm.nativeimage.builder \
--add-exports=java.management/sun.management=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=org.graalvm.nativeimage.builder \
--add-exports=jdk.httpserver/sun.net.httpserver.simpleserver=org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.riscv64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.riscv64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.events=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal=org.graalvm.nativeimage.builder \
--add-exports=jdk.management.agent/jdk.internal.agent=org.graalvm.nativeimage.builder \
--add-exports=jdk.management/com.sun.management.internal=org.graalvm.nativeimage.builder \
-XX:-UseJVMCICompiler \
-Xss10m \
-Xms1g \
-Xmx14g \
-XX:+ExitOnOutOfMemoryError \
-Djava.awt.headless=true \
'-Dorg.graalvm.vendor=GraalVM Community' \
-Dorg.graalvm.vendorurl=https://github.com/graalvm/mandrel/issues \
-Dorg.graalvm.vendorversion=Mandrel-23.1.0-dev0b7c6a35993 \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
--upgrade-module-path \
/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/jvmci/graal.jar \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler \
--add-modules=ALL-DEFAULT \
--module-path \
/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/jvmci/graal-sdk.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/truffle/truffle-api.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/builder/objectfile.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/builder/native-image-base.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/builder/pointsto.jar:/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/builder/svm.jar \
--module \
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner \
-imagecp \
/home/zakkak/code/tmp/versiontest \
-imagemp \
/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/library-support.jar \
-H:CLibraryPath=/home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/clibraries/linux-amd64 \
-H:Path=/home/zakkak/code/tmp/versiontest \
'-H:Class@explicit main-class=VersionTest' \
'-H:Name@main-class lower case as image name=versiontest' \
'-H:Features@jar:file:///home/zakkak/code/mandrel-packaging/mandrel-java20-23.1.0-dev0b7c6a35993/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties=com.oracle.svm.thirdparty.gson.GsonFeature' \
-H:+BuildOutputColorful \
-H:+BuildOutputProgress \
-H:+BuildOutputLinks
]
========================================================================================================================
GraalVM Native Image: Generating 'versiontest' (executable)...
========================================================================================================================
[1/8] Initializing...                                                                                    (1.4s @ 0.21GB)
 Java version: 20-beta+36-202303240331, vendor version: Mandrel-23.1.0-dev0b7c6a35993
 Graal compiler: optimization level: '2', target machine: 'x86-64-v3'
 C compiler: gcc (redhat, x86_64, 12.2.1)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
[2/8] Performing analysis...  [****]                                                                     (2.5s @ 0.37GB)
   3,230 (74.20%) of  4,353 types reachable
   3,870 (50.50%) of  7,663 fields reachable
  15,481 (45.91%) of 33,717 methods reachable
     982 types,    83 fields, and   493 methods registered for reflection
      57 types,    55 fields, and    52 methods registered for JNI access
       4 native libraries: dl, pthread, rt, z
[3/8] Building universe...                                                                               (0.6s @ 0.90GB)
[4/8] Parsing methods...      [*]                                                                        (0.5s @ 1.50GB)
[5/8] Inlining methods...     [***]                                                                      (0.2s @ 0.45GB)
[6/8] Compiling methods...    [*]                                                                        (1.8s @ 0.46GB)
[7/8] Layouting methods...    [*]                                                                        (0.6s @ 0.73GB)
[8/8] Creating image...       [*]                                                                        (0.9s @ 0.93GB)
   5.39MB (39.21%) for code area:     8,898 compilation units
   8.08MB (58.84%) for image heap:  111,741 objects and 6 resources
 274.10kB ( 1.95%) for other data
  13.74MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 origins of code area:                                Top 10 object types in image heap:
   4.10MB java.base                                            1.17MB byte[] for code metadata
 902.88kB svm.jar (Native Image)                               1.06MB java.lang.String
 111.18kB java.logging                                       928.72kB byte[] for general heap data
  62.72kB org.graalvm.nativeimage.base                       755.76kB byte[] for java.lang.String
  46.66kB jdk.proxy1                                         749.91kB java.lang.Class
  43.70kB org.graalvm.sdk                                    277.58kB com.oracle.svm.core.hub.DynamicHubCompanion
  35.07kB jdk.proxy3                                         276.88kB java.lang.Object[]
  27.04kB jdk.internal.vm.ci                                 246.66kB java.util.HashMap$Node
  11.08kB jdk.proxy2                                         185.33kB java.lang.String[]
   8.07kB jdk.internal.vm.compiler                           167.58kB java.util.concurrent.ConcurrentHashMap$Node
   1.26kB for 2 more packages                                  1.84MB for 902 more object types
------------------------------------------------------------------------------------------------------------------------
Recommendations:
 HEAP: Set max heap for improved and more predictable memory usage.
 CPU:  Enable more CPU features with '-march=native' for improved performance.
------------------------------------------------------------------------------------------------------------------------
                        0.4s (4.5% of total time) in 20 GCs | Peak RSS: 3.40GB | CPU load: 16.82
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /home/zakkak/code/tmp/versiontest/versiontest (executable)
========================================================================================================================
Finished generating 'versiontest' in 8.7s.
$ ./versiotest
snapshot

As @jerboaa points out in #6379, this used to work before https://github.com/oracle/graal/pull/6302/files#diff-9e053bec9eca0799896bd471363fa6aa1df70269e454b89dff1ea5fb844a480cL830

@jerboaa
Copy link
Collaborator Author

jerboaa commented Apr 6, 2023

I don't think this is needed when you have graalvm/mandrel-packaging@d0ba206 in place, or am I missing something?

That fix is to actually set the property in the bash launcher. So we have this situation:

$ grep org.graalvm.version bin/native-image
exec "${location}/../../../bin/java" -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -Dorg.graalvm.version="23.1.0-dev" -Dorg.graalvm.vendorversion="Mandrel-23.1.0-dev" -Dorg.graalvm.vendor="GraalVM Community" -Dorg.graalvm.vendorurl="https://github.com/graalvm/mandrel/issues" --upgrade-module-path "${location}/../../jvmci/graal.jar" --add-modules org.graalvm.truffle,org.graalvm.sdk --module-path "${location}/../../truffle/truffle-api.jar:${location}/../../jvmci/graal-sdk.jar" "${jvm_args[@]}" ${app_path_arg} "${cp_or_mp}" ${main_class} "${launcher_args[@]}"

Yet, when we launch native-image with --verbose we see it won't get passed to the generator (org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner):

native-image --verbose VersionTest
Apply jar:file:///disk/graal/upstream-sources/graal/mandrel-build/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties
Executing [
HOME=/home/sgehwolf \
LANG=en_US.UTF-8 \
PATH=/home/sgehwolf/.local/bin:/home/sgehwolf/bin:/home/sgehwolf/Documents/eclipse/eclipse-2022/eclipse:/home/sgehwolf/.local/bin:/home/sgehwolf/bin:/home/sgehwolf/Documents/eclipse/eclipse-2022/eclipse:/usr/lib64/qt-3.3/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin \
PWD=/disk/graal/upstream-sources/graal \
USE_NATIVE_IMAGE_JAVA_PLATFORM_MODULE_SYSTEM=true \
/disk/graal/upstream-sources/graal/mandrel-build/bin/java \
-XX:+UseParallelGC \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-Dsubstratevm.HostLibC=glibc \
-Dsubstratevm.IgnoreGraalVersionCheck=true \
--add-exports=java.base/com.sun.crypto.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.event=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.loader=org.graalvm.nativeimage.builder,org.graalvm.truffle \
--add-exports=java.base/jdk.internal.logger=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.misc=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=java.base/jdk.internal.module=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.org.objectweb.asm=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.perf=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.ref=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/jdk.internal.reflect=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.vm.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.vm=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.invoke.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.net=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.nio.ch=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/sun.reflect.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.factory=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.repository=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.scope=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.tree=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.jca=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.ssl=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.x509=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.text.spi=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.calendar=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.cldr=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.resources=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util=org.graalvm.nativeimage.builder \
--add-exports=java.management/com.sun.jmx.mbeanserver=org.graalvm.nativeimage.builder \
--add-exports=java.management/sun.management=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.events=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal.handlers=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal=org.graalvm.nativeimage.builder \
--add-exports=jdk.management.agent/jdk.internal.agent=org.graalvm.nativeimage.builder \
--add-exports=jdk.management/com.sun.management.internal=org.graalvm.nativeimage.builder \
-XX:-UseJVMCICompiler \
-Xss10m \
-Xms1g \
-Xmx14g \
-XX:+ExitOnOutOfMemoryError \
-Djava.awt.headless=true \
'-Dorg.graalvm.vendor=GraalVM Community' \
-Dorg.graalvm.vendorurl=https://github.com/graalvm/mandrel/issues \
-Dorg.graalvm.vendorversion=Mandrel-23.1.0-dev \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
--upgrade-module-path \
/disk/graal/upstream-sources/graal/mandrel-build/lib/jvmci/graal.jar \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler \
--add-modules=ALL-DEFAULT \
--module-path \
/disk/graal/upstream-sources/graal/mandrel-build/lib/jvmci/graal-sdk.jar:/disk/graal/upstream-sources/graal/mandrel-build/lib/truffle/truffle-api.jar:/disk/graal/upstream-sources/graal/mandrel-build/lib/svm/builder/native-image-base.jar:/disk/graal/upstream-sources/graal/mandrel-build/lib/svm/builder/pointsto.jar:/disk/graal/upstream-sources/graal/mandrel-build/lib/svm/builder/objectfile.jar:/disk/graal/upstream-sources/graal/mandrel-build/lib/svm/builder/svm.jar \
--module \
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner \
-imagecp \
/disk/graal/upstream-sources/graal \
-imagemp \
/disk/graal/upstream-sources/graal/mandrel-build/lib/svm/library-support.jar \
-H:CLibraryPath=/disk/graal/upstream-sources/graal/mandrel-build/lib/svm/clibraries/linux-amd64 \
-H:Path=/disk/graal/upstream-sources/graal \
'-H:Class@explicit main-class=VersionTest' \
'-H:Name@main-class lower case as image name=versiontest' \
'-H:Features@jar:file:///disk/graal/upstream-sources/graal/mandrel-build/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties=com.oracle.svm.thirdparty.gson.GsonFeature' \
-H:+BuildOutputColorful \
-H:+BuildOutputProgress \
-H:+BuildOutputLinks
]
========================================================================================================================
GraalVM Native Image: Generating 'versiontest' (executable)...
========================================================================================================================
[1/8] Initializing...                                                                                    (3.4s @ 0.21GB)
 Java version: 17.0.6+10, vendor version: Mandrel-23.1.0-dev
 Graal compiler: optimization level: '2', target machine: 'x86-64-v3'
 C compiler: gcc (redhat, x86_64, 12.2.1)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
[2/8] Performing analysis...  [***]                                                                      (7.8s @ 1.02GB)
   2,962 (72.28%) of  4,098 types reachable
   3,580 (51.08%) of  7,008 fields reachable
  13,401 (43.98%) of 30,470 methods reachable
     926 types,     0 fields, and   345 methods registered for reflection
      58 types,    58 fields, and    52 methods registered for JNI access
       4 native libraries: dl, pthread, rt, z
[3/8] Building universe...                                                                               (1.4s @ 0.72GB)
[4/8] Parsing methods...      [*]                                                                        (0.9s @ 1.25GB)
[5/8] Inlining methods...     [***]                                                                      (0.6s @ 0.40GB)
[6/8] Compiling methods...    [***]                                                                      (6.6s @ 0.84GB)
[7/8] Layouting methods...    [*]                                                                        (1.0s @ 1.04GB)
[8/8] Creating image...       [**]                                                                       (2.3s @ 1.28GB)
   4.48MB (33.99%) for code area:     7,603 compilation units
   7.37MB (55.89%) for image heap:  107,739 objects and 6 resources
   1.33MB (10.13%) for other data
  13.18MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 origins of code area:                                Top 10 object types in image heap:
   3.41MB java.base                                         1021.93kB byte[] for code metadata
 794.22kB svm.jar (Native Image)                            1007.91kB java.lang.String
 112.31kB java.logging                                       894.59kB byte[] for general heap data
  62.07kB org.graalvm.nativeimage.base                       700.80kB byte[] for java.lang.String
  42.76kB org.graalvm.sdk                                    682.84kB java.lang.Class
  24.15kB jdk.internal.vm.ci                                 482.72kB java.util.HashMap$Node
   6.11kB jdk.internal.vm.compiler                           254.55kB com.oracle.svm.core.hub.DynamicHubCompanion
   1.35kB jdk.proxy1                                         183.84kB java.util.HashMap$Node[]
   1.18kB jdk.localedata                                     179.96kB java.lang.Object[]
   1.17kB jdk.proxy3                                         170.15kB java.lang.String[]
  473.00B for 2 more packages                                  1.66MB for 830 more object types
------------------------------------------------------------------------------------------------------------------------
Recommendations:
 HEAP: Set max heap for improved and more predictable memory usage.
 CPU:  Enable more CPU features with '-march=native' for improved performance.
------------------------------------------------------------------------------------------------------------------------
                        0.5s (1.9% of total time) in 20 GCs | Peak RSS: 2.78GB | CPU load: 8.52
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /disk/graal/upstream-sources/graal/versiontest (executable)
========================================================================================================================
Finished generating 'versiontest' in 24.4s.
$ ./versiontest
snapshot

@jerboaa
Copy link
Collaborator Author

jerboaa commented Apr 6, 2023

$ native-image -Dorg.graalvm.version="12.34.56" VersionTest
...
$ ./versiontest 
12.34.56

Apparently that's not quite the same. This would mean that users would need to be passing the property to every native-image invocation, which isn't really something they should need doing for this.

@fniephaus
Copy link
Member

I'm closing this as we are restoring the previous behavior as part of #6377.

@fniephaus fniephaus closed this Apr 6, 2023
@fniephaus fniephaus self-assigned this Apr 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Verified All contributors have signed the Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Version.getCurrent() broken for distributions not modifying the base JDK

3 participants