枕上诗书闲处好,门前风景雨来佳。这篇文章主要讲述如何在tid xxxxx(Thread-X)中解决Android致命信号11(SIGSEGV),代码1,故障地址0x0?相关的知识,希望能为你提供帮助。
我正在使用android的Opencv sdk来开发实时处理和匹配。
主要的Opencv特征逻辑在JNI
函数中。
问题是有时(有时候)我的应用程序崩溃没有错误,所以我忽略了问题,直到我完成了算法的开发。
我开始调查错误,它肯定在JNI部分。
这是我在Log
中得到的错误
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 27424 (Thread-8)
A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
我在互联网上搜索了很多,我发现了这个解决方案
<
activity
android:hardwareAccelerated="false" />
【如何在tid xxxxx(Thread-X)中解决Android致命信号11(SIGSEGV),代码1,故障地址0x0()】它工作了2天,现在我得到了同样的错误。
有什么问题,我该如何解决?
任何帮助将不胜感激,并提前感谢您。
编辑
我应该补充一点,我的应用程序从库中获取参考图像,并使用Opencv与实时图像源进行比较。
如果我从图库中选择一个图像并且应用程序崩溃,那么该图像将无法再次运行,如果我拍摄新图像或之前有效的图像,该应用程序工作正常。
答案经过一番讨论后,很明显问题出在与内存的交互上:
extern "C"
jdouble
JNICALL java_com_foo(JNIEnv *env, jclass type, jlong addrRgba, jlong addrGray) {
Mat &
mRgb = *(Mat *) addrRgba;
Mat &
mGray = *(Mat *) addrGray;
return (jdouble) toGray(mRgb, mGray);
}
作为快速修复
double toGray(Mat&
rgb, Mat&
gray);
不得不改为double toGray(Mat rgb, Mat gray)
其他信息可以在
CvMat deep copy
主题上找到推荐阅读
- Xamarin.Android Java绑定库运行时失败访问本机库
- 如何在Android应用程序中使用Geocoder在特定位置找到大陆
- 从AppWidgetProvider到Broadcastreceiver的意图
- 如何让Android搜索栏顺利移动()
- Android中的包含布局已拉长
- 最好的开源渗透和安全测试(黑客)Linux操作系统
- 5个最佳高级足球俱乐部网站模板
- 5个最佳高级酒吧(啤酒)网站HTML模板
- 十大最佳的Android本机Snack通知替换库