0

我有一个很奇怪的问题!

我的应用程序在 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

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

4

0 回答 0