diff --git a/sdk/mx.sdk/mx_sdk_vm_impl.py b/sdk/mx.sdk/mx_sdk_vm_impl.py index a79bbc1ffbb2..17f7b1475315 100644 --- a/sdk/mx.sdk/mx_sdk_vm_impl.py +++ b/sdk/mx.sdk/mx_sdk_vm_impl.py @@ -1417,6 +1417,8 @@ def contents(self): if isinstance(image_config, mx_sdk.LauncherConfig) or (isinstance(image_config, mx_sdk.LanguageLibraryConfig) and image_config.launchers): build_args += [ + '-R:+EnableSignalHandling', + '-R:+InstallSegfaultHandler', '--enable-monitoring=jvmstat,heapdump,jfr,threaddump', ] + svm_experimental_options([ '-H:+InstallExitHandlers', diff --git a/sdk/mx.sdk/mx_sdk_vm_ng.py b/sdk/mx.sdk/mx_sdk_vm_ng.py index 42ad274fd069..dd13cdc060b0 100644 --- a/sdk/mx.sdk/mx_sdk_vm_ng.py +++ b/sdk/mx.sdk/mx_sdk_vm_ng.py @@ -376,7 +376,7 @@ class LanguageLibraryProject(NativeImageLibraryProject): def get_build_args(self): build_args = super().get_build_args()[:] - # Signals flags, the first 2 are also set in AbstractLanguageLauncher but better to be explicit + # Signals flags build_args += [ '-R:+EnableSignalHandling', '-R:+InstallSegfaultHandler', diff --git a/sdk/src/org.graalvm.launcher/src/org/graalvm/launcher/AbstractLanguageLauncher.java b/sdk/src/org.graalvm.launcher/src/org/graalvm/launcher/AbstractLanguageLauncher.java index 7a21f8601942..23038a2f67a9 100644 --- a/sdk/src/org.graalvm.launcher/src/org/graalvm/launcher/AbstractLanguageLauncher.java +++ b/sdk/src/org.graalvm.launcher/src/org/graalvm/launcher/AbstractLanguageLauncher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * The Universal Permissive License (UPL), Version 1.0 @@ -48,7 +48,6 @@ import java.util.List; import java.util.Map; -import org.graalvm.nativeimage.RuntimeOptions; import org.graalvm.polyglot.Context; import org.graalvm.polyglot.Engine; import org.graalvm.polyglot.Language; @@ -150,12 +149,6 @@ protected final void launch(String[] args) { * @throws Exception if no launcher constructor has been set. */ public static void runLauncher(byte[][] optionVarsArgs, byte[][] args, int argc, long argv, boolean relaunch) throws Exception { - if (isAOT()) { - // enable signal handling for the launcher - RuntimeOptions.set("EnableSignalHandling", true); - RuntimeOptions.set("InstallSegfaultHandler", true); - } - if (LAUNCHER_CTOR == null) { throw new Exception("Launcher constructor has not been set."); } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/SubstrateSegfaultHandler.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/SubstrateSegfaultHandler.java index 904a95de76fd..57fdc864a506 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/SubstrateSegfaultHandler.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/SubstrateSegfaultHandler.java @@ -129,7 +129,7 @@ private static boolean isFirst() { public abstract class SubstrateSegfaultHandler { public static class Options { @Option(help = "Install segfault handler that prints register contents and full Java stacktrace. Default: enabled for an executable, disabled for a shared library, disabled when EnableSignalHandling is disabled.")// - static final RuntimeOptionKey InstallSegfaultHandler = new RuntimeOptionKey<>(null); + public static final RuntimeOptionKey InstallSegfaultHandler = new RuntimeOptionKey<>(null); } private static final long MARKER_VALUE = 0x0123456789ABCDEFL; diff --git a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedGraalUtils.java b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedGraalUtils.java index efc03a26ed14..03372b525771 100644 --- a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedGraalUtils.java +++ b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedGraalUtils.java @@ -27,6 +27,7 @@ import java.lang.reflect.Array; import java.nio.ByteBuffer; +import com.oracle.svm.core.SubstrateSegfaultHandler; import org.graalvm.collections.EconomicMap; import org.graalvm.nativeimage.CurrentIsolate; import org.graalvm.nativeimage.Isolates; @@ -127,6 +128,10 @@ private static void appendOptionsRelevantForCompilationIsolates(CreateIsolatePar /* Compilation isolates do the reference handling manually to avoid the extra thread. */ appendArgument(builder, SubstrateOptions.ConcealedOptions.AutomaticReferenceHandling, false); + + /* Disable signal handling for compilation isolates. */ + appendArgument(builder, SubstrateOptions.EnableSignalHandling, false); + appendArgument(builder, SubstrateSegfaultHandler.Options.InstallSegfaultHandler, false); } private static void appendOptionsExplicitlySetForCompilationIsolates(CreateIsolateParameters.Builder builder) {