diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-10-15 16:59:47 -0700 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-10-16 19:16:41 -0700 |
commit | d000480134b7b00895fbfd142f1d1e18d9cfa6e9 (patch) | |
tree | a9fab808555310308aecda2a59a7c90727ede0ff /runtime/java_vm_ext.cc | |
parent | d866c7616cb3426c431b635ae69964ce69c2ecb5 (diff) | |
download | android_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.cc | 5 |
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) { |