pthread_getspecific后Android应用程序JNI / Java崩溃

时间:2012-05-02 12:39:40

标签: android-ndk java-native-interface

我有一个很奇怪的问题!

我的应用程序在JNI(C代码)部分中的pthread_getspecific之后崩溃了,但是有什么奇怪的,那是因为它没有直接崩溃,因为我在崩溃之前多次使用这个函数,一切都很好。

所以,这里是崩溃附加的C代码:

int *compteur;
__android_log_print(ANDROID_LOG_INFO, "JNI", "before getspecific key : %d",key);
compteur=(int*)pthread_getspecific(key);
__android_log_print(ANDROID_LOG_ERROR, "JNI", "error %s",strerror(errno));
__android_log_print(ANDROID_LOG_INFO, "JNI", "pointeur : %ld",*compteur);
(*compteur)=(*compteur)-1;
if ((*compteur)==0)
{
  pthread_mutex_unlock(&mutex));
}  

logcat告诉我:

>     before getspecific key : 13
>     error Unknown error: 0
>     pointeur : 1
>     before getspecific key : 13
>     error Unknown error: 0
>     pointeur : 1
>     before getspecific key : 13
>     error Unknown error: 0
CRASH

所以使用ndk-stack我有:

$home>adb logcat | ndk-stack -sym obj
/local/armeabi
********** Crash dump: **********
Build fingerprint: 'archos/G9A80/A80:3.2.1/HTK75D/20120103.181511:user/release-keys'
pid: 7322, tid: 7332  >>> com.prg.main <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00  pc 00012532  /data/data/com.prg.main/lib/libPrg.so (the function where the crash appens): Routine
(the function where the crash appens) in myfile.c:75
...
Stack frame #04  pc 00011770  /system/lib/libc.so (__thread_entry)
Stack frame #05  pc 000112c4  /system/lib/libc.so (pthread_create)
Crash dump is completed

如果您有任何想法可以解决我的问题,欢迎您

0 个答案:

没有答案