当前位置: 首页 > article >正文

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/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

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


http://www.kler.cn/news/108205.html

相关文章:

  • 一个Binder的前生今世 (二):Binder进程和线程的创建
  • 爬取抖音用户的个人基本信息
  • Latex报错 “Paragraph ended before \Gin@iii was complete“
  • 万字解析设计模式之工厂方法模式与简单工厂模式
  • 竞赛选题 深度学习图像修复算法 - opencv python 机器视觉
  • 4.5 final修饰符
  • hive使用中的参数优化与问题排查
  • Kafka KRaft模式探索
  • 【unity小技巧】unity排序问题的探究
  • 如何使用 Rask AI 进行视频本地化
  • 腾讯云和阿里云双11优惠大战,服务器价格相差1块钱?
  • laravel+vue2 element 一套项目级医院手术麻醉信息系统源码
  • python实现ModBusTCP协议的server
  • 【vtk学习笔记1】编译安装vtk9.2.6,运行官方例子
  • 如何在linux服务器上安装Anaconda与pytorch,以及pytorch卸载
  • TextureView和SurfaceView
  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰
  • localhost知识
  • iMazing2024年最新许可证-iMazing许可证激活补丁
  • UE5实现相机水平矫正
  • 基于数字电路交通灯信号灯控制系统设计-单片机设计
  • 什么是三元表达式?
  • 【机器学习】项目数据处理部分
  • 利用Linux socat快速搭建TCP服务器
  • 基于springboot环保话题管理系统-计算机毕设 附源码 28550
  • 【黑产攻防道03】利用JS参数更新检测黑产的协议破解
  • Android应用:实现网络加载商品数据【OKHttp、Glide、Gson】
  • VCS 和 SCM
  • 系统架构设计师-第13章-层次式架构设计理论与实践-软考学习笔记
  • Android蓝牙 - 常用蓝牙配置文件