叫我太美小姐 2023-12-10 20:15 采纳率: 50%
浏览 46
已结题

android 调用jni层出现 Fatal signal 11 (SIGSEGV), code 1, fault addr 0xa5

请问一下各位up 我运行出现了如图错误
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xa5 in tid 14520 (CameraBackgroun)

img

我在java端调用processXHM这个本地方法,传了一个mat类型的图像路径,以及两个坐标4个int值。

img

一开始出现这个问题,我原来传得是mat图像的地址(用getNatibeObjAddr方法),我以为是这个地址有问题(虽然测试地址是存在不为空的),但还是改成传图片的路径,但还是有这个问题。以下是我jni端全部代码。

img

请各位up解答一下

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-10 23:01
    关注

    【以下回答由 GPT 生成】

    对于这种出现Fatal signal 11 (SIGSEGV)的错误,一般是由于访问了无效的内存地址导致的。根据你提供的信息,目前无法确定具体的问题所在,因为没有提供JNI端的代码。但我可以给你一些常见的问题原因和解决方案,希望对你有帮助。

    可能的问题原因和解决方案: 1. 内存访问错误:在C++端代码中,可能存在对空指针或者已经被释放的内存进行访问操作。检查JNI端代码是否正确地处理了传递的参数,并且进行了必要的空指针检查。

    1. 内存泄漏:检查JNI代码是否正确地释放了申请的内存。特别是注意在使用new申请内存后,需要使用delete来释放,否则可能会导致内存泄漏。

    2. 线程问题:检查是否存在多个线程同时访问同一个变量或者资源的情况。确保在多线程访问时进行了正确的同步操作,如使用互斥锁。

    3. 调用错误的虚拟机函数:在JNI代码中,如果使用了错误的虚拟机函数或者错误的参数,也可能导致SIGSEGV错误。请确保使用的虚拟机函数和参数正确。

    4. 数组越界:检查JNI代码中是否对数组进行了正确的边界检查,避免访问超出数组范围的元素。

    5. 第三方库的问题:如果JNI代码中使用了第三方库,可能存在与库的兼容性问题。请确保使用的库版本正确,并且正确地初始化和使用库函数。

    总的来说,要解决这个问题,你需要仔细检查你的JNI端代码,并进行逐步的调试和排查。你可以通过添加输出语句或者使用调试器来定位问题所在。如果你可以提供JNI端的代码,我可以更具体地帮助你解决这个问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月8日
  • 创建了问题 12月10日