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

本文主要是介绍Android问题笔记四十二:signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) 的解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总
游戏脚本-辅助自动化Android控件全解手册再战Android系列
Scratch编程案例软考全系列Unity3D学习专栏
蓝桥系列ChatGPT和AIGC

👉关于作者

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

在这里插入图片描述

👉实践过程

😜问题

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

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), ......
Cause: null pointer dereferencer0  00000000  r1  e4a9b9dc  r2  0000ffff  r3  bf1acf00r4  bf1acf00  r5  bd10da00  r6  bd10da20  r7  00000004r8  bda55fe0  r9  00000000  r10 bd10dbcc  r11 bbdc3858ip  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问题笔记四十二:signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) 的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739135

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2