From 5e35a3f2d0eeb2db694a97738b63ab12c2303930 Mon Sep 17 00:00:00 2001 From: Matt D'Souza Date: Fri, 11 Apr 2025 14:20:38 -0400 Subject: [PATCH] Invoke teardown hooks in Shutdown#exit substitution --- .../core/jdk/Target_java_lang_Shutdown.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_Shutdown.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_Shutdown.java index 743a0eced415..7fd979eab12b 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_Shutdown.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_Shutdown.java @@ -62,6 +62,29 @@ static void beforeHalt() { private static void logRuntimeExit(int status) { // Disable exit logging (GR-45418/JDK-8301627) } + + @Alias + static native void runHooks(); + + @Alias + static native void halt(int status); + + /** + * This substitution makes a few modifications to {@code Shutdown#exit}: + * + */ + @Substitute + static void exit(int status) { + synchronized (Target_java_lang_Shutdown.class) { + runHooks(); + RuntimeSupport.executeTearDownHooks(); + halt(status); + } + } } /** Utility methods for Target_java_lang_Shutdown. */