Tombstone 文件分析

article/2025/10/6 22:58:22

Tombstone 文件分析

/*
* 下面信息是dropbox负责添加的
**/
isPrevious: true
Build: Rock/odin/odin:7.1.1/NMF26F/1500868195:user/dev-keys
Hardware: msm8953
Revision: 0
Bootloader: unknown
Radio: unknown
Kernel: Linux version 3.18.31-perf-g34cb3d1 (smartcm@hardcomp5) (gcc version 4.9 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Mon Jul 24 11:54:35 CST 2017//从这儿开始为tombstone.cpp负责写入tombstone_0* 文件内容
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Rock/odin/odin:7.1.1/NMF26F/1500868195:user/dev-keys'
Revision: '0'
ABI: 'arm'
pid: 13289, tid: 29467, name: CodecLooper  >>> /system/bin/mediaserver <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
...... //由于篇幅较多,省略

tombstone文件在通过Dropbox上传的时候受buff size限制,平常在文件结尾能看到[[TRUNCATED]]关键字,说明文件已经被截断了。完整的文件格式如下:
这里写图片描述
#分析
##查找对应的symbol
在生成tombstone文件之始,dropbox将生成文件上传时会携带版本等基本信息。一般用Linux version(如:Linux version 3.18.31-perf-g34cb3d1 (smartcm@hardcomp5) (gcc version 4.9 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Mon Jul 24 11:54:35 CST 2017)去http://172.16.2.18/vmlinux.html上查找与之对应的符号库位置,将backtrace中列出的ELF文件拷贝到本地,以便于解析分析。
##tombstone文件内容

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Rock/odin/odin:7.1.1/NMF26F/1492496606:user/dev-keys'
Revision: '0'
ABI: 'arm64'
pid: 4399, tid: 4399, name: netstat  >>> netstat <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0x0   0000000000000000  x1   0000005555591002  x2   0000000000000007  x3   0000000000000004x4   000000000000004c  x5   0000000000000000  x6   0000007fd1fd44b8  x7   fefefefefefefefex8   0000005555591002  x9   0000007f7ae0c708  x10  000000000000004c  x11  0101010101010101x12  0000007f7ae0c708  x13  000000008000002f  x14  0000007f7b5d7108  x15  0000007f7b5d6dacx16  00000055555aa778  x17  0000007f7b54c89c  x18  00000000ffffffff  x19  0000007f7ae2a340x20  0000007f7ae37400  x21  000000555558d9f5  x22  0000005555591002  x23  00000055555ac760x24  000000555559100b  x25  0000000000000000  x26  ffffffffffffffff  x27  0000000000000000x28  216a8f7c1fbcf681  x29  0000007fd1fd4540  x30  0000005555575b1csp   0000007fd1fd44a0  pc   0000007f7b54c984  pstate 0000000000000000v0   0000007fd1fd44100000007fd1fd44a0  v1   0000007fd1fd44100000007fd1fd44a0v2   ffffff80ffffffc80000007fd1fd43b0  v3   0000007fd1fd43f00000007fd1fd44a0v4   00000000000000000000000000000000  v5   40100401401004014010040140100401v6   00000000000000000000000000000000  v7   00000000000000000000000000000000v8   00000000000000000000000000000000  v9   00000000000000000000000000000000v10  00000000000000000000000000000000  v11  00000000000000000000000000000000v12  00000000000000000000000000000000  v13  00000000000000000000000000000000v14  00000000000000000000000000000000  v15  00000000000000000000000000000000v16  00000000000000000000000000000000  v17  00000000000000000000000000000000v18  00000000000000000000000000000000  v19  00000000000000000000000000000000v20  00000000000000000000000000000000  v21  00000000000000000000000000000000v22  00000000000000000000000000000000  v23  00000000000000000000000000000000v24  00000000000000000000000000000000  v25  00000000000000000000000000000000v26  00000000000000000000000000000000  v27  00000000000000000000000000000000v28  00000000000000000000000000000000  v29  00000000000000000000000000000000v30  00000000000000000000000000000000  v31  00000000000000000000000000000000fpsr 00000000  fpcr 00000000backtrace:#00 pc 000000000001b984  /system/lib64/libc.so (strncmp+232)#01 pc 0000000000020b18  /system/bin/toybox#02 pc 000000000000c58c  /system/bin/toybox#03 pc 000000000000c678  /system/bin/toybox#04 pc 000000000000c5e4  /system/bin/toybox#05 pc 0000000000020108  /system/bin/toybox#06 pc 0000000000011880  /system/bin/toybox#07 pc 0000000000011400  /system/bin/toybox#08 pc 00000000000118f4  /system/bin/toybox#09 pc 000000000001a7d8  /system/lib64/libc.so (__libc_init+88)#10 pc 000000000000b6f8  /system/bin/toybox

-确定发生错误的signal
①如上为signal 11,code 为1,fatal addr 为0x0。
使用aarch64-linux-android-addr2line 工具,将对应的backtrace 的pc偏移地址转成跟代码对应的文件名跟行号。在这里有必要提一下,之前一直用aarch64-linux-android-addr2line -fe ./symbols/system/bin/linker 20b18 执行结果为:

$aarch64-linux-android-addr2line -fe system/bin/toybox 20b18
ss_inode
/proc/self/cwd/external/toybox/toys/pending/netstat.c:378

但中间有inline 函数调用,就不知道调用关系了,不久前发现此工具中的参数帮我们解决了此问题。添加-i等参数,完美解决此问题,具体执行如下:

{ qiyunlong@qiyunlong-pc /home/qiyunlong/tmp/7/1 }
$aarch64-linux-android-addr2line -fCpie system/bin/toybox 20b18
ss_inode at /proc/self/cwd/external/toybox/toys/pending/netstat.c:378(inlined by) scan_pid_inodes at /proc/self/cwd/external/toybox/toys/pending/netstat.c:428(inlined by) scan_pid at /proc/self/cwd/external/toybox/toys/pending/netstat.c:447(inlined by) scan_pids at /proc/self/cwd/external/toybox/toys/pending/netstat.c:456

②还有比较常见的signal有,signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr ----
此类问题工作获得代码行号阅读代码,此类问题为进程自己进行abort判断退出,比较好分析,一般都会带有终止message。
-阅读相关代码逻辑
-争取复现问题,便于在修改后加以验证
如上是我自己搞清楚来龙去脉的方法。当然,对于tombstone文件,以上只是皮毛,更多高级用法如使用objdump -SD … 得到汇编,通过tombstone文件记录的寄存器,和backtrace下面的stack 压入栈的信息还原调用逻辑,以及通过dump内存和maps信息确定虚拟内存对应的linker 文件。

有不对之处,欢迎抛砖。。。


http://chatgpt.dhexx.cn/article/7jKlVN1r.shtml

相关文章

android Tombstone 流程

一 总述 下面是一份dump 的log&#xff1a; 810 876 I system_server: libdebuggerd_client: started dumping process 678 740 740 I /system/bin/tombstoned: registered intercept for pid 678 and type kDebuggerdNativeBacktrace 678 678 I libc : Requested du…

android tombstone log分析

今天和大家一起聊聊android 中出现的 Tombstone问题&#xff0c;近期在定制pad 上分析设备概率性重启&#xff0c;导出bugreport日志后&#xff0c;除了看到anr log外&#xff0c;同级目录下还看到了tombstones 并且对比以往日志&#xff0c;发现都生产了大量tombstone...,于是…

深入学习tombstone和signal

三驾马车&#xff08;CPU&#xff0c;内存和存储设备&#xff09;中&#xff0c;跑得最慢的就是存储设备了 电脑上&#xff0c;从HDD 到SSD&#xff0c;从SATA SSD到PCIe SSD&#xff0c;硬盘是越来越快&#xff1b; 手机上&#xff0c;从SD卡&#xff0c;到eMMC卡&#xff0…

tombstone

1.什么是tombstone 当一个动态库&#xff08;native 程序&#xff09;开始执行时&#xff0c;系统会注册一些连接到 debuggerd 的 signal handlers&#xff0c;当系统 crash 的时候&#xff0c;会保存一个 tombstone 文件到/data/tombstones目录下&#xff08;Logcat中也会有相…

Tombstone原理分析

本文主要围绕三个问题对tombstone进行分析和介绍&#xff0c;debuggerd是如何监控进程并生成tombstone的&#xff1f;tombstone文件中的信息都是什么&#xff0c;是怎么获取的&#xff1f;tombstone文件应该怎么分析&#xff1f; 一、Tombstone简介 当一个native程序开始执行时…

【date】Linux date命令修改时间的问题

Linux date命令修改时间的问题 问题路径找原因解决方法 问题 Android10&#xff1b;高通平台 使用下面date命令修改时间日期&#xff0c;时分秒生效&#xff0c;年月日不生效 > date -D YYYY-MM-DD hh:mm:ss 路径 \android\external\toybox\toys\posix\date.c \android\e…

i2ctools工具移植到android(使用NDK方式 在某android平台测试)

前提条件 主板i2c已在设备树配置status和引脚复用正常&#xff0c;即设备的i2c总线达到正常使用条件I2C device interface假设内核已配置进去 编译工具链NDK环境搭建 下载NDK 下载地址点我解压 ~/workspace/ndk$ ls android-ndk-r22b android-ndk-r22b-linux-x86_64.zip …

高通平台 Android9 adb shell “hwclock -w“ 报错

hwclock -w 报错 文章目录 hwclock -w 报错问题现象分析1. hwclock命令分析2. /dev/rtc0驱动节点分析 修改设备树后hwclock -w报错没有了&#xff0c;但是系统会重启&#xff0c;原因未知 问题现象 sdm660_64:/ # hwclock -w hwclock: ioctl 4024700a: Invalid argument分析 …

Android top命令、ps命令、busybox命令

top命令 usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]Show process activity in real time.-H Show threads -k Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID) -o Show FIELDS (def PID,USER,PR,N…

OpenHarmony啃论文俱乐部—盘点开源鸿蒙引用的三方开源软件[1]

目录这里写自定义目录标题 OpenHarmony third_party三方库&#xff1a;学术研究和参与开源的结合third_party_openh264third_party_ninjathird_party_gnthird_party_markupsafethird_party_toyboxthird_party_gstreamerthird_party_ffmpegthird_party_mtdevthird_party_flutter…

Android缺少awk工具的几种解决方法

在日常测试中&#xff0c;我们会用到各种各样的Android平台&#xff0c;用于测试存储设备的性能。其中&#xff0c;我们依赖到Android平台自身的工具&#xff0c;通过编写shell脚本来实现测试存储设备的性能。   而awk工具(shell命令)在shell脚本中会经常用到&#xff0c;一般…

toybox 和 busybox 的作用

来自知乎&#xff1a;程序员秘书 ##前言## 我们在做android开发时&#xff0c;经常会有在板子系统里要修改文件内容对比验证问题&#xff0c;或者要操作特殊的shell命令操作看些信息&#xff0c;等等一些需求。但是往往会因为刷到板子的系统里默认没有/不支持相关的命令&…

欢乐听:一个简洁的瀑布流模式的音乐分享站

欢乐听 一个简洁的瀑布流模式的音乐分享站。

分享5个高质无损音乐网站,歌曲很丰富,爱听歌的小伙伴有耳福了

生活中很多人都离不开音乐&#xff0c;散步的时候听音乐&#xff0c;等待的时候听着音乐&#xff0c;心情不好的时候听音乐&#xff0c;不管走到哪&#xff0c;有音乐的陪伴一点也不寂寞&#xff0c;不同音乐的旋律给我们带来不同的心情&#xff0c;今天小编就给爱听音乐的小伙…

【音乐】收藏的300多首抖音神曲,MP3音乐分享,近一年的抖音歌曲

今天给大家分享N多&#xff08;300&#xff09;首抖音神曲。抖音大家都知道&#xff0c;各种火&#xff0c;各种原因&#xff0c;其中的BGM(背景音乐)更是起到了至关重要&#xff08;画龙点睛&#xff09;的作用&#xff0c;不知道是哪个大神搞的&#xff0c;去年我搞视频的时候…

搭建一个点歌QQ机器人,另外还能看美女

目录 前言具体实现1、爆照2、生日书3、获取歌词和分享音乐 完整项目下载地址&#xff08;配置了python环境&#xff09;完整项目下载地址&#xff08;电脑没有python环境&#xff09; 前言 完整项目&#xff0c;包括框架、代码和详细使用说明可以去社区下载&#xff08;下载完…

基于java的音乐网站的设计与实现

欢迎添加微信互相交流学习哦&#xff01; 项目源码&#xff1a;https://gitee.com/oklongmm/biye 基于java的音乐网站的设计与实现 摘 要 随着互联网和宽带上网的普及&#xff0c;网络传输以其特有的快速、高效、便捷的传输方式越来越被人们接受。在当今社会的影响下&…

android wifi传输音乐,让你通过WiFi分享手机上的歌曲,音乐共享软件MyStream十一发布Android版...

MyStream原来是 iOS上的音乐共享应用&#xff0c;十一期间&#xff0c;它将跨出iOS平台&#xff0c;首次推出Android版音乐共享服务。 MyStream和主流的Pandora、Spotify、Turntable.fm、Songza这些音乐分享服务并不一样。它将手机上的本地音乐通过WiFi或蓝牙和周围的设备进行音…

竞品分析:网易云音乐和QQ音乐,音乐类app的战场

文章从产品的角度分别分析两款产品的行业市场、功能、业务模式以及运营策略&#xff0c;进一步了解两款产品的差异与不同。 一、产品概况 1. 产品概述及版本 网易云音乐是一款专注于发现与分享的音乐产品&#xff0c;依托专业音乐人、DJ、好友推荐及社交功能&#xff0c;为用…

网易云音乐竞品分析

概述 1.原因 个人平时使用网易云较多&#xff0c;正好想学学竞品分析怎么写。因此&#xff0c;想通过梳理市场最新报告和数据表现&#xff0c;了解在线音乐行业的现状和市场情况&#xff1b;分析网易云音乐目前的市场地位、功能设计、UI设计等方面&#xff0c;与相关竞品进行对…