V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liyafe1997
V2EX  ›  Android

求助一个诡异的 Linux 内核 bug 调试方向

  •  
  •   liyafe1997 · 172 天前 · 4187 次点击
    这是一个创建于 172 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小米的高通处理器的手机的 Android 内核,rebase 高通上游源码以后,有一个诡异的 bug: 在开关 CPU 核心时(比如用 Kernel Auditor 手动开关,或者各种调试策略/省电策略导致的核心自动开关),在开启 CPU 核心时,有一定概率内核会卡死(不是每次都会,有一定概率会),没有 panic ,而是进入一种诡异的状态: 安卓端的现象就是,整个屏幕定格卡死,无任何响应,闲置一定时间后会暗屏,但是不会熄屏,插入充电器 LED 灯能亮,说明很多进程还是在正常运行的

    如果此时连着 ssh ,开着 dmesg -w ,没有任何有价值的线索,只能正常看到 CPUx online 之类的,然后之后的日志也在正常滚动输出,说明 dmesg 此时也是运行正常的。但是如果尝试按 Ctrl+C ,dmesg 就卡死了,也无法正常退出。也无法连接新的 ssh 会话,如果有一个空的 ssh 会话,也无法启动任何新的进程。 总之现象就是:

    1. dmesg 无线索,无报错
    2. 已经在运行的进程(似乎)可以正常运行,但是无法启动任何新的进程,也无法退出已有进程,不确定是卡在按 Ctrl+C 响应 signal 上,还是子进程尝试退出,回到父进程 join 这个过程上。

    最主要的是 dmesg 无任何线索,这个诡异的 bug 该往哪个方向查呢?或者还有什么地方能提供线索? 有没有大佬有什么思路?

    4 条回复    2024-06-05 06:16:34 +08:00
    Donaldo
        1
    Donaldo  
       165 天前
    既然都在正常运行,那肯定不是 kernel panic ,所以考虑一下是不是 system framework 层面的问题? logd 还在运行么?
    liyafe1997
        2
    liyafe1997  
    OP
       165 天前
    @Donaldo 你说的 system framework 指的是 Android ?应该没到那个层面的事情。因为开关 CPU 核心是内核/驱动的事情,而且现象也没到 Android 层面,比如一个 echo 或者 ls 都运行不了,看起来就像是内核寄了(虽然不是 panic ,但是看起来像什么东西死锁了)。
    Donaldo
        3
    Donaldo  
       164 天前
    @liyafe1997 #2 也有道理,不应该是安卓层的问题。另外看你的描述说不是稳定复现,且闲置会暗屏说明至少调节背光的驱动和 timer 还是 ok 的,也就是说部分 kworkers 是没问题的,但涉及到进程相关的操作就会导致(可能的)死锁出现。

    几个特点:1. 不稳定复现; 2. 进程的操作会导致 hang 住(像是死锁); 3. 内核没有 panic ,部分 kworkers 在正常工作; 4. 触发的条件式 CPU 核心的开关

    linux 内核代码太多了,特别也不知你是什么版本,很难定位到具体涉及到哪几行逻辑。。。只能提供一些思路:
    根据我手头上这份一加 9p 骁龙 888 5.4 版本的查阅了一下,启动一个进程,也就是 do_fork->copy_process 的时候,第一次绑定 cpu 会默认绑定到 cpu0 上,然后在 wake_up_new_task 里面,会再找一个新的 cpu 调度,会不会是这里或者类似的地方出现了问题,比如你关的核心又被调度了,而恰好没有做好处理,导致了死锁什么的?可以在这些地方试着 printk 一下,毕竟你的 dmesg 还是可以吐日志的。

    或者 diff 一下你 rebase 之前之后的仓库,如果太多的话,着重看看 kernel/sched/core.c, kernel/fork.c 等相关文件,看看做了什么改动?没 panic 就说明不是太糟糕的问题。
    liyafe1997
        4
    liyafe1997  
    OP
       164 天前
    @Donaldo 感谢指路!回头研究下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 11:37 · PVG 19:37 · LAX 03:37 · JFK 06:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.