Skip to content

Commit eccba94

Browse files
committed
[GR-69747] Fix heap size regression in SecureRandom initialization
PullRequest: graalpython/4012
2 parents 458c24d + 2caca2f commit eccba94

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PythonContext.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
*/
2626
package com.oracle.graal.python.runtime;
2727

28-
import static com.oracle.graal.python.annotations.PythonOS.PLATFORM_DARWIN;
29-
import static com.oracle.graal.python.annotations.PythonOS.PLATFORM_WIN32;
3028
import static com.oracle.graal.python.PythonLanguage.getPythonOS;
3129
import static com.oracle.graal.python.PythonLanguage.throwIfUnsupported;
30+
import static com.oracle.graal.python.annotations.PythonOS.PLATFORM_DARWIN;
31+
import static com.oracle.graal.python.annotations.PythonOS.PLATFORM_WIN32;
3232
import static com.oracle.graal.python.builtins.modules.SysModuleBuiltins.T_CACHE_TAG;
3333
import static com.oracle.graal.python.builtins.modules.SysModuleBuiltins.T__MULTIARCH;
3434
import static com.oracle.graal.python.builtins.modules.io.IONodes.T_CLOSED;
@@ -75,7 +75,6 @@
7575
import java.nio.file.LinkOption;
7676
import java.security.NoSuchAlgorithmException;
7777
import java.security.SecureRandom;
78-
import java.security.Security;
7978
import java.text.MessageFormat;
8079
import java.util.ArrayDeque;
8180
import java.util.ArrayList;
@@ -102,9 +101,9 @@
102101
import org.graalvm.options.OptionKey;
103102

104103
import com.oracle.graal.python.PythonLanguage;
104+
import com.oracle.graal.python.annotations.PythonOS;
105105
import com.oracle.graal.python.builtins.Python3Core;
106106
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
107-
import com.oracle.graal.python.annotations.PythonOS;
108107
import com.oracle.graal.python.builtins.modules.MathGuards;
109108
import com.oracle.graal.python.builtins.modules.ctypes.CtypesModuleBuiltins.CtypesThreadState;
110109
import com.oracle.graal.python.builtins.objects.PNone;
@@ -1511,13 +1510,14 @@ public SecureRandom getSecureRandom() {
15111510
assert !env.isPreInitialization();
15121511
if (secureRandom == null) {
15131512
CompilerDirectives.transferToInterpreterAndInvalidate();
1514-
if (Security.getAlgorithms("SecureRandom").contains("NATIVEPRNGNONBLOCKING")) {
1515-
try {
1516-
secureRandom = SecureRandom.getInstance("NATIVEPRNGNONBLOCKING");
1517-
} catch (NoSuchAlgorithmException e) {
1518-
throw CompilerDirectives.shouldNotReachHere(e);
1519-
}
1520-
} else {
1513+
/*
1514+
* Be careful with what we initialize here. Doing stuff likes Security.getAlgorithms may
1515+
* eagerly initialize bouncycastle and bloat the heap. Run the heap:post-startup
1516+
* benchmark when making changes.
1517+
*/
1518+
try {
1519+
secureRandom = SecureRandom.getInstance("NATIVEPRNGNONBLOCKING");
1520+
} catch (NoSuchAlgorithmException e) {
15211521
secureRandom = new SecureRandom();
15221522
}
15231523
}

0 commit comments

Comments
 (0)