私はかなり奇妙な問題を抱えています!
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
私の問題を解決できるアイデアがあれば、大歓迎です