Skip to content

The --no-fallback option seems to be quietly enabling --allow-incomplete-classpath #4010

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

Closed
jamesward opened this issue Nov 12, 2021 · 4 comments
Assignees

Comments

@jamesward
Copy link

Describe the issue
When I run native-image without --no-fallback on a project that has an incomplete classpath, it falls back (as expected). But when I add the --no-fallback option the build does not fail and the resulting executable fails at runtime.

Steps to reproduce the issue

  1. git clone https://github.com/jamesward/scala3-graalvm-tester.git
  2. cd scala3-graalvm-tester
  3. Run without --no-fallback: ./sbt packageWithFallback
  4. Run with --no-fallback: ./sbt packageWithNoFallback

Describe GraalVM and your environment:

  • GraalVM version: 21.3.0
  • JDK major version: 11
  • OS: Linux
  • Architecture: AMD64

Output when running with --no-fallback

$ ./sbt packageWithNoFallback
[info] welcome to sbt 1.5.5 (GraalVM Community Java 11.0.13)
[info] loading settings for project scala3-graalvm-tester-build from plugins.sbt ...
[info] loading project definition from /home/jamesward/projects/scala3-graalvm-tester/project
[info] loading settings for project scala3-graalvm-tester from build.sbt ...
[info] set current project to scala3-graalvm-tester (in build file:/home/jamesward/projects/scala3-graalvm-tester/)
[warn] there's a key that's not used by any other settings/tasks:
[warn]  
[warn] * scala3-graalvm-tester / packageWithNoFallback / graalVMNativeImageOptions
[warn]   +- /home/jamesward/projects/scala3-graalvm-tester/build.sbt:20
[warn]  
[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
[info] set current project to scala3-graalvm-tester (in build file:/home/jamesward/projects/scala3-graalvm-tester/)
[info] Using existing GraalVM native-image image: ghcr.io-graalvm-graalvm-ce-native-image:21.3.0
[info] Wrote /home/jamesward/projects/scala3-graalvm-tester/target/scala-3.1.0/scala3-graalvm-tester_3-0.1.0-SNAPSHOT.pom
[info] Executing [
[info] /opt/graalvm-ce-java17-21.3.0/bin/java \
[info] -XX:+UseParallelGC \
[info] -XX:+UnlockExperimentalVMOptions \
[info] -XX:+EnableJVMCI \
[info] -Dtruffle.TrustAllTruffleRuntimeProviders=true \
[info] -Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
[info] -Dgraalvm.ForcePolyglotInvalid=true \
[info] -Dgraalvm.locatorDisabled=true \
[info] -Dsubstratevm.IgnoreGraalVersionCheck=true \
[info] --add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.access.foreign=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.event=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.loader=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.logger=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.module=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.org.xml.sax.helpers=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.perf=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.platform=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.reflect=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.util.xml.impl=ALL-UNNAMED \
[info] --add-exports=java.base/jdk.internal.util.xml=ALL-UNNAMED \
[info] --add-exports=java.base/sun.invoke.util=ALL-UNNAMED \
[info] --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
[info] --add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED \
[info] --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
[info] --add-exports=java.base/sun.reflect.generics.repository=ALL-UNNAMED \
[info] --add-exports=java.base/sun.reflect.generics.tree=ALL-UNNAMED \
[info] --add-exports=java.base/sun.security.jca=ALL-UNNAMED \
[info] --add-exports=java.base/sun.security.provider=ALL-UNNAMED \
[info] --add-exports=java.base/sun.security.util=ALL-UNNAMED \
[info] --add-exports=java.base/sun.text.spi=ALL-UNNAMED \
[info] --add-exports=java.base/sun.util.calendar=ALL-UNNAMED \
[info] --add-exports=java.base/sun.util.locale.provider=ALL-UNNAMED \
[info] --add-exports=java.base/sun.util.resources=ALL-UNNAMED \
[info] --add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=ALL-UNNAMED 
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=ALL-UNNAMED \
[info] --add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=ALL-UNNAMED \
[info] --add-exports=jdk.jfr/jdk.jfr.events=ALL-UNNAMED \
[info] --add-exports=jdk.jfr/jdk.jfr.internal.consumer=ALL-UNNAMED \
[info] --add-exports=jdk.jfr/jdk.jfr.internal.handlers=ALL-UNNAMED \
[info] --add-exports=jdk.jfr/jdk.jfr.internal.jfc=ALL-UNNAMED \
[info] --add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED \
[info] -XX:+UseJVMCINativeLibrary \
[info] -Xss10m \
[info] -Xms1g \
[info] -Xmx13233799168 \
[info] -Duser.country=US \
[info] -Duser.language=en \
[info] -Djava.awt.headless=true \
[info] -Dorg.graalvm.version=21.3.0 \
[info] -Dorg.graalvm.config=CE \
[info] -Dcom.oracle.graalvm.isaot=true \
[info] -Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
[info] -Xshare:off \
[info] -Djdk.internal.lambda.disableEagerInitialization=true \
[info] -Djdk.internal.lambda.eagerlyInitialize=false \
[info] -Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
[info] -javaagent:/opt/graalvm-ce-java17-21.3.0/lib/svm/builder/svm.jar \
[info] -cp \
[info] /opt/graalvm-ce-java17-21.3.0/lib/svm/builder/svm.jar:/opt/graalvm-ce-java17-21.3.0/lib/svm/builder/pointsto.jar:/opt/graalvm-ce-java17-21.3.0/lib/svm/builder/javacpp-shadowed.jar:/opt/graalvm-ce-java17-21.3.0/lib/svm/builder/svm-llvm.jar:/opt/graalvm-ce-java17-21.3.0/lib/svm/builder/objectfile.jar:/opt/graalvm-ce-java17-21.3.0/lib/svm/builder/llvm-wrapper-shadowed.jar:/opt/graalvm-ce-java17-21.3.0/lib/svm/builder/llvm-platform-specific-shadowed.jar \
[info] --module-path \
[info] /opt/graalvm-ce-java17-21.3.0/lib/truffle/truffle-api.jar \
[info] 'com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus' \
[info] -watchpid \
[info] 1 \
[info] -imagecp \
[info] /opt/graalvm/stage/lib/default.scala3-graalvm-tester-0.1.0-SNAPSHOT.jar:/opt/graalvm/stage/lib/org.scala-lang.scala3-library_3-3.1.0.jar:/opt/graalvm/stage/lib/org.scala-lang.scala-library-2.13.6.jar:/opt/graalvm-ce-java17-21.3.0/lib/svm/library-support.jar \
[info] -H:Path=/opt/graalvm \
[info] -H:Name=scala3-graalvm-tester \
[info] -H:+DumpTargetInfo \
[info] -H:FallbackThreshold=0 \
[info] -H:CLibraryPath=/opt/graalvm-ce-java17-21.3.0/lib/svm/clibraries/linux-amd64 \
[info] '-H:Class@explicit main-class=run'
[info] ]
[info] [scala3-graalvm-tester:27]    classlist:   3,275.07 ms,  0.96 GB
[info] [scala3-graalvm-tester:27]        (cap):   1,394.73 ms,  0.96 GB
[info] [scala3-graalvm-tester:27]        setup:   4,869.37 ms,  0.96 GB
[info] # Printing compilation-target information to: /opt/graalvm/reports/target_info_20211112_175146.txt
[info] [scala3-graalvm-tester:27]     (clinit):     241.79 ms,  2.29 GB
[info] # Printing native-library information to: /opt/graalvm/reports/native_library_info_20211112_175206.txt
[info] [scala3-graalvm-tester:27]   (typeflow):   6,561.07 ms,  2.29 GB
[info] [scala3-graalvm-tester:27]    (objects):  10,337.41 ms,  2.29 GB
[info] [scala3-graalvm-tester:27]   (features):   2,314.63 ms,  2.29 GB
[info] [scala3-graalvm-tester:27]     analysis:  20,125.19 ms,  2.29 GB
[info] [scala3-graalvm-tester:27]     universe:   1,108.06 ms,  2.29 GB
[info] [scala3-graalvm-tester:27]      (parse):   1,346.78 ms,  2.30 GB
[info] [scala3-graalvm-tester:27]     (inline):   1,300.26 ms,  2.30 GB
[info] [scala3-graalvm-tester:27]    (compile):  18,270.58 ms,  4.07 GB
[info] [scala3-graalvm-tester:27]      compile:  22,515.95 ms,  4.07 GB
[info] [scala3-graalvm-tester:27]        image:   1,925.68 ms,  4.46 GB
[info] [scala3-graalvm-tester:27]        write:     278.27 ms,  4.46 GB
[info] [scala3-graalvm-tester:27]      [total]:  54,614.75 ms,  4.46 GB
[info] # Printing build artifacts to: /opt/graalvm/scala3-graalvm-tester.build_artifacts.txt
[success] Total time: 58 s, completed Nov 12, 2021, 10:52:33 AM
@munishchouhan
Copy link
Contributor

@jamesward thanks for reporting the issue, we will check it out and get back to you

@munishchouhan
Copy link
Contributor

@jamesward Getting error while using reproducer
am I missing something?


 ./sbt packageWithFallback
[info] welcome to sbt 1.5.5 (GraalVM Community Java 11.0.13)
[info] loading settings for project scala3-graalvm-tester-build from plugins.sbt ...
[info] loading project definition from /home/munish/github/4010/scala3-graalvm-tester/project
[info] loading settings for project scala3-graalvm-tester from build.sbt ...
[info] set current project to scala3-graalvm-tester (in build file:/home/munish/github/4010/scala3-graalvm-tester/)
[warn] there's a key that's not used by any other settings/tasks:
[warn]
[warn] * scala3-graalvm-tester / packageWithNoFallback / graalVMNativeImageOptions
[warn]   +- /home/munish/github/4010/scala3-graalvm-tester/build.sbt:19
[warn]
[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
[info] Wrote /home/munish/github/4010/scala3-graalvm-tester/target/scala-3.1.0/scala3-graalvm-tester_3-0.1.0-SNAPSHOT.pom
[info] Main Scala API documentation to /home/munish/github/4010/scala3-graalvm-tester/target/scala-3.1.0/api...
[info] Main Scala API documentation successful.
[error] java.lang.RuntimeException: Nonzero exit value: 1
[error]         at scala.sys.package$.error(package.scala:30)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.slurp(ProcessBuilderImpl.scala:138)
[error]         at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.$bang$bang(ProcessBuilderImpl.scala:108)
[error]         at com.typesafe.sbt.packager.graalvmnativeimage.GraalVMNativeImagePlugin$.$anonfun$generateContainerBuildImage$1(GraalVMNativeImagePlugin.scala:173)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error]         at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error]         at sbt.Execute.work(Execute.scala:291)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error]         at java.base/java.lang.Thread.run(Thread.java:829)
[error] (Graalvm-native-image / containerBuildImage) Nonzero exit value: 1
[error] Total time: 7 s, completed Nov 22, 2021, 3:14:56 PM


@jamesward
Copy link
Author

Well that is not a useful error. Under the covers this task calls docker. Maybe you don't have docker installed?

@oubidar-Abderrahim
Copy link
Member

If this issue is still relevant in the latest GraalVM versions, please create a new issue for it and follow the template provided. Thank you

@oubidar-Abderrahim oubidar-Abderrahim closed this as not planned Won't fix, can't repro, duplicate, stale Jan 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants