jni函数调用出现:Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3204

时间:2022-01-15 17:32:42
F/libc    ( 3186): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3204 (DataHandleThrea)

I/        ( 3186): kehdev DeviceClient(442)select clients timeout.

D/        ( 3186): kehdev DeviceClient(616)ThreadName:ClientHandleDataThread,tid = 3201

D/        ( 3186): kehdev DeviceClient(302)getClientByType leave

I/        ( 3186): kehdev DeviceClient(398)the nummer of clients:3

D/        ( 3186): kehdev DeviceClient(239)clientThreadWait enter

D/        ( 3186): kehdev DeviceClient(245)clientThreadWait leave

D/        ( 3186): kehdev DeviceClient(430)rwFdcounts = 3

D/        ( 3186): kehdev DeviceClient(439)max_fd = 44

I/DEBUG   (   90): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG   (   90): Build fingerprint: 'rk30sdk/rk30sdk/rk30sdk:4.2.2/JDQ39/eng.talents-tech.20130624.114114:eng/test-keys'

I/DEBUG   (   90): Revision: '0'

I/DEBUG   (   90): pid: 3186, tid: 3204, name: DataHandleThrea  >>> com.kehdev <<<

I/DEBUG   (   90): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000

I/DEBUG   (   90):     r0 00000000  r1 62549628  r2 639ec060  r3 40898c98

I/DEBUG   (   90):     r4 00000000  r5 62549628  r6 639ec060  r7 6991fd1c

I/DEBUG   (   90):     r8 00000000  r9 00000000  sl 00000000  fp 40d87784

I/DEBUG   (   90):     ip 40896334  sp 6991fcd8  lr 4083b313  pc 4083b316  cpsr 60000030

I/DEBUG   (   90):     d0  68656b5f6d6f6329  d1  5f79656b5f766564

I/DEBUG   (   90):     d2  635f656c646e6168  d3  206b6361626c6c61

I/DEBUG   (   90):     d4  3ce2d8961a74af40  d5  3fb904a180000000

I/DEBUG   (   90):     d6  bfcb10bdc0000000  d7  bf072b023f000000

I/DEBUG   (   90):     d8  0000000000000000  d9  0000000000000000

I/DEBUG   (   90):     d10 0000000000000000  d11 0000000000000000

I/DEBUG   (   90):     d12 0000000000000000  d13 0000000000000000

I/DEBUG   (   90):     d14 0000000000000000  d15 0000000000000000

I/DEBUG   (   90):     d16 3fef9ead3707d300  d17 40283aee84476c3f

I/DEBUG   (   90):     d18 3e56775ae7e7ab4e  d19 3fe0000000000000

I/DEBUG   (   90):     d20 3fe000000b3bad74  d21 bfadde9e917eeb8e

I/DEBUG   (   90):     d22 3fb10db3c51891fb  d23 bfb3b14d1bbcb26c

I/DEBUG   (   90):     d24 3fb7463505808549  d25 bfbc723e38c3de0f

I/DEBUG   (   90):     d26 3fc2496b07069ba2  d27 bfc999efb6d17050

I/DEBUG   (   90):     d28 3fd5558cb1304bc3  d29 0000000000000000

I/DEBUG   (   90):     d30 0000000000000000  d31 0000000000000000

I/DEBUG   (   90):     scr 8000001c

I/DEBUG   (   90): 

I/DEBUG   (   90): backtrace:

I/DEBUG   (   90):     #00  pc 0004c316  /system/lib/libdvm.so

I/DEBUG   (   90):     #01  pc 0000d030  /system/lib/libkehdevRuntime.so

I/DEBUG   (   90):     #02  pc 0000d0f0  /system/lib/libkehdevRuntime.so (android::KehdevManager::com_kehdev_key_handle_callback(int)+172)

I/DEBUG   (   90):     #03  pc 00007278  /system/lib/libkehdevRuntime.so (android::SensorDataHandleInterface::bachandleTouchKey(st_small_base_com_msg*)+456)

I/DEBUG   (   90):     #04  pc 00006f74  /system/lib/libkehdevRuntime.so (android::SensorDataHandleInterface::handleTouchKey(st_small_base_com_msg*)+208)

I/DEBUG   (   90):     #05  pc 000068b8  /system/lib/libkehdevRuntime.so (android::SensorDataHandleInterface::handleRawDeviceData(unsigned char*)+856)

I/DEBUG   (   90):     #06  pc 00006c9c  /system/lib/libkehdevRuntime.so (android::DataHandleThread::threadLoop()+144)

I/DEBUG   (   90):     #07  pc 00011253  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+94)

I/DEBUG   (   90):     #08  pc 000468af  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+66)

I/DEBUG   (   90):     #09  pc 00010dcd  /system/lib/libutils.so

I/DEBUG   (   90):     #10  pc 0000e3d8  /system/lib/libc.so (__thread_entry+72)

I/DEBUG   (   90):     #11  pc 0000dac4  /system/lib/libc.so (pthread_create+160)

I/DEBUG   (   90): 

I/DEBUG   (   90): stack:

I/DEBUG   (   90):          6991fc98  00000000  

I/DEBUG   (   90):          6991fc9c  651848d8  

I/DEBUG   (   90):          6991fca0  0000002a  

I/DEBUG   (   90):          6991fca4  40d7fa48  /system/lib/libkehdevRuntime.so (android::DeviceClient::writeFd(char*, int, int, char const*)+200)

I/DEBUG   (   90):          6991fca8  6991fd48  

I/DEBUG   (   90):          6991fcac  ffffffff  

I/DEBUG   (   90):          6991fcb0  6991fce4  

I/DEBUG   (   90):          6991fcb4  62549628  /dev/ashmem/dalvik-LinearAlloc (deleted)

I/DEBUG   (   90):          6991fcb8  639ec060  

I/DEBUG   (   90):          6991fcbc  40838215  /system/lib/libdvm.so

I/DEBUG   (   90):          6991fcc0  6991fce4  

I/DEBUG   (   90):          6991fcc4  639ec060  

I/DEBUG   (   90):          6991fcc8  00000000  

I/DEBUG   (   90):          6991fccc  62549628  /dev/ashmem/dalvik-LinearAlloc (deleted)

I/DEBUG   (   90):          6991fcd0  df0027ad  

I/DEBUG   (   90):          6991fcd4  00000000  

I/DEBUG   (   90):     #00  6991fcd8  00000000  

I/DEBUG   (   90):          6991fcdc  00000000  

I/DEBUG   (   90):          6991fce0  00000000  

I/DEBUG   (   90):          6991fce4  40c073c8  

I/DEBUG   (   90):          6991fce8  00000000  

I/DEBUG   (   90):          6991fcec  14d3a40d  

I/DEBUG   (   90):          6991fcf0  6991fd14  

I/DEBUG   (   90):          6991fcf4  01940120  

I/DEBUG   (   90):          6991fcf8  639ec060  

I/DEBUG   (   90):          6991fcfc  651366e4  

I/DEBUG   (   90):          6991fd00  00000000  

I/DEBUG   (   90):          6991fd04  40d82034  /system/lib/libkehdevRuntime.so

I/DEBUG   (   90):     #01  6991fd08  01940120  

I/DEBUG   (   90):          6991fd0c  6991fd1c  

I/DEBUG   (   90):          6991fd10  651366e4  

I/DEBUG   (   90):          6991fd14  40d820f4  /system/lib/libkehdevRuntime.so (android::KehdevManager::com_kehdev_key_handle_callback(int)+176)

I/DEBUG   (   90):          6991fd18  62549628  /dev/ashmem/dalvik-LinearAlloc (deleted)

I/DEBUG   (   90):          6991fd1c  01940120  

I/DEBUG   (   90):     #02  6991fd20  01940120  

I/DEBUG   (   90):          6991fd24  00000001  

I/DEBUG   (   90):          6991fd28  01940120  

I/DEBUG   (   90):          6991fd2c  00000001  

I/DEBUG   (   90):          6991fd30  00000000  

I/DEBUG   (   90):          6991fd34  40d7c27c  /system/lib/libkehdevRuntime.so (android::SensorDataHandleInterface::bachandleTouchKey(st_small_base_com_msg*)+460)

I/DEBUG   (   90): 

I/DEBUG   (   90): memory near r1:

I/DEBUG   (   90):     62549608 0000007e 40d3761d 40d2f55c 00000000  

I/DEBUG   (   90):     62549618 00000000 00000000 64e97008 00000000  

I/DEBUG   (   90):     62549628 41280510 00000001 000b0092 00020003  

I/DEBUG   (   90):     62549638 40d3860b 64cdae08 0000004b 40d375c8  

I/DEBUG   (   90):     62549648 40d2f5f0 00000000 00000000 00000000  

I/DEBUG   (   90):     62549658 64b397f8 00000000 41280510 00000001  

I/DEBUG   (   90):     62549668 00050093 00010002 40d386db 64cdae08  

I/DEBUG   (   90):     62549678 0000004a 40d375c5 40d2fac0 00000000  

I/DEBUG   (   90):     62549688 00000000 00000000 652740a0 00000000  

I/DEBUG   (   90):     62549698 41280510 00000001 00020094 00010000  

I/DEBUG   (   90):     625496a8 40d386e7 64cdae08 0000004a 40d375c5  

8 个解决方案

#1


类似错误,如何分析,求指点

#2


用一工具解析该段log,输出一下提示,不知道该如何理解这个提示:
BFD: 小错误: 行号段出错.
DexDataMap.cpp:0              _ZL19Check_CallIntMethodP7_JNIEnvP8_jobjectP10_jmethodIDz
BFD: 小错误: 行号段出错.
libgcc2.c:0                   _ZN7androidL11send_reportEiPKcj.clone.0

#3


死在库里了,一般这种情况我都是在可疑的地方多打印几条log,把有关的一些值打印出来看。慢慢缩小范围。

#4


找到死在那个地方了,但是我不知道怎么解决,代码如下:
 int iKeyBoardMode = 0;
    int state = 0;

    state = keyInfo & 0xff;
iKeyBoardMode = (keyInfo >> 24) & 0xff;

    if(iKeyBoardMode == 2 || state == 2 || state == 32)
    {
        AutoMutex _l(mLock);
        JNIEnv* env = NULL;
        // gUsbHostServInfo.g_vm->AttachCurrentThread(&env, NULL);
        env = jniEnv();
        LOGDI("key call back");
        if(env == NULL) {
            LOGDE("can't get env.");
            return ;
        }
        env->CallVoidMethod(gKeyHandleInfo.nativeKeyHandleObj,gKeyHandleInfo.handleKey,(jint)keyInfo);
        if (env->ExceptionCheck()) {
            LOGDE("An exception was thrown by callback '%s'.", "handleKey");
            // LOGE_EX(env);
            env->ExceptionClear();
        }
        // gUsbHostServInfo.g_vm->DetachCurrentThread();
    }

#5


在调用CallVoidMethod时出错,这个函数的作用是在native层,当符合要求的数据要给java层来处理,我按照android inputmanage中callback的方式,在c++调用java层接口,但是程序运行时,有30分钟能正常运行,运行一段时间后出现atal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3204 (DataHandleThrea),本地库中是有一个线程,在线程中调用java层的接口;在开始运行是,把java层的对象传递给了native并通过env->NewGlobalRef(keyhandcallbackObj);进行保存了

#6


怎么没有人回复?怎样做才有人回复,之前没发过帖子

#7


我也回答不出来

#8


楼主,你这个问题解决了吗?

#1


类似错误,如何分析,求指点

#2


用一工具解析该段log,输出一下提示,不知道该如何理解这个提示:
BFD: 小错误: 行号段出错.
DexDataMap.cpp:0              _ZL19Check_CallIntMethodP7_JNIEnvP8_jobjectP10_jmethodIDz
BFD: 小错误: 行号段出错.
libgcc2.c:0                   _ZN7androidL11send_reportEiPKcj.clone.0

#3


死在库里了,一般这种情况我都是在可疑的地方多打印几条log,把有关的一些值打印出来看。慢慢缩小范围。

#4


找到死在那个地方了,但是我不知道怎么解决,代码如下:
 int iKeyBoardMode = 0;
    int state = 0;

    state = keyInfo & 0xff;
iKeyBoardMode = (keyInfo >> 24) & 0xff;

    if(iKeyBoardMode == 2 || state == 2 || state == 32)
    {
        AutoMutex _l(mLock);
        JNIEnv* env = NULL;
        // gUsbHostServInfo.g_vm->AttachCurrentThread(&env, NULL);
        env = jniEnv();
        LOGDI("key call back");
        if(env == NULL) {
            LOGDE("can't get env.");
            return ;
        }
        env->CallVoidMethod(gKeyHandleInfo.nativeKeyHandleObj,gKeyHandleInfo.handleKey,(jint)keyInfo);
        if (env->ExceptionCheck()) {
            LOGDE("An exception was thrown by callback '%s'.", "handleKey");
            // LOGE_EX(env);
            env->ExceptionClear();
        }
        // gUsbHostServInfo.g_vm->DetachCurrentThread();
    }

#5


在调用CallVoidMethod时出错,这个函数的作用是在native层,当符合要求的数据要给java层来处理,我按照android inputmanage中callback的方式,在c++调用java层接口,但是程序运行时,有30分钟能正常运行,运行一段时间后出现atal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3204 (DataHandleThrea),本地库中是有一个线程,在线程中调用java层的接口;在开始运行是,把java层的对象传递给了native并通过env->NewGlobalRef(keyhandcallbackObj);进行保存了

#6


怎么没有人回复?怎样做才有人回复,之前没发过帖子

#7


我也回答不出来

#8


楼主,你这个问题解决了吗?