Android问题笔记四十二:signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) 的解决方法

  • 点击跳转=>Unity3D特效百例
  • 点击跳转=>案例项目实战源码
  • 点击跳转=>游戏脚本-辅助自动化
  • 点击跳转=>Android控件全解手册
  • 点击跳转=>Scratch编程案例
  • 点击跳转=>软考全系列

关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,交流让学习不再孤单

在这里插入图片描述

实践过程

问题

之前开发的 SO 一直很正常,最近一段时间有新业务要在原来SO 上开发,并且有了新的设计逻辑,也是新的同事去写了。所以公司准备 SO 重写一下。部分业务还是仿照或复制原来的代码,但是给到 Android 后一直崩溃,而且看 JNI 中同事写的日志最终停止点不固定。

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), ......
Cause: null pointer dereference
	r0  00000000  r1  e4a9b9dc  r2  0000ffff  r3  bf1acf00
    r4  bf1acf00  r5  bd10da00  r6  bd10da20  r7  00000004
    r8  bda55fe0  r9  00000000  r10 bd10dbcc  r11 bbdc3858
    ip  e4dfdfe4  sp  bbdc3698  lr  e4dfcd83  pc  bee6ec34
backtrace:
    #00 pc 00011c34  /data/app/com.raypai.splitassist-dqx6PtGtLxCC3HigSgunAA==/lib/arm/libusb100.so
    #01 pc 0000d200  /data/app/com.raypai.splitassist-dqx6PtGtLxCC3HigSgunAA==/lib/arm/libusb100.so
    #02 pc 0000cb60  /data/app/com.raypai.splitassist-dqx6PtGtLxCC3HigSgunAA==/lib/arm/libusb100.so (libusb_handle_events_timeout_completed+968)
    #03 pc 0000d3cc  /data/app/com.raypai.splitassist-dqx6PtGtLxCC3HigSgunAA==/lib/arm/libusb100.so (libusb_handle_events+52)
    #04 pc 00012c20  /data/app/com.raypai.splitassist-dqx6PtGtLxCC3HigSgunAA==/lib/arm/libuvc.so (_uvc_handle_events+136)
    #05 pc 00065ac7  /system/lib/libc.so (__pthread_start(void*)+22)
    #06 pc 0001e9ad  /system/lib/libc.so (__start_thread+32)

在此咱们不讲如何具体定位 JNI 崩溃定位,改日再出一篇文章介绍。

解决

出现问题的原因在于没有进行Handler调用JNI的方法。尤其是线程协程中。
利用 Android Studio 创建个 C++ 的 JNI 项目,你会发现会有个 native-lib 的文件,当你有其他业务的时候会写在自己创建的 C++ 文件中。
原来的 SO 业务全部写在这个 native-lib 文件中,Android 层调用的时候发现无论是默认调用还是线程调用都没问题,但是如果你调用了其他 C++ 文件里的方法,在 Android 层中就没法在线程协程中调用,而且还不会报出具体错误。定位错误成本高。需要借住 Handler 调用 JNI 中的方法。暂时没时间去深究,如有大佬知道感谢留言。
无脑的解决方式是只要是 JNI 方法,都用 Handler 去调用。

注意:此类错误不是上面的唯一原因。还有其他问题也会导致此相似问题。

  1. JNI 中空指针问题。
  2. JNI 是 C++ 开发的,而 C++ 需要自己管理释放销毁,所以靠谱的 C++ 同事很重要。

其他

作者:小空和小芝中的小空
转载说明-务必注明来源:https://zhima.blog.csdn.net/
这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气,日后定有一番大作为!!!旁边有点赞收藏今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

你可能感兴趣的:(android,笔记,JNI,NDK,bug)