Fatal signal XX (SIGSEGV) 常见解决思路 backtrace

news/2024/10/30 11:17:34/

Fatal signal XX (SIGSEGV)常用解决思路

  ****例如:****        

1、log信息: (摘自网络)
02-13 14:56:12.140 6180 11596 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 11596 (pool_albumlabel)
02-13 14:56:12.149 4549 4579 D ForegroundUtils: Process died; UID 1000 PID 7721
02-13 14:56:12.149 4549 4579 D ForegroundUtils: Foreground changed, PID: 7721 UID: 1000 foreground: false
02-13 14:56:12.149 4549 4579 D ForegroundUtils: Foreground UID/PID combinations:
02-13 14:56:12.149 4549 4579 D ForegroundUtils: UID: 10031 PID: 6180
02-13 14:56:12.154 6180 11587 E wwf5 : onDrawFrame end
02-13 14:56:12.171 6180 11587 E wwf5 : onDrawFrame end
02-13 14:56:12.185 6180 11587 E wwf5 : onDrawFrame end
02-13 14:56:12.189 298 399 I ThermalEngine: Sensor:tsens_tz_sensor6:77000 mC
02-13 14:56:12.208 275 275 I DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-13 14:56:12.208 275 275 I DEBUG : Build fingerprint: ‘Lenovo/kingdom_row/kingdom_row:5.0.2/LRX22G/K920_S205_150205_ROW:eng/release-keys’
02-13 14:56:12.208 275 275 I DEBUG : Revision: ‘0’
02-13 14:56:12.208 275 275 I DEBUG : ABI: ‘arm’
02-13 14:56:12.208 275 275 I DEBUG : pid: 6180, tid: 11596, name: pool_albumlabel >>> com.xxxx.scg <<<
02-13 14:56:12.208 275 275 I DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
02-13 14:56:12.245 275 275 I DEBUG : r0 00000000 r1 00002d4c r2 00000006 r3 00000000
02-13 14:56:12.245 275 275 I DEBUG : r4 777cddb8 r5 00000006 r6 0000000c r7 0000010c
02-13 14:56:12.245 275 275 I DEBUG : r8 00000004 r9 00000cc0 sl 00000000 fp 00000000
02-13 14:56:12.245 275 275 I DEBUG : ip 00002d4c sp 777cb338 lr b6f510a1 pc b6f7404c cpsr 600f0010
02-13 14:56:12.245 275 275 I DEBUG :
02-13 14:56:12.245 275 275 I DEBUG : backtrace:
02-13 14:56:12.245 275 275 I DEBUG : #00 pc 0003704c /system/lib/libc.so (tgkill+12)
02-13 14:56:12.245 275 275 I DEBUG : #01 pc 0001409d /system/lib/libc.so (pthread_kill+52)
02-13 14:56:12.245 275 275 I DEBUG : #02 pc 00014cbb /system/lib/libc.so (raise+10)
02-13 14:56:12.245 275 275 I DEBUG : #03 pc 00011511 /system/lib/libc.so (__libc_android_abort+36)
02-13 14:56:12.245 275 275 I DEBUG : #04 pc 0000fc94 /system/lib/libc.so (abort+4)
02-13 14:56:12.246 275 275 I DEBUG : #05 pc 0014a1e7 /system/lib/libskia.so (sk_throw()+2)
02-13 14:56:12.246 275 275 I DEBUG : #06 pc 0014a21d /system/lib/libskia.so (sk_malloc_flags(unsigned int, unsigned int)+20)
02-13 14:56:12.246 275 275 I DEBUG : #07 pc 000dd0a5 /system/lib/libskia.so
02-13 14:56:12.246 275 275 I DEBUG : #08 pc 0013b3d5 /system/lib/libskia.so (SkPNGImageDecoder::onDecodeSubset(SkBitmap*, SkIRect const&)+604)

2、主要有用信息是带有 #xx 的这些东西,这是出错信息的执行过程,从#XX—>#0。我们目的就是将这些东西定位到源码中的相应代码行去分析。

02-13 14:56:12.245 275 275 I DEBUG : #00 pc 0003704c /system/lib/libc.so (tgkill+12)
02-13 14:56:12.245 275 275 I DEBUG : #01 pc 0001409d /system/lib/libc.so (pthread_kill+52)
02-13 14:56:12.245 275 275 I DEBUG : #02 pc 00014cbb /system/lib/libc.so (raise+10)
02-13 14:56:12.245 275 275 I DEBUG : #03 pc 00011511 /system/lib/libc.so (__libc_android_abort+36)
02-13 14:56:12.245 275 275 I DEBUG : #04 pc 0000fc94 /system/lib/libc.so (abort+4)
02-13 14:56:12.246 275 275 I DEBUG : #05 pc 0014a1e7 /system/lib/libskia.so (sk_throw()+2)
02-13 14:56:12.246 275 275 I DEBUG : #06 pc 0014a21d /system/lib/libskia.so (sk_malloc_flags(unsigned int, unsigned int)+20)
02-13 14:56:12.246 275 275 I DEBUG : #07 pc 000dd0a5 /system/lib/libskia.so
02-13 14:56:12.246 275 275 I DEBUG : #08 pc 0013b3d5 /system/lib/libskia.so (SkPNGImageDecoder::onDecodeSubset(SkBitmap*, SkIRect const&)+604)

3、首先看#8,将其定位到源码。
02-13 14:56:12.246 275 275 I DEBUG : #08 pc 0013b3d5 /system/lib/libskia.so (SkPNGImageDecoder::onDecodeSubset(SkBitmap*, SkIRect const&)+604)

3.1、在Ubuntu系统可以直接使用addr2line。

3.2:倘若没有addr2line,可使用android自带的 *addr2line
a、find -name addr2line,找到很多路径
b、vi ~/.bashrc 添加 : export PATH=$PATH: ~/…/…/…/…/bin/ (想要使用的
addr2line的路径)
c 、source .bashrc

3.3、 在自己电脑的out目录下找到 libskia.so 文件 : find -name libskia.so
a、 会出现很多:
./product/kingdom_row/obj/lib/libskia.so
./product/kingdom_row/obj/SHARED_LIBRARIES/libskia_intermediates/LINKED/libskia.so
./product/kingdom_row/obj/PACKAGING/target_files_intermediates/kingdom_row-target_files-K920_S204_150127_ROW/SYSTEM/lib/libskia.so
./product/kingdom_row/obj/PACKAGING/target_files_intermediates/kingdom_row-target_files-K920_S205_150205_ROW/SYSTEM/lib/libskia.so
./product/kingdom_row/symbols/system/lib/libskia.so
./product/kingdom_row/system/lib/libskia.so

b、 使用目录中含有:symbol 的那一个。
切换到该目录下:
./product/kingdom_row/symbols/system/lib/libskia.so

c、执行 addr2line或者x86_64-linux-addr2line -e libskia.so 0013b3d5
显示:
/home/xxx/qcom8974_l_row/LINUX/android/external/skia/src/images/SkImageDecoder_libpng.cpp: 528

表示# 8 的错误出现下 SkImageDecoder_libpng.cpp 文件中的 第528 行。

d、命令解析:
addr2line或者x86_64-linux-addr2line: 取决于你添加路径时选取的*addr2line,有的可用,有的不可用。
-e :指定映像对象
libskia.so:#xx 后面的库文件
0013b3d5 :#xx 后面的库文件的指令地址

4、同理根据上述步骤查找#8——>#0,追踪源码,一般出现问题在#0,问题类型一般也是内存泄漏,空指针的,可以打log进行测试分析。

文章参考:
1:Android中使用addr2line来分析native信息
http://blog.csdn.net/whz_zb/article/details/7604760

2:Fatal signal 11问题的解决方法
http://blog.csdn.net/tankai19880619/article/details/9004619

3:Android Tombstone/Crash的log分析和定位
http://blog.csdn.net/helldevil/article/details/6682211


http://www.ppmy.cn/news/416596.html

相关文章

Android中使用addr2line来分析native信息

系统&#xff1a;Ubuntu12.04 手机系统&#xff1a;Android5.0 在Android的开发过程中有会有很多的native bug必须要用addr2line来分析&#xff0c;并且这个工具也非常的好用。下面我们来看看具体的使用。 烧录到手机上的版本和你电脑上的编译出的版本要一致&#xff0c;这个…

替换pdf中的文字

在项目中经常会有一种需求&#xff0c;给定一个pdf模板&#xff0c;向里面空格中填充文字。若文字长度是固定的或长度变化不大&#xff0c;可以直接使用pdf模板来替换&#xff1b;若需要替换的新文字长度变动比较大&#xff0c;最好的办法是先做好一个word版的目标&#xff0c;…

【开源】壁纸软件,给自己电脑设计专属特效

喜欢图形学的朋友可以了解下&#xff0c;shader开发专属特效 技术点&#xff1a;wpf&#xff0c;dx&#xff0c;shader 软件环境&#xff1a;net core 3.1 平台&#xff1a;windows 用途&#xff1a;给电脑桌面设计一个自己想要的壁纸特效 特殊说明&#xff1a;部分原生特效需…

win10用html文件做壁纸,利用win10自带工具制作动态壁纸的简单方法

微软在最强大操作系统利用win10自带工具制作动态壁纸的简单方法的详细介绍。 利用win10自带工具制作动态壁纸的简单方法&#xff1a; 把图片做成动态壁纸&#xff0c;总共分4步&#xff1a;1、准备素材&#xff0c;2、素材导入&#xff0c;3、调整效果&#xff0c;4、导出视频。…

STM32速成笔记—中断

文章目录 一、什么是中断二、中断的相关概念2.1 中断优先级2.2 中断嵌套2.3 中断服务函数2.4 中断标志位 三、外部中断EXIT四、中断程序配置4.1 设置中断分组并使能中断4.2 初始化EXIT4.3 编写中断服务函数 五、注意事项 一、什么是中断 首先介绍一下什么是中断。在实际开发过…

[CF.Skills]在Pocket PC上编程设置壁纸

写下这篇帖子是来源于kevens的问题,如何编程设置壁纸? 我查看了msdn的一篇文章,提到了注册表中主题的位置,而且你也的确可以在你的设备上找到他. 但是又没有不操作注册表也能编程实现更换壁纸的功能呢? 当然是有的,msdn最后给出的一句PostMessege了给了我提示. 来看看代码吧:…

python实现动态壁纸_如何实现一个 windows 桌面动态壁纸

更新:2018/08/31 WS_MOUSE_LL 钩子,实现底层壁纸交互效果。 一、介绍 国内玩家第一次看到动态壁纸,都是出于一款来自 Wallpaper Engine 的 Steam 程序。它允许将视频、窗口小部件、甚至是有一定交互的网页放置到桌面最下方,2016 年初,被b站up主们广泛传播,被大家熟知。…