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] Failed to build the native image on Windows when using Signal.handle #1784

Closed
soligto opened this issue Oct 28, 2019 · 5 comments

Comments

@soligto
Copy link

soligto commented Oct 28, 2019

The code example provided in #465 doesn't compile on Windows.

C:\graal>javac Agent.java
Agent.java:3: warning: Signal is internal proprietary API and may be removed in a future release
import sun.misc.Signal;
               ^
Agent.java:14: warning: Signal is internal proprietary API and may be removed in a future release
        Signal.handle(new Signal("INT"), sig -> System.exit(0));
                          ^
Agent.java:14: warning: Signal is internal proprietary API and may be removed in a future release
        Signal.handle(new Signal("INT"), sig -> System.exit(0));
        ^
Agent.java:14: warning: Signal is internal proprietary API and may be removed in a future release
        Signal.handle(new Signal("INT"), sig -> System.exit(0));
                                         ^
4 warnings

C:\graal>"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\bin\native-image.cmd" Agent
[agent:8240]    classlist:   3,412.43 ms
[agent:8240]        (cap):   3,186.36 ms
[agent:8240]        setup:   4,735.85 ms
[agent:8240]   (typeflow):   7,314.29 ms
[agent:8240]    (objects):   6,351.60 ms
[agent:8240]   (features):     634.06 ms
[agent:8240]     analysis:  14,607.15 ms
[agent:8240]     (clinit):     266.78 ms
[agent:8240]     universe:     722.39 ms
[agent:8240]      (parse):   1,474.81 ms
[agent:8240]     (inline):   3,003.64 ms
[agent:8240]    (compile):   9,838.21 ms
[agent:8240]      compile:  15,258.31 ms
[agent:8240]        image:   1,483.27 ms
[agent:8240]        write:     248.06 ms
Fatal error: java.lang.RuntimeException: java.lang.RuntimeException: host C compiler or linker does not seem to work: java.lang.RuntimeException: returned 2

Running command: CL /MD /Zi /PDBSTRIPPED /FeC:\graal\agent.exe C:\Users\DinamoMachine\AppData\Local\Temp\SVM-4846924326234826620\agent.obj C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib /link /INCREMENTAL:NO /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:OLDNAMES /LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib /LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64 advapi32.lib ws2_32.lib secur32.lib iphlpapi.lib

Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '/PDBSTRIPPED'
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/debug
/out:C:\graal\agent.exe
/INCREMENTAL:NO /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:OLDNAMES
"/LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib"
"/LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64"
advapi32.lib
ws2_32.lib
secur32.lib
iphlpapi.lib
C:\Users\DinamoMachine\AppData\Local\Temp\SVM-4846924326234826620\agent.obj
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib"
   Creating library C:\graal\agent.lib and object C:\graal\agent.exp
java.lib(Signal.obj) : error LNK2019: unresolved external symbol JVM_FindSignal referenced in function Java_sun_misc_Signal_findSignal
java.lib(Signal.obj) : error LNK2019: unresolved external symbol JVM_RegisterSignal referenced in function Java_sun_misc_Signal_handle0
java.lib(Signal.obj) : error LNK2019: unresolved external symbol JVM_RaiseSignal referenced in function Java_sun_misc_Signal_raise0
C:\graal\agent.exe : fatal error LNK1120: 3 unresolved externals

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
        at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
        at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:461)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:310)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:448)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:113)
Caused by: java.lang.RuntimeException: host C compiler or linker does not seem to work: java.lang.RuntimeException: returned 2

Running command: CL /MD /Zi /PDBSTRIPPED /FeC:\graal\agent.exe C:\Users\DinamoMachine\AppData\Local\Temp\SVM-4846924326234826620\agent.obj C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib /link /INCREMENTAL:NO /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:OLDNAMES /LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib /LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64 advapi32.lib ws2_32.lib secur32.lib iphlpapi.lib

Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '/PDBSTRIPPED'
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/debug
/out:C:\graal\agent.exe
/INCREMENTAL:NO /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:OLDNAMES
"/LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib"
"/LIBPATH:C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64"
advapi32.lib
ws2_32.lib
secur32.lib
iphlpapi.lib
C:\Users\DinamoMachine\AppData\Local\Temp\SVM-4846924326234826620\agent.obj
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\ffi.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\net.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\nio.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\java.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\libchelper.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\strictmath.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\svm\clibraries\windows-amd64\jvm.lib"
"C:\Program Files\Java\graalvm-ce-windows-amd64-19.2.1\graalvm-ce-19.2.1\jre\lib\zip.lib"
   Creating library C:\graal\agent.lib and object C:\graal\agent.exp
java.lib(Signal.obj) : error LNK2019: unresolved external symbol JVM_FindSignal referenced in function Java_sun_misc_Signal_findSignal
java.lib(Signal.obj) : error LNK2019: unresolved external symbol JVM_RegisterSignal referenced in function Java_sun_misc_Signal_handle0
java.lib(Signal.obj) : error LNK2019: unresolved external symbol JVM_RaiseSignal referenced in function Java_sun_misc_Signal_raise0
C:\graal\agent.exe : fatal error LNK1120: 3 unresolved externals

        at com.oracle.svm.hosted.image.NativeBootImageViaCC.write(NativeBootImageViaCC.java:350)
        at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:657)
        at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:444)
        at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Image build request failed with exit status 1
@borkdude
Copy link

I'm also using new Signal("PIPE") in one of my programs, which doesn't compile on Windows.

@borkdude
Copy link

Context for what I'm using this for: I'm making a script interpreter for shell scripting using Clojure: https://github.com/borkdude/babashka/

This works on Linux, Mac and now also Windows, although functionality around pipe signal handling is the only thing that doesn't work on Windows due to this issue.

@borkdude
Copy link

borkdude commented Feb 8, 2020

With the GraalVM 20.1-dev version I do not get a compile time error anymore when using a Signal, but I do see runtime errors when trying to construct a Signal with "PIPE":

C:\Users\borkdude\Downloads>bb "(+ 1 2 3)"
Exception in thread "main" java.lang.IllegalArgumentException: Unknown signal: PIPE
        at sun.misc.Signal.<init>(Signal.java:143)
        at babashka.impl.pipe_signal_handler$handle_pipe_BANG_.invokeStatic(pipe_signal_handler.clj:11)

@pejovica
Copy link
Member

pejovica commented May 8, 2020

@borkdude There is no SIGPIPE on Windows, so that's expected.

@pejovica
Copy link
Member

pejovica commented May 8, 2020

The issue was fixed a while ago in 4ce890d.

@pejovica pejovica closed this as completed May 8, 2020
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

5 participants