Hi,
I am making a library app which detects native crashes in android using
google breakpad. Whenever my main app has a native crash, breakpad invokes
the following callback. From this callback, I need to call a static void
method in a java class using JNI.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----
*bool breakpad_callback(const google_breakpad::MinidumpDescriptor& descriptor,
void* context, bool succeeded) {
JNIEnv* env = NULL;
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK)
{
if(isDebug)
LOGI("Failed to get the environment");
return false;
}
if(isDebug)
LOGI("attaching thread ...");
vm->AttachCurrentThread(&env, NULL);
if(isDebug)
LOGI("handle exception");
ExceptionHandlerClass = (jclass)env->NewGlobalRef(env->FindClass("com/abc/Myclass"));
if (ExceptionHandlerClass == NULL)
LOGE("Could not find java class");
ExceptionHandlerMethod = env->GetStaticMethodID(ExceptionHandlerClass, "handleException", "()V");
if (ExceptionHandlerMethod == NULL)
LOGE("Could not bind exception handler method");
// handle exception
env->CallStaticVoidMethod(ExceptionHandlerClass, ExceptionHandlerMethod);
if(env->ExceptionCheck()) {
LOGI("got exception");
env->ExceptionDescribe();
}
if(isDebug)
LOGI("exception handled");
}*
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------
This is my java method:
*package com.abc;
public class Myclass {
public static void handleException() {
System.out.println("inside handle exception");
}
}*
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------
This used to work fine before Android 5.0. But in Lollipop, I am not able to
call my java method as I am not able to see 'inside handle exception log on
Logcat console.
Here are the log msgs I see on logcat:
*12-01 13:57:46.617: I/AACRNative(1617): attaching thread ...
12-01 13:57:46.617: I/AACRNative(1617): handle exception
12-01 13:57:46.619: I/AACRNative(1617): got exception
12-01 13:57:46.620: W/art(1617): JNI WARNING: java.lang.StackOverflowError
thrown while calling printStackTrace
12-01 13:57:46.620: I/AACRNative(1617): exception handled*
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------
Any help would be really appreciable.
Original issue reported on code.google.com by xuan.and...@gmail.com on 14 Apr 2015 at 4:25
Original issue reported on code.google.com by
xuan.and...@gmail.com
on 14 Apr 2015 at 4:25