码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 智慧屏内核崩溃问题分析


    1. 查看崩溃前内核日志

              智慧屏内核崩溃时,在/data/vendor/log/mtklog/aee_exp/history.log中会记录发生panic的时间点,如下图所示:

              从图中可以看出,在2021-09-29 18:30:22时发生kernel panic,对应崩溃前的内核日志保存在20210929183022-12999199目录下的last_kmsg文件中

              打开last_kmsg文件,搜索panic附近的日志,可以看到有如下提示:

              即在zram_bvec_rw函数0xb58偏移处出现异常,那么接下来要解析zram_bvec_rw函数0xb58偏移处的代码行。

     

    2. 解析函数栈

              在CDE代码搜索中查找zram_bvec_rw函数,该函数在kernel中,所以需要找kernel的符号表文件。

    (1)根据版本的构建时间在工程者桌面获取版本路径

             在版本路径中有vmlinux,这个文件就是内核符号表文件

    (2)设置llvm-symbolizer的环境变量

              llvm-symbolizer、llvm-nm位于如下目录:

              prebuilts/clang/host/linux-x86/clang-r383902b/bin,

              为了方便在其他目录也能使用这个工具,把这个目录加入到环境中,执行如下命令:

              export PATH=/home/lw/code/dnte/master/chip/prebuilts/clang/host/linux-x86/clang-r383902b/bin:$PATH

    (3)解析函数的实际地址

              llvm-nm命令可以列出内核中所有函数的地址,用如下命令可以获取zraw_bvec_rw函数在内核中的地址:

              llvm-nm vmlinux |grep zraw_bvec_rw

    (4)解析代码行

             在内核日志中,出现问题的地方是该函数的0xb58偏移,如下日志:

    那么计算真正的地址:0xffffff8008b211cc + 0xb58 = 0xffffff8008b21d24

           用llvm-symbolizer工具计算出真正的代码行:

           从命令执行的结果看,zram_drv.c的2117行代码异常导致了这次的内核panic,至此就能容易分析出内核崩溃的根因。

           后来经过分析,该问题的根因是kmap_atomic和kunmap_atomic函数的调用不匹配导致的,kmap_atomic函数中禁用了抢占但未打开,导致zs_map_object函数内部BUG_ON检查失败,引发panic重启。

  • 相关阅读:
    【模型推理加速系列】05: 推理加速格式TorchScript简介及其应用
    GeneralUpdate20220323里程碑版本发布
    Python&C++相互混合调用编程全面实战-25基于ffmpeg扩展库示例环境项目创建和调用
    如何判断多用户商城系统是否靠谱?
    0基础学习 Android 开发用 Kotlin 编程语言
    学习ASP.NET Core Blazor编程系列二十九——JWT登录(3)
    Android Studio升级Gradle7.4之后Hilt报错的解决
    不知道不 OK!53 个 Python 经典面试题详解
    持续集成实战 —— Jenkins自动化测试环境搭建
    python 随机生成emoji表情
  • 原文地址:https://blog.csdn.net/dahailinan/article/details/128048565
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号