You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 [email protected] on 14 Apr 2015 at 4:25
The text was updated successfully, but these errors were encountered:
Hi,
I have the exact same error, and can verify that it does work on Andoid 4.4,
but fails on Android 5.1.
On my native side I can do everything, except doing Java calls.
I have solved this problem. You can create a new thread in the method
"breakpad_callback" and then make JNI call from in the created thread. It will
be work. Good Luck.
Hi,
I have the same problem. Your solution really save my time. But I also found
google breakpad can not dump the crash information on Android lollipop. The dmp
files I got
are all empty. Do you encounter this problem? This is not true for Android 4.*.
Thanks.
Original issue reported on code.google.com by
[email protected]
on 14 Apr 2015 at 4:25The text was updated successfully, but these errors were encountered: