崔です。
すみません。説明不足です。
com.f*****.s*********.s*********LighttpdServiceは独自クラスです。
まず、エラーの一部です。
10-19 16:13:22.150: INFO/DEBUG(9927): *** *** *** *** *** *** *** ***
*** *** *** *** *** *** *** ***
10-19 16:13:22.150: INFO/DEBUG(9927): Build fingerprint: 'jdd/jdd/
sapphire/sapphire:1.6/DRC83/14721:user/adp,test-keys'
10-19 16:13:22.150: INFO/DEBUG(9927): pid: 10199, tid: 10199 >>>
com.f***.s*** <<<
10-19 16:13:22.160: INFO/DEBUG(9927): signal 11 (SIGSEGV), fault addr
00000000
10-19 16:13:22.160: INFO/DEBUG(9927): r0 412a9bb0 r1 ad082c50 r2
00000000 r3 0000fe30
10-19 16:13:22.160: INFO/DEBUG(9927): r4 0000a9c8 r5 43225170 r6
80645260 r7 4104edc0
10-19 16:13:22.160: INFO/DEBUG(9927): r8 bef4f6b8 r9 4104edb8 10
4104eda8 fp 00000000
10-19 16:13:22.160: INFO/DEBUG(9927): ip ad084058 sp bef4f6a8 lr
ad041493 pc 804425fc cpsr 20000010
10-19 16:13:23.000: INFO/DEBUG(9927): #00 pc 000425fc /data/
data/com.f****.s***/lib/libmm.so
10-19 16:13:23.010: INFO/DEBUG(9927): #01 pc 0000e434 /
system/lib/libdvm.so
......
10-19 16:13:23.071: INFO/DEBUG(9927): #18 pc b000163c /
system/bin/linker
10-19 16:13:23.071: INFO/DEBUG(9927): stack:
10-19 16:13:23.071: INFO/DEBUG(9927): bef4f668 ad083e1c /system/
lib/libdvm.so
10-19 16:13:23.080: INFO/DEBUG(9927): bef4f66c ad05df61 /system/
lib/libdvm.so
10-19 16:13:23.080: INFO/DEBUG(9927): bef4f670 412a9bb0 /dev/
ashmem/dalvik-LinearAlloc (deleted)
10-19 16:13:23.080: INFO/DEBUG(9927): bef4f674 412a9bb0 /dev/
ashmem/dalvik-LinearAlloc (deleted)
10-19 16:13:23.080: INFO/DEBUG(9927): bef4f678 43225170 /dev/
ashmem/mspace/dalvik-heap/2 (deleted)
10-19 16:13:23.080: INFO/DEBUG(9927): bef4f67c ad041493 /system/
lib/libdvm.so
....
>JNIEnvはただのポインタではありません。
>ポインタ+スレッド毎の情報も格納されるはずですので
あれ、そうしますと、スレッド情報はどうすればいいですかね?
下記のようにgEnvをポインタ型しても同じエラーです。
c側コード:
#include <string.h>
#include <jni.h>
#include <stdio.h>
#include <pthread.h>
static int iscall = 0;
static JNIEnv *gEnv;
static jclass gJcCallback;
static jmethodID gMid;
void connect_cb(char *addr)
{
FILE *fd;
fd = fopen("/sdcard/mm.log", "w");
fprintf(fd, "iii is : [%d] \n", iscall);
fclose(fd);
jstring *retSTR = (*gEnv)->NewStringUTF(gEnv, addr);
int ii = (int)(*gEnv)->CallStaticIntMethod(gEnv,
gJcCallback , gMid, retSTR);
}
extern void setConnecCallback(void (*cb)(char *addr));
JNIEXPORT void JNICALL
Java_com_f*****_s*********_s*********LighttpdService_setConnecCallback2
(JNIEnv *env, jobject this) {
jclass jcCallback = (*env)->FindClass
(env,"com.f*****.s*********.s*********LighttpdService");
jmethodID mid = (*env)->GetStaticMethodID
(env,jcCallback,"getIpv6","(Ljava/lang/String;)I");
memcpy(gEnv, env, sizeof(env));
memcpy(&gJcCallback,&jcCallback, sizeof(jcCallback));
memcpy(&gMid,&mid,sizeof(mid));
iscall = 1;
if(mid == 0) {
return;
}
else{
}
setConnecCallback(connect_cb);
}