Skip to content

Commit a6e3d0b

Browse files
committed
Avoid using SignalHandler.SIG_IGN as that prevents further Signal.handle() to work on JVM
* Tested and problematic on Java 8 and 11. Native Image works fine.
1 parent 67a39bd commit a6e3d0b

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/main/java/org/truffleruby/platform/Signals.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818

1919
public class Signals {
2020

21+
/** This is used instead of {@link SignalHandler.SIG_IGN} as {@code Signal.handle(sig, anyHandler)} seems to no
22+
* longer work after {@code Signal.handle(sig, SIG_IGN)} on (on Native Image it seems fine). */
23+
private static final SignalHandler IGNORE = sig -> {
24+
};
25+
2126
// Use String and not Signal as key to work around SVM not allowing new Signal("PROF")
2227
private static final ConcurrentMap<String, SignalHandler> DEFAULT_HANDLERS = new ConcurrentHashMap<>();
2328

@@ -29,7 +34,7 @@ public static void registerHandler(SignalHandler newHandler, String signalName)
2934

3035
public static void registerIgnoreHandler(String signalName) {
3136
final Signal signal = new Signal(signalName);
32-
final SignalHandler oldHandler = Signal.handle(signal, SignalHandler.SIG_IGN);
37+
final SignalHandler oldHandler = Signal.handle(signal, IGNORE);
3338
DEFAULT_HANDLERS.putIfAbsent(signalName, oldHandler);
3439
}
3540

0 commit comments

Comments
 (0)