summaryrefslogtreecommitdiff
path: root/runtime/java_vm_ext.cc
diff options
context:
space:
mode:
author Dimitry Ivanov <dimitry@google.com> 2016-05-09 16:26:13 -0700
committer Dimitry Ivanov <dimitry@google.com> 2016-05-09 16:26:13 -0700
commitc544f34bfed4273b38e5c3769c627e0c3e9c5d73 (patch)
tree2b4c8c7c7787290f8680674ffd9b34bf15c21dc1 /runtime/java_vm_ext.cc
parent266f2d4d51a18a703b2d4fbfedc63eb1baaf3ffb (diff)
Initialize native loader before starting runtime
Loading public libraries before everything else to prevent situation when libssl.so gets into libopenjdk.so load group which then prevented from unloading by a global library referencing the very same libssl.so Bug: http://b/28449304 Change-Id: I3bbff3cc6926c2377ae5cb5b7b5b5d6e26ea4470
Diffstat (limited to 'runtime/java_vm_ext.cc')
-rw-r--r--runtime/java_vm_ext.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc
index 79c320309c..d983a9fa19 100644
--- a/runtime/java_vm_ext.cc
+++ b/runtime/java_vm_ext.cc
@@ -943,6 +943,11 @@ extern "C" jint JNI_CreateJavaVM(JavaVM** p_vm, JNIEnv** p_env, void* vm_args) {
if (!Runtime::Create(options, ignore_unrecognized)) {
return JNI_ERR;
}
+
+ // Initialize native loader. This step makes sure we have
+ // everything set up before we start using JNI.
+ android::InitializeNativeLoader();
+
Runtime* runtime = Runtime::Current();
bool started = runtime->Start();
if (!started) {
@@ -952,10 +957,6 @@ extern "C" jint JNI_CreateJavaVM(JavaVM** p_vm, JNIEnv** p_env, void* vm_args) {
return JNI_ERR;
}
- // Initialize native loader. This step makes sure we have
- // everything set up before we start using JNI.
- android::InitializeNativeLoader();
-
*p_env = Thread::Current()->GetJniEnv();
*p_vm = runtime->GetJavaVM();
return JNI_OK;