Open cnico opened 3 months ago
The option --enable-monitoring
was added to this commit https://github.com/oracle/graal/commit/8e6bbfd54e5df0aec2fcc8fe8cd68bbb5dcc4d4b
If you are using Gluon build of GraalVM (22.1.0.1-Final), that commit didn't make it to the build.
If you check the changes in that commit:
- To build a native executable with JFR, use the `-H:+AllowVMInspection` flag:
+ To build a native executable with JFR, use the `--enable-monitoring=jfr` flag:
the "old" way to enable VM inspection works with GluonFX and GraalVM 22.1.0.1-Final:
<nativeImageArgs>-H:+AllowVMInspection</nativeImageArgs>
Note also that if you want to test on desktop, you can try a more recent GraalVM official build with the GluonFX plugin, and the new flag.
Hi, Thanks you for your feedback. I tried various options and did have no success with neither of them.
Here are my attemps :
1/ With the "old" way, I added the option in the pom.xml
<nativeImageArgs>-H:+AllowVMInspection</nativeImageArgs>
It fails with the following error :
Exception in thread "main" java.lang.IllegalArgumentException: Installing signal handlers is not enabled at jdk.internal.misc.Signal.handle0(Signal.java:63) at jdk.internal.misc.Signal.handle(Signal.java:170) at sun.misc.Signal.handle(Signal.java:157) at com.oracle.svm.core.DumpAllStacks.install(VMInspection.java:101) at com.oracle.svm.core.VMInspectionStartupHook.execute(VMInspection.java:88) at com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:151) at com.oracle.svm.core.jdk.RuntimeSupport.initialize(RuntimeSupport.java:96) at org.graalvm.nativeimage.VMRuntime.initialize(VMRuntime.java:65)
As my app is only a Desktop one, with a recent version of graalVM set in the PATH (version 22.0.1 of april), I tried various syntax for the options :
2/ With this maven conf :
<nativeImageArgs>--enable-monitoring=heapdump,jvmstat</nativeImageArgs>
Maven build fails because it converts the , as a separator for args
3/ With :
<nativeImageArgs>
<nativeImageArg>--enable-monitoring=heapdump,jvmstat</nativeImageArg>
</nativeImageArgs>
Build is OK but native exe crashes at startup with a :
Exception in thread "main" java.lang.IllegalArgumentException: Signal handlers can't be installed if signal handling is disabled, see option 'EnableSignalHandling'. at java.base@22.0.1/jdk.internal.misc.Signal.handle0(Signal.java:63) at java.base@22.0.1/jdk.internal.misc.Signal.handle(Signal.java:170) at org.graalvm.nativeimage.builder/com.oracle.svm.core.DumpAllStacks.install(DumpThreadStacksOnSignalFeature.java:71) at org.graalvm.nativeimage.builder/com.oracle.svm.core.DumpThreadStacksOnSignalStartupHook.execute(DumpThreadStacksOnSignalFeature.java:64) at org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:168) at org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk.RuntimeSupport.initialize(RuntimeSupport.java:99) at org.graalvm.nativeimage/org.graalvm.nativeimage.VMRuntime.initialize(VMRuntime.java:65)
4/ With an extensive search, I found other options and after many tries :
<nativeImageArgs>
<nativeImageArg>--install-exit-handlers</nativeImageArg>
<nativeImageArg>--enable-monitoring=all</nativeImageArg>
<nativeImageArg>-R:+EnableSignalHandling</nativeImageArg>
</nativeImageArgs>
Build is OK and native exe starts correctly. But in visualVM, my native image is not detected :(
If you have any idea on how to make it work, I really would appreciate it.
For information, I isolated and reproduced the problem with the latest version of graalvm and reported a bug here : https://github.com/oracle/graal/issues/9563 Waiting for it.
I tried to use the monitoring of native image build for my javafx application with gluonfx maven plugin. I am on windows and my build and native app following gluon docs works correctly :)
I followed : https://www.graalvm.org/latest/tools/visualvm/ to add --enable-monitoring=all to the native image build.
I did this configuration in the pom.xml :
The build failed with the logs : [mer. août 07 10:03:10 CEST 2024][INFOS] [SUB] Error: Unrecognized option: --enable-monitoring=all [mer. août 07 10:03:10 CEST 2024][PRÉCIS] Result for compile: 1 [mer. août 07 10:03:10 CEST 2024][GRAVE] Process compile failed with result: 1
Expected Behavior
I expect the option of monitoring is supported and I can then connect with visualvm to my native application in order to profile it.
Current Behavior
Build fail.
Context
I try to analyze ressource usage (cpu, memory) of the native image and optimize it because cpu usage is excessive by now.