Skip to content
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-image] VMError$HostedError from JNIRegistrationSupport.makeShimDLL on Windows after adding circe-yaml and SnakeYAML #4659

Closed
sideeffffect opened this issue Jun 20, 2022 · 11 comments
Assignees

Comments

@sideeffffect
Copy link

sideeffffect commented Jun 20, 2022

Describe the issue
Bleep is a Scala project which compiles with native-image just fine. But when I add the library circe-yaml (which transitively brings in snakeyaml), it starts failing on Windows (it keeps working on Linux and macOS).
The error is

Fatal error: com.oracle.svm.core.util.VMError$HostedError: should not reach here
	at com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:64)
	at com.oracle.svm.hosted.jdk.JNIRegistrationSupport.makeShimDLL(JNIRegistrationSupport.java:273)

Steps to reproduce the issue
Please include both build steps as well as run steps

  1. clone this branch https://github.com/sideeffffect/bleep/tree/yaml git clone --branch yaml https://github.com/sideeffffect/bleep.git
  2. run sbt --client "bleep-cli/assembly" (link)
  3. run mkdir dist && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && native-image --native-image-info --verbose --enable-url-protocols=https -jar bleep-*.jar dist/bleep-windows (link)

Describe GraalVM and your environment:
link

  • GraalVM version: CE 22.1.0
  • JDK major version: 17
  • OS: only Windows, Microsoft Windows Server 2022 10.0.20348 (Linux and macOS works OK)
  • Architecture: almost certainly AMD64

More details
Related PR: oyvindberg/bleep#148

Logs: https://github.com/oyvindberg/bleep/runs/6970916881?check_suite_focus=true#step%3A7%3A202=

    Directory: D:\a\bleep\bleep
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           6/20/2022  4:32 PM                dist
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.polyglot/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.home/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/reflect-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/reflect-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/dev.dirs/reflect-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/jline/resource-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/proxy-config.json
Executing [
'C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\bin\java.exe' \
-XX:+UseParallelGC \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-Dsubstratevm.IgnoreGraalVersionCheck=true \
--add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.access.foreign=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.event=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.loader=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.logger=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.module=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.perf=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.platform=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.reflect=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED \
--add-exports=java.base/sun.invoke.util=ALL-UNNAMED \
--add-exports=java.base/sun.net=ALL-UNNAMED \
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.factory=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.repository=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.scope=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.tree=ALL-UNNAMED \
--add-exports=java.base/sun.security.jca=ALL-UNNAMED \
--add-exports=java.base/sun.security.provider=ALL-UNNAMED \
--add-exports=java.base/sun.security.ssl=ALL-UNNAMED \
--add-exports=java.base/sun.security.util=ALL-UNNAMED \
--add-exports=java.base/sun.security.x509=ALL-UNNAMED \
--add-exports=java.base/sun.text.spi=ALL-UNNAMED \
--add-exports=java.base/sun.util.calendar=ALL-UNNAMED \
--add-exports=java.base/sun.util.cldr=ALL-UNNAMED \
--add-exports=java.base/sun.util.locale.provider=ALL-UNNAMED \
--add-exports=java.base/sun.util.locale=ALL-UNNAMED \
--add-exports=java.base/sun.util.resources=ALL-UNNAMED \
--add-exports=java.base/sun.util=ALL-UNNAMED \
--add-exports=java.desktop/sun.java2d.pipe=ALL-UNNAMED \
--add-exports=java.desktop/sun.java2d=ALL-UNNAMED \
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \
--add-exports=java.management/sun.management=ALL-UNNAMED \
--add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.events=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal.handlers=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED \
--add-exports=jdk.management/com.sun.management.internal=ALL-UNNAMED \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-Xms1g \
-Xmx6012577376 \
-Djava.awt.headless=true \
-Dorg.graalvm.version=22.1.0 \
-Dorg.graalvm.config=CE \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
'-javaagent:C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\svm.jar' \
-cp \
'C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\native-image-base.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\objectfile.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\pointsto.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\svm.jar' \
--module-path \
'C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\truffle\truffle-api.jar' \
'com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus' \
-imagecp \
'D:\a\bleep\bleep\bleep-cli-assembly.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\library-support.jar' \
'-H:Path=D:\a\bleep\bleep' \
-H:+DumpTargetInfo \
-H:EnableURLProtocols=https \
'-H:Class@manifest from file:///D:/a/bleep/bleep/bleep-cli-assembly.jar=bleep.Main' \
'-H:Name@manifest from file:///D:/a/bleep/bleep/bleep-cli-assembly.jar=bleep-cli-assembly' \
'-H:FallbackThreshold@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=0' \
'-H:EnableURLProtocols@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=http' \
'-H:EnableURLProtocols@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=https' \
'-H:+ReportExceptionStackTraces@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=scala.runtime.Statics$VM:build_time' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=scala.Symbol:build_time' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=scala.Symbol$:build_time' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.polyglot/native-image.properties=org.graalvm.polyglot:build_time' \
'-H:Features@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.home/native-image.properties=org.graalvm.home.HomeFinderFeature' \
'-H:IncludeResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/native-image.properties=META-INF/native/windows64/csjniutils\.dll' \
'-H:ReflectionConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/reflect-config.json=META-INF/native-image/org.scala-lang/scala-lang/reflect-config.json' \
'-H:ReflectionConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/reflect-config.json=META-INF/native-image/io.get-coursier/jni-utils/reflect-config.json' \
'-H:ReflectionConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/dev.dirs/reflect-config.json=META-INF/native-image/dev.dirs/reflect-config.json' \
'-H:ResourceConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/jline/resource-config.json=META-INF/native-image/jline/resource-config.json' \
'-H:DynamicProxyConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/proxy-config.json=META-INF/native-image/org.scala-lang/scala-lang/proxy-config.json' \
'-H:CLibraryPath=C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\clibraries\windows-amd64' \
'-H:Name@explicit image name=dist/bleep-windows'
]
========================================================================================================================
GraalVM Native Image: Generating 'dist/bleep-windows' (executable)...
========================================================================================================================
[1/7] Initializing...                                                                                   (32.0s @ 0.57GB)
 Version info: 'GraalVM 22.1.0 Java 17 CE'
 C compiler: cl.exe (microsoft, x64, 19.32.31329)
 Garbage collector: Serial GC
 3 user-provided feature(s)
  - com.oracle.svm.polyglot.scala.ScalaFeature
  - com.oracle.svm.thirdparty.gson.GsonFeature
  - io.github.alexarchambault.windowsansi.NativeImageFeature
# Printing compilation-target information to: D:\a\bleep\bleep\reports\target_info_20220620_163323.txt
# Printing native-library information to: D:\a\bleep\bleep\reports\native_library_info_20220620_163520.txt
[2/7] Performing analysis...  [**************]                                                         (118.0s @ 2.60GB)
  14,980 (89.12%) of 16,809 classes reachable
  20,083 (65.63%) of 30,601 fields reachable
  70,383 (45.42%) of 154,971 methods reachable
     495 classes,   604 fields, and 2,654 methods registered for reflection
      80 classes,    74 fields, and    66 methods registered for JNI access
[3/7] Building universe...                                                                               (8.3s @ 2.58GB)
[4/7] Parsing methods...      [***]                                                                     (11.6s @ 2.00GB)
[5/7] Inlining methods...     [*******]                                                                 (11.6s @ 1.94GB)
[6/7] Compiling methods...    [********]                                                                (68.0s @ 3.26GB)
Fatal error: com.oracle.svm.core.util.VMError$HostedError: should not reach here
	at com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:64)
	at com.oracle.svm.hosted.jdk.JNIRegistrationSupport.makeShimDLL(JNIRegistrationSupport.java:273)
	at com.oracle.svm.hosted.jdk.JNIRegistrationSupport.makeShimDLLs(JNIRegistrationSupport.java:247)
	at com.oracle.svm.hosted.jdk.JNIRegistrationSupport.afterImageWrite(JNIRegistrationSupport.java:192)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$doRun$8(NativeImageGenerator.java:701)
	at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:74)
	at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:701)
	at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:515)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:407)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:585)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:615)
[7/7] Creating image...                                                                                  (0.0s @ 3.19GB)
------------------------------------------------------------------------------------------------------------------------
                       29.5s (11.2% of total time) in 70 GCs | Peak RSS: 4.30GB | CPU load: 1.74
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 D:\a\bleep\bleep\dist\bleep-windows.exe (executable)
 D:\a\bleep\bleep\dist\awt.dll (jdk_lib)
 D:\a\bleep\bleep\dist\bleep-windows.build_artifacts.txt
========================================================================================================================
Failed generating 'dist/bleep-windows' after 4m 23s.
Error: Image build request failed with exit status 1
com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1
	at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1678)
	at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1389)
	at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1350)
	at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1337)
@fniephaus
Copy link
Member

Just to make sure: AWT code was reachable before or did one of the new yaml dependencies make it reachable? If the latter is the case, I'd look into why AWT code is now reachable. For a yaml parser, I don't really see a need for AWT.

@sideeffffect
Copy link
Author

sideeffffect commented Jun 20, 2022

From what I know and understand about Bleep, circe-yaml and SnakeYAML, there is no relation to AWT. These are command line application and parsing libraries, that shouldn't touch AWT or do any kind of GUI stuff.
I have no idea whether AWT code was reachable "before" of "after" my changes.

Could you explain to me why you're asking about AWT code? What does this have to do with AWT? There are all command line application and parsing libraries we're talking about after all.

@fniephaus
Copy link
Member

You mentioned that Bleep compiles just fine before adding the new dependency. Do you see an awt.dll generated when the build succeeds? If not, the new dependency must somehow make AWT code reachable.

@sideeffffect
Copy link
Author

sideeffffect commented Jun 20, 2022

Here are the verbose logs from "before" my changes. They look very similar to "after". The only place where AWT is mentioned is -Djava.awt.headless=true, just as with "before".

Unfortunatelly I can't test this locally on my computer since I don't have Windows, I can only run it on GitHub Actions. Where should the awt.dll be generated? Maybe I can list the content of that directory in the GitHub Actions script...

oyvindberg/bleep#149
https://github.com/oyvindberg/bleep/runs/6973939231?check_suite_focus=true#step%3A7%3A139=

Run mkdir dist && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && native-image --native-image-info --verbose --enable-url-protocols=https -jar bleep-*.jar dist/bleep-windows
  mkdir dist && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && native-image --native-image-info --verbose --enable-url-protocols=https -jar bleep-*.jar dist/bleep-windows
  shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'"
  env:
    CommandPromptType: Native
    DevEnvDir: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\
    ExtensionSdkDir: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
    Framework40Version: v4.0
    FrameworkDir: C:\Windows\Microsoft.NET\Framework64\
    FrameworkDir64: C:\Windows\Microsoft.NET\Framework64\
    FrameworkVersion: v4.0.30319
    FrameworkVersion64: v4.0.30319
    FSHARPINSTALLDIR: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp\Tools
    HTMLHelpDir: C:\Program Files (x86)\HTML Help Workshop
    IFCPATH: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\ifc\x64
    INCLUDE: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\include;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt
    is_x64_arch: true
    LIB: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\lib\x64;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22000.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22000.0\\um\x64
    LIBPATH: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22000.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.22000.0;C:\Windows\Microsoft.NET\Framework64\v4.0.30319
    NETFXSDKDir: C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\
    Path: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\bin\HostX64\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\VC\VCPackages;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\bin\Roslyn;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Team Tools\Performance Tools\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Team Tools\Performance Tools;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp\Tools;C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\\x64;C:\Program Files (x86)\Windows Kits\10\bin\\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\\MSBuild\Current\Bin\amd64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\;C:\Program Files\MongoDB\Server\5.0\bin;C:\aliyun-cli;C:\vcpkg;C:\Program Files (x86)\NSIS\;C:\tools\zstd;C:\Program Files\Mercurial\;C:\hostedtoolcache\windows\stack\2.7.5\x64;C:\cabal\bin;C:\\ghcup\bin;C:\tools\ghc-9.2.3\bin;C:\Program Files\dotnet;C:\mysql\bin;C:\Program Files\R\R-4.2.0\bin\x64;C:\SeleniumWebDrivers\GeckoDriver;C:\Program Files (x86)\sbt\bin;C:\Program Files (x86)\GitHub CLI;C:\Program Files\Git\bin;C:\Program Files (x86)\pipx_bin;C:\npm\prefix;C:\hostedtoolcache\windows\go\1.17.11\x64\bin;C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts;C:\hostedtoolcache\windows\Python\3.9.13\x64;C:\hostedtoolcache\windows\Ruby\3.0.4\x64\bin;C:\tools\kotlinc\bin;C:\hostedtoolcache\windows\Java_Temurin-Hotspot_jdk\8.0.332-9\x64\bin;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin;C:\ProgramData\kind;C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\dotnet\;C:\ProgramData\Chocolatey\bin;C:\Program Files\Docker;C:\Program Files\PowerShell\7\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\OpenSSL\bin;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\ProgramData\chocolatey\lib\pulumi\tools\Pulumi\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\CMake\bin;C:\ProgramData\chocolatey\lib\maven\apache-maven-3.8.6\bin;C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code;C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\GitHub CLI\;c:\tools\php;C:\Program Files (x86)\sbt\bin;C:\SeleniumWebDrivers\ChromeDriver\;C:\SeleniumWebDrivers\EdgeDriver\;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files\Amazon\SessionManagerPlugin\bin\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\LLVM\bin;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\x64\bin;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\VC\Linux\bin\ConnectionManagerExe
    Platform: x64
    UCRTVersion: 10.0.22000.0
    UniversalCRTSdkDir: C:\Program Files (x86)\Windows Kits\10\
    VCIDEInstallDir: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\VC\
    VCINSTALLDIR: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\
    VCToolsInstallDir: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\
    VCToolsRedistDir: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Redist\MSVC\14.32.31326\
    VCToolsVersion: 14.32.31326
    VisualStudioVersion: 17.0
    VS170COMNTOOLS: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\
    VSCMD_ARG_app_plat: Desktop
    VSCMD_ARG_HOST_ARCH: x64
    VSCMD_ARG_TGT_ARCH: x64
    VSCMD_VER: 17.2.4
    VSINSTALLDIR: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\
    VSSDK150INSTALL: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VSSDK
    VSSDKINSTALL: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VSSDK
    WindowsLibPath: C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22000.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.22000.0
    WindowsSdkBinPath: C:\Program Files (x86)\Windows Kits\10\bin\
    WindowsSdkDir: C:\Program Files (x86)\Windows Kits\10\
    WindowsSDKLibVersion: 10.0.22000.0\
    WindowsSdkVerBinPath: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\
    WindowsSDKVersion: 10.0.22000.0\
    WindowsSDK_ExecutablePath_x64: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\
    WindowsSDK_ExecutablePath_x86: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\
    __DOTNET_ADD_64BIT: 1
    __DOTNET_PREFERRED_BITNESS: 64
    __VSCMD_PREINIT_PATH: C:\Program Files\MongoDB\Server\5.0\bin;C:\aliyun-cli;C:\vcpkg;C:\Program Files (x86)\NSIS\;C:\tools\zstd;C:\Program Files\Mercurial\;C:\hostedtoolcache\windows\stack\2.7.5\x64;C:\cabal\bin;C:\\ghcup\bin;C:\tools\ghc-9.2.3\bin;C:\Program Files\dotnet;C:\mysql\bin;C:\Program Files\R\R-4.2.0\bin\x64;C:\SeleniumWebDrivers\GeckoDriver;C:\Program Files (x86)\sbt\bin;C:\Program Files (x86)\GitHub CLI;C:\Program Files\Git\bin;C:\Program Files (x86)\pipx_bin;C:\npm\prefix;C:\hostedtoolcache\windows\go\1.17.11\x64\bin;C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts;C:\hostedtoolcache\windows\Python\3.9.13\x64;C:\hostedtoolcache\windows\Ruby\3.0.4\x64\bin;C:\tools\kotlinc\bin;C:\hostedtoolcache\windows\Java_Temurin-Hotspot_jdk\8.0.332-9\x64\bin;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin;C:\ProgramData\kind;C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\dotnet\;C:\ProgramData\Chocolatey\bin;C:\Program Files\Docker;C:\Program Files\PowerShell\7\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\OpenSSL\bin;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\ProgramData\chocolatey\lib\pulumi\tools\Pulumi\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\CMake\bin;C:\ProgramData\chocolatey\lib\maven\apache-maven-3.8.6\bin;C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code;C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\GitHub CLI\;c:\tools\php;C:\Program Files (x86)\sbt\bin;C:\SeleniumWebDrivers\ChromeDriver\;C:\SeleniumWebDrivers\EdgeDriver\;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files\Amazon\SessionManagerPlugin\bin\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\LLVM\bin;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps
    GRAALVM_HOME: C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0
    JAVA_HOME: C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0
    Directory: D:\a\bleep\bleep
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           6/20/2022  8:50 PM                dist
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.polyglot/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.home/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/native-image.properties
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/reflect-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/reflect-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/dev.dirs/reflect-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/jline/resource-config.json
Apply jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/proxy-config.json
Executing [
'C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\bin\java.exe' \
-XX:+UseParallelGC \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-Dsubstratevm.IgnoreGraalVersionCheck=true \
--add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.access.foreign=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.event=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.loader=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.logger=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.module=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.perf=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.platform=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.reflect=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED \
--add-exports=java.base/sun.invoke.util=ALL-UNNAMED \
--add-exports=java.base/sun.net=ALL-UNNAMED \
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.factory=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.repository=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.scope=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.tree=ALL-UNNAMED \
--add-exports=java.base/sun.security.jca=ALL-UNNAMED \
--add-exports=java.base/sun.security.provider=ALL-UNNAMED \
--add-exports=java.base/sun.security.ssl=ALL-UNNAMED \
--add-exports=java.base/sun.security.util=ALL-UNNAMED \
--add-exports=java.base/sun.security.x509=ALL-UNNAMED \
--add-exports=java.base/sun.text.spi=ALL-UNNAMED \
--add-exports=java.base/sun.util.calendar=ALL-UNNAMED \
--add-exports=java.base/sun.util.cldr=ALL-UNNAMED \
--add-exports=java.base/sun.util.locale.provider=ALL-UNNAMED \
--add-exports=java.base/sun.util.locale=ALL-UNNAMED \
--add-exports=java.base/sun.util.resources=ALL-UNNAMED \
--add-exports=java.base/sun.util=ALL-UNNAMED \
--add-exports=java.desktop/sun.java2d.pipe=ALL-UNNAMED \
--add-exports=java.desktop/sun.java2d=ALL-UNNAMED \
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \
--add-exports=java.management/sun.management=ALL-UNNAMED \
--add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.events=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal.handlers=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED \
--add-exports=jdk.management/com.sun.management.internal=ALL-UNNAMED \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-Xms1g \
-Xmx6012577376 \
-Djava.awt.headless=true \
-Dorg.graalvm.version=22.1.0 \
-Dorg.graalvm.config=CE \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
'-javaagent:C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\svm.jar' \
-cp \
'C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\native-image-base.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\objectfile.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\pointsto.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\builder\svm.jar' \
--module-path \
'C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\truffle\truffle-api.jar' \
'com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus' \
-imagecp \
'D:\a\bleep\bleep\bleep-cli-assembly.jar;C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\library-support.jar' \
'-H:Path=D:\a\bleep\bleep' \
-H:+DumpTargetInfo \
-H:EnableURLProtocols=https \
'-H:Class@manifest from file:///D:/a/bleep/bleep/bleep-cli-assembly.jar=bleep.Main' \
'-H:Name@manifest from file:///D:/a/bleep/bleep/bleep-cli-assembly.jar=bleep-cli-assembly' \
'-H:FallbackThreshold@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=0' \
'-H:EnableURLProtocols@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=http' \
'-H:EnableURLProtocols@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=https' \
'-H:+ReportExceptionStackTraces@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=scala.runtime.Statics$VM:build_time' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=scala.Symbol:build_time' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/native-image.properties=scala.Symbol$:build_time' \
'-H:ClassInitialization@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.polyglot/native-image.properties=org.graalvm.polyglot:build_time' \
'-H:Features@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.graalvm.home/native-image.properties=org.graalvm.home.HomeFinderFeature' \
'-H:IncludeResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/native-image.properties=META-INF/native/windows64/csjniutils\.dll' \
'-H:ReflectionConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/reflect-config.json=META-INF/native-image/org.scala-lang/scala-lang/reflect-config.json' \
'-H:ReflectionConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/io.get-coursier/jni-utils/reflect-config.json=META-INF/native-image/io.get-coursier/jni-utils/reflect-config.json' \
'-H:ReflectionConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/dev.dirs/reflect-config.json=META-INF/native-image/dev.dirs/reflect-config.json' \
'-H:ResourceConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/jline/resource-config.json=META-INF/native-image/jline/resource-config.json' \
'-H:DynamicProxyConfigurationResources@jar:file:///D:/a/bleep/bleep/bleep-cli-assembly.jar!/META-INF/native-image/org.scala-lang/scala-lang/proxy-config.json=META-INF/native-image/org.scala-lang/scala-lang/proxy-config.json' \
'-H:CLibraryPath=C:\hostedtoolcache\windows\graalvm-ce-java17-windows\22.1.0\x64\graalvm-ce-java17-22.1.0\lib\svm\clibraries\windows-amd64' \
'-H:Name@explicit image name=dist/bleep-windows'
]
========================================================================================================================
GraalVM Native Image: Generating 'dist/bleep-windows' (executable)...
========================================================================================================================
[1/7] Initializing...                                                                                   (27.1s @ 0.35GB)
 Version info: 'GraalVM 22.1.0 Java 17 CE'
 C compiler: cl.exe (microsoft, x64, 19.32.31329)
 Garbage collector: Serial GC
 3 user-provided feature(s)
  - com.oracle.svm.polyglot.scala.ScalaFeature
  - com.oracle.svm.thirdparty.gson.GsonFeature
  - io.github.alexarchambault.windowsansi.NativeImageFeature
# Printing compilation-target information to: D:\a\bleep\bleep\reports\target_info_20220620_205111.txt
# Printing native-library information to: D:\a\bleep\bleep\reports\native_library_info_20220620_205313.txt
[2/7] Performing analysis...  [**************]                                                         (120.9s @ 2.16GB)
  14,665 (89.72%) of 16,345 classes reachable
  19,561 (65.33%) of 29,940 fields reachable
  69,214 (45.31%) of 152,741 methods reachable
     495 classes,   604 fields, and 2,650 methods registered for reflection
      80 classes,    74 fields, and    66 methods registered for JNI access
[3/7] Building universe...                                                                               (9.4s @ 2.19GB)
[4/7] Parsing methods...      [***]                                                                      (7.4s @ 2.67GB)
[5/7] Inlining methods...     [*******]                                                                 (17.6s @ 1.67GB)
[6/7] Compiling methods...    [*********]                                                               (77.1s @ 1.91GB)
[7/7] Creating image...                                                                                  (6.9s @ 3.11GB)
  26.47MB (42.52%) for code area:   42,800 compilation units
  30.62MB (49.19%) for image heap:  10,838 classes and 301,242 objects
   5.16MB ( 8.29%) for other data
  62.25MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 packages in code area:                               Top 10 object types in image heap:
   1.51MB sun.security.ssl                                     5.57MB byte[] for java.lang.String
   1.13MB bleep                                                5.43MB java.lang.Class
   1.07MB scala.collection.immutable                           5.32MB byte[] for code metadata
1007.27KB java.util                                            2.75MB byte[] for general heap data
 714.71KB com.sun.crypto.provider                              2.70MB java.lang.String
 669.68KB com.oracle.svm.core.reflect                          1.23MB com.oracle.svm.core.hub.DynamicHubCompanion
 652.50KB coursier.core                                      658.40KB byte[] for reflection metadata
 533.34KB c.s.org.apache.xerces.internal.impl.xs.traversers  640.92KB java.lang.reflect.Method
 486.01KB com.sun.org.apache.xerces.internal.impl            564.46KB java.lang.String[]
 477.73KB java.lang                                          516.14KB java.util.HashMap$Node
      ... 370 additional packages                                 ... 3930 additional object types
                                           (use GraalVM Dashboard to see all)
------------------------------------------------------------------------------------------------------------------------
                       33.5s (12.2% of total time) in 71 GCs | Peak RSS: 4.54GB | CPU load: 1.82
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 D:\a\bleep\bleep\dist\bleep-windows.exe (executable)
 D:\a\bleep\bleep\dist\bleep-windows.build_artifacts.txt
========================================================================================================================
Finished generating 'dist/bleep-windows' in 4m 34s.

@oyvindberg
Copy link

An earlier windows build does not generate an awt.dll file:

Produced artifacts:
 D:\a\bleep\bleep\dist\bleep-windows.exe (executable)
 D:\a\bleep\bleep\dist\bleep-windows.build_artifacts.txt
========================================================================================================================
Finished generating 'dist/bleep-windows' in 5m 29s.

I grepped and found this in snakeyaml source code here, quoted below

    /*
    * Android lacks much of java.beans (including the Introspector class, used here), because java.beans classes tend to rely on java.awt, which isn't
    * supported in the Android SDK. That means we have to fall back on FIELD access only when SnakeYAML is running on the Android Runtime.
   */

This may be a likely culprit for the AWT dependency

@sideeffffect
Copy link
Author

Wow, a parsing library depending on AWT... I guess I should have already learned to expect the unexpected 😸 I did try googling for GraalVM issues related to SnakeYAML, but to no success.
The question is, what can we do about it?

Is AWT not supposed to work on GraalVM on Windows (#2545 is still open)? Can we turn the build failure into a potential (hopefully not happening) runtime failure?

@fniephaus
Copy link
Member

The question is, what can we do about it?

You could run with something like -H:ReportAnalysisForbiddenType=java.awt.Component to see where a specific AWT class is made reachable. The code comment mentioned in #4659 (comment), however, already mentions that java.beans.Introspector uses java.awt.Component.

Is AWT not supposed to work on GraalVM on Windows (#2545 is still open)? Can we turn the build failure into a potential (hopefully not happening) runtime failure?

AWT on Windows works, but it requires appropriate NI configuration, which the tracing agent can help you generate. I wouldn't try and turn it into a run-time failure, I would probably file a ticket against SnakeYAML or try to avoid it to be honest. The additional AWT classes are bloating the size of your Native Image executables and the dependency on awt.dll is a weird thing to ship with your application.

Could you please rebuild your app with a proper Native Image configuration in place? If that doesn't fix the reported issue, please re-open the ticket.

@fniephaus fniephaus self-assigned this Jun 21, 2022
@fniephaus fniephaus added this to To do in Native Image via automation Jun 21, 2022
@sideeffffect
Copy link
Author

I can maybe congigure the SnakeYAML library so that the code that invokes AWT won't get executed. But the code will technically still be reachable, right?

How can I trick native-image to think AWT is not reachable?

@fniephaus
Copy link
Member

You could try and initialize SnakeYAML or some specific classes of it at build-time, but I'm not sure how well that'll work.

@oyvindberg
Copy link

we fixed this by using a redesigned version of snakeyaml which is called snakeyaml-engine

thanks for your prompt, detailed and useful feedback here :)

@fniephaus
Copy link
Member

Great, you are welcome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Native Image
  
To do
Development

No branches or pull requests

3 participants