遇到Fatal signal 11 (SIGSEGV),求解答

z_涯 2014-04-02 02:49:38
最近遇到个坑爹的问题,看下面的logcat:
04-02 02:17:31.777: D/dalvikvm(1405): Trying to load lib /data/data/com.novonity.uchat/lib/libutils_armv5te.so 0x41757438
04-02 02:17:31.827: D/dalvikvm(1405): Added shared lib /data/data/com.novonity.uchat/lib/libutils_armv5te.so 0x41757438
04-02 02:17:31.898: D/dalvikvm(1405): No JNI_OnLoad found in /data/data/com.novonity.uchat/lib/libutils_armv5te.so 0x41757438, skipping init
04-02 02:17:31.937: D/org.doubango.ngn.NgnEngine(1405): CPU_Feature=15
04-02 02:17:31.937: D/org.doubango.ngn.NgnEngine(1405): isCpuNeon()=YES
04-02 02:17:31.937: D/dalvikvm(1405): Trying to load lib /data/data/com.novonity.uchat/lib/libtinyWRAP_armv7-a.so 0x41757438
04-02 02:17:31.997: A/libc(1405): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1405 (.novonity.uchat)
以上logcat是在4.3的模拟器上测试的,会闪退,再看以下logcat:
04-02 14:27:13.926: D/dalvikvm(28586): Trying to load lib /data/data/com.novonity.uchat/lib/libutils_armv5te.so 0x41fa4c40
04-02 14:27:13.926: D/dalvikvm(28586): Added shared lib /data/data/com.novonity.uchat/lib/libutils_armv5te.so 0x41fa4c40
04-02 14:27:13.926: D/dalvikvm(28586): No JNI_OnLoad found in /data/data/com.novonity.uchat/lib/libutils_armv5te.so 0x41fa4c40, skipping init
04-02 14:27:13.936: D/org.doubango.ngn.NgnEngine(28586): CPU_Feature=15
04-02 14:27:13.936: D/org.doubango.ngn.NgnEngine(28586): isCpuNeon()=YES
04-02 14:27:13.936: D/dalvikvm(28586): Trying to load lib /data/data/com.novonity.uchat/lib/libtinyWRAP_armv7-a.so 0x41fa4c40
04-02 14:27:13.946: W/linker(28586): libtinyWRAP_armv7-a.so has text relocations. This is wasting memory and is a security risk. Please fix.
04-02 14:27:13.946: D/dalvikvm(28586): Added shared lib /data/data/com.novonity.uchat/lib/libtinyWRAP_armv7-a.so 0x41fa4c40
04-02 14:27:13.946: D/dalvikvm(28586): No JNI_OnLoad found in /data/data/com.novonity.uchat/lib/libtinyWRAP_armv7-a.so 0x41fa4c40, skipping init
这个是在Nexus 7上测试的logcat,经过我多个版本测试,结果是4.4,4.4.2,4.2.1,2.3.6等几个版本可以运行,在个别比如4.3版本上会出现:
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1405 (.novonity.uchat)
并且,可以运行的版本不管模拟器或真机都可以,不能运行的不管模拟器还是真机都会闪退,估计是libtinyWRAP_armv7-a.so有问题,但是是什么问题,没搞懂,谁帮忙解答一下
...全文
32907 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
laimanyou 2015-01-30
  • 打赏
  • 举报
回复
我训练load的这个xml文件大小为3031k。我检验过,第二次传回的指针和我保存在jni下的全局指针是相同的。
JNIEXPORT jint JNICALL Java_com_example_affectiverecognizer_AffRecog_Predict(JNIEnv *jenv, jclass, jlong thiz, jintArray jtestImage, jint jwidth, jint jheight){

    jint result = 0;
    if (GlobalModelPointer != (FaceRecognizer*)thiz){
       	CV_Error(CV_StsBadArg, "error in transport facerognizer pointer");
    }
	Ptr<FaceRecognizer> model((FaceRecognizer*)thiz);
//    //try reload file
//    Ptr<FaceRecognizer> newModel = createFisherFaceRecognizer();
//    newModel->load("/data/data/com.example.affectiverecognizer/app_fishermodel/fisher_model_xm.xml");

    jint *ptestImage;
    ptestImage = jenv->GetIntArrayElements(jtestImage, false);
    if(ptestImage == NULL){
    	return -1;
    }
    Mat testImage(jheight, jwidth, CV_8UC1, (unsigned char*)ptestImage);
	result = model->predict(testImage);
	model.release();
	return result;
}
laimanyou 2015-01-30
  • 打赏
  • 举报
回复
我在4.3上用OpenCV也遇到了类似问题: A/libc(21897): Fatal signal 11 (SIGSEGV) at 0x0000010a (code=1), thread 22103 (Thread-1068) @youngc527 ,兄台帮忙看下这个应该是什么出啦问题? 我在jni中创建一个对象,把指针保存起来传回java下(long型),再连同要处理的图片传回jni下,通过该指针去构造一个训练模型,再预测,然后就挂了。
imknown 2014-08-13
  • 打赏
  • 举报
回复
引用 6 楼 shenshibaoma 的回复:
楼主解决没,我也遇到这操蛋的问题了,光在百度地图相关的类上报这个Fatal 11 code 1
我也是经常遇到, 尤其是在安卓4上面, 看来只能等百度地图SDK更新了(3.0.0没试过, 反正2.3.x到2.4.2都不行)... 也可能是定位SDK 3.x的问题
布丁西西 2014-07-10
  • 打赏
  • 举报
回复
楼主解决没,我也遇到这操蛋的问题了,光在百度地图相关的类上报这个Fatal 11 code 1
Darcy杨 2014-04-02
  • 打赏
  • 举报
回复
引用 3 楼 u012365618 的回复:
[quote=引用 2 楼 youngc527 的回复:] Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1405 (.novonity.uchat) 应该是JNI代码的问题,0xdeadbaad 这个地址一般用于标识一个被free掉的指针 可以编译一个debug的so库,然后等崩溃后看一下调用堆栈
跟内存有关系么?[/quote] 一般是代码写的有问题,比如说

unsigned char *buffer = malloc(1024);
...
free(buffer);
buffer = 0xdeadbaad;// 为了表示这个指针已经被free了,通常会把它设置成一个特殊的值,比如 0xdeadbaad
strcpy(buffer, "Fatal :(");// 执行这句就会导致Fatal错误
starskun888 2014-04-02
  • 打赏
  • 举报
回复
你的动态链接库有问题 换一个就可以了。
z_涯 2014-04-02
  • 打赏
  • 举报
回复
引用 2 楼 youngc527 的回复:
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1405 (.novonity.uchat) 应该是JNI代码的问题,0xdeadbaad 这个地址一般用于标识一个被free掉的指针 可以编译一个debug的so库,然后等崩溃后看一下调用堆栈
跟内存有关系么?
Darcy杨 2014-04-02
  • 打赏
  • 举报
回复
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1405 (.novonity.uchat) 应该是JNI代码的问题,0xdeadbaad 这个地址一般用于标识一个被free掉的指针 可以编译一个debug的so库,然后等崩溃后看一下调用堆栈
starskun888 2014-04-02
  • 打赏
  • 举报
回复
不兼容。

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧