summaryrefslogtreecommitdiffstats
path: root/runtime/java_vm_ext.cc
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-10-15 16:59:47 -0700
committerMathieu Chartier <mathieuc@google.com>2014-10-16 19:16:41 -0700
commitd000480134b7b00895fbfd142f1d1e18d9cfa6e9 (patch)
treea9fab808555310308aecda2a59a7c90727ede0ff /runtime/java_vm_ext.cc
parentd866c7616cb3426c431b635ae69964ce69c2ecb5 (diff)
downloadandroid_art-d000480134b7b00895fbfd142f1d1e18d9cfa6e9.tar.gz
android_art-d000480134b7b00895fbfd142f1d1e18d9cfa6e9.tar.bz2
android_art-d000480134b7b00895fbfd142f1d1e18d9cfa6e9.zip
Add way to ensure we are at the front of the sigaction chain
Calling this after jni_on_load fixes the unity apps. This is not exactly correct since we may already have the following chain. Start up: Us -> debuggerd After app goes in front: App -> us -> debuggerd After we put ourself back at the front: Us -> app -> us -> app -> .... stack overflow. Bug: 17620677 Change-Id: I9183997e3d5ebd51c320b5d51425be5142e938f3 (cherry picked from commit 1f24296c7c8a6501ee2388c0d20b48f471b48660)
Diffstat (limited to 'runtime/java_vm_ext.cc')
-rw-r--r--runtime/java_vm_ext.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc
index 1444d9762a..fed8bf07be 100644
--- a/runtime/java_vm_ext.cc
+++ b/runtime/java_vm_ext.cc
@@ -21,6 +21,7 @@
#include "base/mutex.h"
#include "base/stl_util.h"
#include "check_jni.h"
+#include "fault_handler.h"
#include "indirect_reference_table-inl.h"
#include "mirror/art_method.h"
#include "mirror/class-inl.h"
@@ -688,6 +689,10 @@ bool JavaVMExt::LoadNativeLibrary(JNIEnv* env, const std::string& path, jobject
JNI_OnLoadFn jni_on_load = reinterpret_cast<JNI_OnLoadFn>(sym);
int version = (*jni_on_load)(this, nullptr);
+ if (runtime_->GetTargetSdkVersion() != 0 && runtime_->GetTargetSdkVersion() <= 21) {
+ fault_manager.EnsureArtActionInFrontOfSignalChain();
+ }
+
self->SetClassLoaderOverride(old_class_loader.get());
if (version == JNI_ERR) {