首页 > 其他分享 >Fatal signal 11 (SIGSEGV) at 0x0000130f (code=1), thread xxx (Thread-xx)

Fatal signal 11 (SIGSEGV) at 0x0000130f (code=1), thread xxx (Thread-xx)

时间:2023-11-27 11:32:16浏览次数:25  
标签:11 26 code 04 Thread 09 so 数组



导致应用程序崩溃问题分析与解决:

  • --复现
  • --分析
  • --解决
  • 最后


先展示与问题相关的代码片

09-04 13:26:32.826 F/libc    (  572): Fatal signal 11 (SIGSEGV) at 0x0000130f (code=1), xxxx 844 (Thread-46)

09-04 13:26:32.936 I/DEBUG   (  103): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

09-04 13:26:32.936 I/DEBUG   (  103): Build fingerprint: 'rockchip/rk3188/rk3188:4.4.4/KTU84Q/eng.root.20151128.163335:eng/test-keys'

09-04 13:26:32.936 I/DEBUG   (  103): Revision: '0'

09-04 13:26:32.936 I/DEBUG   (  103): pid: 572, tid: 844, name: Thread-46  >>> com.xxx.xxxxxx <<<

09-04 13:26:32.936 I/DEBUG   (  103): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000130f

09-04 13:26:33.016 I/DEBUG   (  103):     r0 000012ef  r1 41e8e2a8  r2 fffffea0  r3 415d7c74

09-04 13:26:33.016 I/DEBUG   (  103):     r4 42741d98  r5 415dc1f0  r6 00000000  r7 41e8e2a8

09-04 13:26:33.016 I/DEBUG   (  103):     r8 80000000  r9 415644f0  sl 41e8e2a8  fp 42741e00

09-04 13:26:33.016 I/DEBUG   (  103):     ip 41e8f1e8  sp 6ccb2b28  lr 41555efc  pc 415642d8  cpsr 800f0010

09-04 13:26:33.016 I/DEBUG   (  103):     d0  0000000000000000  d1  0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d2  0000000000000000  d3  0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d4  3ff0000000000000  d5  529292949610636a

09-04 13:26:33.016 I/DEBUG   (  103):     d6  0000001900000000  d7  4040000000000003

09-04 13:26:33.016 I/DEBUG   (  103):     d8  4040000000000003  d9  0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d10 0000000000000000  d11 0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d12 0000000000000000  d13 0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d14 0000000000000000  d15 0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d16 000000000000001c  d17 090a0d3e31bc80e5

09-04 13:26:33.016 I/DEBUG   (  103):     d18 3ff0000000000000  d19 0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d20 0000000000000000  d21 000c000c000c000c

09-04 13:26:33.016 I/DEBUG   (  103):     d22 0010001000100010  d23 0000000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d24 0000000000000000  d25 3980000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d26 0707070703030303  d27 e03b3b3bd74e4e4e

09-04 13:26:33.016 I/DEBUG   (  103):     d28 7a14141410000000  d29 2ca8000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     d30 3ff0000000000000  d31 4024000000000000

09-04 13:26:33.016 I/DEBUG   (  103):     scr 80000010

09-04 13:26:33.026 I/DEBUG   (  103): 

09-04 13:26:33.026 I/DEBUG   (  103): backtrace:

09-04 13:26:33.026 I/DEBUG   (  103):     #00  pc 000372d8  /system/lib/libdvm.so

09-04 13:26:33.026 I/DEBUG   (  103):     #01  pc 00028ef8  /system/lib/libdvm.so (dvmHeapBitmapScanWalk(HeapBitmap*, void (*)(Object*, void*, void*), void*)+100)

–复现

多的不说直入主题,在项目中有个需要调用so库其中的一些方法获取返回值的操作,就是把固定大小的byte数组当参数传进去,.so里的方法负责给传过来的数组赋值,我这边再拿到该数组进行下一步处理。

关键是整个过程都是在try…catch中,按道理说就算有错也不至于程序崩溃,打印logcat除了上面的代码外找不到其他有用信息,最后经过多次复现观察发现,.so是将原数组整个赋值给传进去的数组的,所以传进去的时候数组固定在合理范围内的固定长度,而在调用.so里的方法时某一时刻赋值的数组长度远远超过传进去的数组长度,程序立马崩溃,于是就确定找到了问题的根源。

–分析

虽然整个过程在try…catch中,但要知道不是所有代码在其之中就不会产生严重问题导致程序崩溃,比如try…catch中new一个Thread,该Thread中发生错误catch也是捕捉不到的。
因为程序调用.so的方法,所以该方法也是运行在你的程序之中的,里面的方法产生错误也就代表你的程序产生了错误,崩溃理所当然。

至于更对这种问题更深层的理解,建议多百度找找这方面的知识,限于本人能力有限,就分析到此。

–解决

找公司写.so的同事,商量解决或你的程序在传数组的时候传入长度更大的数组,当然多数情况还是.so的问题。

最后

这可能是产生该问题的一种情况,不是可能是一定!
很多时候是无从下手的,推荐使用java里的
Thread.setDefaultUncaughtExceptionHandler方法进行捕捉线程之外的问题,多数情况下还是有用的,至于怎么使用请自行百度或者留言探讨。


标签:11,26,code,04,Thread,09,so,数组
From: https://blog.51cto.com/xaye/8581773

相关文章

  • C++11 后的单例写法
    template<typenameT>classSingleton{public:staticT&getInstance(){staticTt;returnt;}Singleton(constSingleton&)=delete;Singleton&operator=(constSingleton&)=delete;protected:......
  • 从嘉手札<2023-11-27>
    “我也没做错什么,放它去看海,总比跟着我好”很多时候,悲伤总是细细的钻进心底悄悄的生根发芽待到了时机它便如同一株参天巨树般郁郁葱葱郁郁葱葱的令人发疯人生本就像是做了一场旧梦醒来后枕头沾满泪水,我也分不清那究竟是我的记忆还是借来的情感时间过的太久连心动都记......
  • node版本管理神器nvm安装使用教程(Windows11版本)
    安装前提在安装nvm之前,我们需要先将已有的node.js全部卸载!下载安装包进行安装第一步,下载安装包,nvm下载地址可下载以下文件:nvm-noinstall.zip:绿色免安装版,但使用时需要进行配置。nvm-setup.zip:安装版,推荐使用nvm-setup.exe:无需解压,直接安装,墙裂推荐!!!如下图: 第二步,进行......
  • 前端开发-vscode必备插件
    1.AutoCloseTag自动闭合html标签2.AutoImport自动引入3.AutoRenameTag自动重命名4.AutoScssStruct4Vue根据vue文件的模板template结构,自动生成对应的scss文件 5.CodeSnap代码生成图片6.codeTour代码向导,适合调......
  • Codeforces Round 911 (Div. 2) A
    真的太菜了……题目链接:Problem-A-Codeforces//Problem:A.CoverinWater//Contest:Codeforces-CodeforcesRound911(Div.2)//URL:https://codeforces.com/contest/1900/problem/0#//MemoryLimit:256MB//TimeLimit:1000ms////PoweredbyCPEd......
  • 11-26
    C/S结构用户界面设计编写一整套Mis系统UI界面,Mis系统名称自拟,尽量运用到如下控件:l 窗体l 菜单l 工具栏l 状态栏控件l 标签控件l 按钮控件l 文本框控件l 单选按钮控件l 复选框控件l 列表框控件l 组合框控件l 分组框控件l 面板控件l 图片框控件l 定......
  • 如何在win11系统桌面实现win10右键
    下载腾讯桌面整理并安装下载地址:腾讯桌面整理注意:下载独立版设置腾讯桌面整理鼠标右键,点击“显示更多选项”点击“实用功能”>>>“设置中心”点击“整理桌面”;取消勾选“穷Windows11风格桌面右键菜单”。完成以上操作即可实现在win11系统实现win10桌面......
  • 2023年11月第四周总结
    堆堆是一种完全二叉树,也是一种优先级队列堆分为大根堆和小根堆,大根堆即对于每一颗树,它的父亲节点的值,一定大于它的孩子节点的值,左右节点的值不用管它的顺序。小根堆同理。写了一道可以用堆这种数据结构求解的题目,即找数组中第k大的数,要求时间复杂度为O(N)。力扣题目链接解题思......
  • 【11月LeetCode组队打卡】Task5--UnionFind
    并查集UnionFind一种树型的数据结构,用于处理一些不交集(DisjointSets)的合并及查询问题联通子图最小生成树Kruskal算法最近公共祖先LCA不交集:没有重复元素的集合合并Union:二变一查询Find:确定元素所属集合,通常返回集合内的一个代表元素实现思路基于数组......
  • XcodesApp快速下载切换指定版本的xcode
    XcodesApp地址:https://github.com/RobotsAndPencils/XcodesApp⭐️:3.6k语言:Swift作为一名Apple开发者,你的macOS上是否经常会安装多个版本的Xcode呢?特别是当Xcode新的测试版本出来后。然后是否需要经常在多个Xcode版本之间切换呢?这些推荐一个开源工具,是目前安装和在......