diff --git a/jcl/src/java.base/share/classes/openj9/internal/criu/InternalCRIUSupport.java b/jcl/src/java.base/share/classes/openj9/internal/criu/InternalCRIUSupport.java index e2bf70ed564..f35f2f1e1f9 100644 --- a/jcl/src/java.base/share/classes/openj9/internal/criu/InternalCRIUSupport.java +++ b/jcl/src/java.base/share/classes/openj9/internal/criu/InternalCRIUSupport.java @@ -231,7 +231,7 @@ private static native void checkpointJVMImpl(String imageDir, private static native String[] getRestoreSystemProperites(); - static { + private static void initializeUnsafe() { AccessController.doPrivileged((PrivilegedAction) () -> { try { Field f = Unsafe.class.getDeclaredField("theUnsafe"); //$NON-NLS-1$ @@ -809,6 +809,10 @@ private void registerRestoreEnvVariables() { return; } + if (unsafe == null) { + initializeUnsafe(); + } + J9InternalCheckpointHookAPI.registerPostRestoreHook(HookMode.SINGLE_THREAD_MODE, RESTORE_ENVIRONMENT_VARIABLES_PRIORITY, "Restore environment variables via env file: " + envFile, () -> { //$NON-NLS-1$ if (!Files.exists(this.envFile)) {