浅谈 Android Tombstone(墓碑日志)分析步骤 - 02

news2025/1/12 5:52:02

        tomestone 日志:



*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'qti/trinket/trinket:11/RKQ1.211119.001/37:user/test-keys'
Revision: '0'
ABI: 'arm'
Timestamp: 2023-06-19 23:47:31+0800
pid: 742, tid: 32482, name: CAM_MctBus_3  >>> /vendor/bin/hw/android.hardware.camera.provider@2.4-service <<<
uid: 1047
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xf1c0b000
    r0  f1c0b000  r1  f0bc2e30  r2  a3e7e031  r3  00000000
    r4  00000030  r5  e30a2000  r6  e41c0010  r7  e41cf1e8
    r8  e41cf1e8  r9  e9140010  r10 f101b124  r11 e9141718
    ip  f10104a8  sp  e7cfbf48  lr  eed906ed  pc  eed9e7c2

backtrace:
      #00 pc 0001a7c2  /vendor/lib/libmmcamera2_mct.so (mct_stream_process_bus_msg+1090) (BuildId: c7b8b07e3cfc6442102b77d8c5cb2c94)
      #01 pc 00011b07  /vendor/lib/libmmcamera2_mct.so (mct_pipeline_process_bus_msg+66) (BuildId: c7b8b07e3cfc6442102b77d8c5cb2c94)
      #02 pc 00015f77  /vendor/lib/libmmcamera2_mct.so (mct_bus_handler_thread_run+722) (BuildId: c7b8b07e3cfc6442102b77d8c5cb2c94)
      #03 pc 0008175b  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) (BuildId: ce538316b794b365cfbcadf267fef2dc)
      #04 pc 0003a3ed  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) (BuildId: ce538316b794b365cfbcadf267fef2dc)



        先看 #04。

        首先,确认 #04 所对应的 libc.so 所在的位置,在 ./out/target/ 下执行命令:

/out/target$ find . -name libc.so*  

        找到 so 位置:

   ./out/target/product/qssi/symbols/apex/com.android.runtime/lib/bionic/libc.so

        接着再执行命令:

./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e ./out/target/product/qssi/symbols/apex/com.android.runtime/lib/bionic/libc.so 0003a3ed

        定位出问题方法具体位置:

         打开代码,找到方法调用链中的首个方法:

        找到首个方法位置后,再看,这个链其实不长,而且墓碑日志记录很清晰,是 /vendor/bin/hw/android.hardware.camera.provider@2.4-service 发生了问题,因此接下来直接找链中最后一个方法调用,也就是 #00。

        看#00,首先确认 libmmcamera2_mct.so 所在位置,在 ./out/target/ 下执行命令:

find . -name libmmcamera2_mct.so*

        如下图找到带符号的 so 库位置:

         即:

./out/target/product/trinket/symbols/vendor/lib/libmmcamera2_mct.so

        接着再执行命令:

./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e ./out/target/product/trinket/symbols/vendor/lib/libmmcamera2_mct.so 0001a7c2

        定位出问题方法位置:

         查看文件 
~/workspace/code_v01_dev/LINUX/android/vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/mct/stream/mct_stream.c 的 4196 行:

        当前是找到了首、尾两处,但是具体的问题分析,还得再结合日志进行分析。

        结合 logd 日志,墓碑日志记录于 2023-06-19 23:47:31,logd 中最旧的日志记录的最早时间是 06-20 14:12:02.454747,所以前置操作日志已经被覆盖冲掉,无法参考 logd 日志分析问题。

        待继续分析。。

---------------------------------------------------------------------------------------------------------------------------------

        我去,上面吭哧吭哧,执行了一堆命令才找到两处代码调用。刚发现一篇博客(博客),其实可以直接使用 stack 就可以一键发现所有地方,即使找到的不全,再结合使用 addr3line 自己转一下,也就差不多就找全了。

        以上面这个 tombstone 日志为例,在 ./development/scripts 目录下执行命令:
 



// hgd_tombstone_01 :tombstone文件名字
// hgd_01_check :保存转换后的文本


stack hgd_tombstone_01 > hgd_01_check


        打开转换后的 hgd_01_check 文件:

         也定位到了 4196行处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/703959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Bean的生命周期解读

目录 1. Spring IOC容器 1.1 Spring IOC 容器的设计 1.1.1 BeanFactory 1.1.2 ApplicationContext 1.2 Spring Bean的生命周期 1.2.1 BeanDefinition 1.2.2 InstantiationAwareBeanPostProcessor和BeanPostProcessor 1.2.3 测试生命周期 1. Spring IOC容器 1.1 Spring …

【前端工程化】深入浅出vite(一)--vite的优点及原理、性能优化

Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本。 背景 webpack支持多种模块化&#xff0c;将不同模块的依赖关系构建成依赖图来进行…

帮助中心对企业有用吗?

帮助中心一般是指产品的说明或者使用帮助&#xff0c;客户在利用一些网站的功能或者服务时往往会遇到一些看似很简单&#xff0c;但不经过说明可能很难搞清楚的问题&#xff0c;企业有时甚至会因为这些细节问题的影响而失去用户&#xff0c;其实在很多情况下&#xff0c;只要经…

如何添加mathtype到往word菜单?

mathtype6.9安装完事&#xff0c;总是不在word中显示菜单&#xff0c;网上搜了好几个教程&#xff0c;步骤各不相同&#xff0c;索性自己试了一遍&#xff0c;整理了下关键步骤&#xff0c;做个备份&#xff0c;下次直接看自己的经验&#xff01; 把math type安装目录中&#…

MySQL中常用工具

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

LeetCode 15.三数之和

文章目录 题目描述解题思路代码 题目描述 链接&#xff1a;https://leetcode.cn/problems/3sum 解题思路 排序 双指针 注意点&#xff1a;去重 代码 public IList<IList<int>> ThreeSum(int[] nums) {// 结果数组List<IList<int>> result new Li…

Nacos 2.x版本 配置中心和服务注册与发现 源码解析

一、配置中心源码解析 1.首先找到nacos读取配置的入口 1&#xff09;找到nacos-config包下的spring.factories中的NacosConfigBootstrapConfiguration 2&#xff09;NacosConfigBootstrapConfiguration会做两件事情&#xff0c;加载完成两个bean&#xff0c;一个是NacosConfi…

2023品牌新媒体矩阵营销洞察报告:流量内卷下,如何寻找增长新引擎?

近年来&#xff0c;随着移动互联网的发展渗透&#xff0c;短视频、直播的兴起&#xff0c;新消费/新零售、兴趣电商/社交电商等的驱动下&#xff0c;布局线上渠道已成为绝大多数品牌的必然选择。 2022年&#xff0c;越来越多的品牌加入到自运营、自播的行列中&#xff0c;并且…

【线性代数】快速复习笔记

线性代数快速复习 行列式行列式的基础计算某行&#xff08;列加上或减去另一行&#xff08;列的几倍&#xff0c;行列式不变某行列乘k,等于k乘此行列式互换两行列&#xff0c;行列式变号 行列式的性质1 主对角线是X&#xff0c;其余是其他常数a2 范德蒙德行列式3 行列式加减法4…

Linux中安装配置启动Redis

Linux中安装配置启动Redis 一、下载redis 使用命令下载&#xff1a; wget https://download.redis.io/releases/redis-6.0.10.tar.gzls du sh redis-6.0.10.tar.gz解压 [rootnode02 ~]# tar xzf redis-6.0.10.tar.gz [rootnode02 ~]# cd redis-6.0.10 [rootnode02 redis-6.…

低代码:改变未来的智慧力量!打造智能产业新纪元!

前言 在数智时代的浪潮中&#xff0c;智慧产业成为推动经济发展的重要引擎。随着科技的不断进步&#xff0c;传统工厂也在加速转型为智能工厂&#xff0c;实现产业体系的智能化建设已经成为当今企业追求的目标。 概念 产业体系智能化是指借助信息技术手段&#xff0c;对传统产业…

redis高可用(二)

redis高可用&#xff08;二&#xff09; 一、主从复制 1.概念 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到…

Dlib —— 对图片进行人脸检测并绘出特征(附C++源码)

效果 注意&#xff1a;Dlib检测人脸在Release版耗时与CPU有关,本人I7 10代约100ms左右。建议人脸检测可以考虑使用Yolov5进行&#xff0c;之后将检测到的人脸输入给Dlib做特征或其他。 代码 #include <iostream>#include <dlib/image_processing/frontal_face_detecto…

【胖虎的逆向之路】——GOT/PLT Hook详解针对自定义so库的Hook实操

文章目录 [TOC](文章目录) 前言一、ELF 是什么&#xff1f;1、ELF 的概念2、ELF 的组成2.1、 两种视图是什么呢&#xff1f;2.2、 ELF文件头又是什么西西&#xff1f;2.2、 ELF中节头表是什么南南呢&#xff1f;2.2、 ELF中程序头表是什么北北呢&#xff1f; 二、动态库装载、动…

uni-app 微信小程序发布时,主包超过2M限制

小程序发布时&#xff0c;提示超过2M&#xff0c;无法通过&#xff0c;此时可以尝试以下几种方法&#xff1a; 1、对图片做压缩 图片尽量放在服务器端&#xff0c;使用的时候&#xff0c;通过URL路径获取&#xff0c;若不得已放在本地时&#xff0c;可以对图片进行压缩&#…

基于springboot+Redis的前后端分离项目之分布式锁-redission(五)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 分布式锁-redission 分布式锁-redission1 分布式锁-redission功能介绍2 分布式锁-Redission快速入门3 分布式锁-redission可重入锁…

NoSQL之Redis优化(一)

Redis的高可用 一、Redis 持久化RDB 持久化AOF 持久化RDB和AOF的优缺点 二、Redis 性能管理内存碎片如何产生的&#xff1f;解决碎片率大的问题&#xff1a;内存使用率内回收key 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时…

【Java可执行命令】(四)反编译工具javap:深入解析应用程序反编译工具javap ~

Java可执行命令详解之javap 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.1.1 可选参数&#xff1a;-l3.1.2 可选参数&#xff1a;-c3.1.3 可选参数&#xff1a;-s3.1.4 可选参数&#xff1a;-verbose3.1.5 可选参数&#xff1a;-version 4️⃣ 应用场景5️⃣ 注意事项&…

6.21、设计模式 单例设计模式

1 设计模式&#xff08;Design pattern&#xff09; 代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来…

好用又智能笔记类工具有哪些?

在工作和生活中&#xff0c;我们经常面临大量信息和任务需要记录和整理。好用又智能的笔记类工具成为了办公人士提高工作效率和组织信息的必备利器。 敬业签笔记工具支持分类记录笔记&#xff0c;可以根据不同的主题或项目进行整理。无论是工作笔记、学习笔记还是个人生活记录…