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

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

  •  
  •   liyafe1997 May 27, 2024 8680 views
    This topic created in 715 days ago, the information mentioned may be changed or developed.

    小米的高通处理器的手机的 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 replies    2024-06-05 06:16:34 +08:00
    Donaldo
        1
    Donaldo  
       Jun 4, 2024
    既然都在正常运行,那肯定不是 kernel panic ,所以考虑一下是不是 system framework 层面的问题? logd 还在运行么?
    liyafe1997
        2
    liyafe1997  
    OP
       Jun 4, 2024
    @Donaldo 你说的 system framework 指的是 Android ?应该没到那个层面的事情。因为开关 CPU 核心是内核/驱动的事情,而且现象也没到 Android 层面,比如一个 echo 或者 ls 都运行不了,看起来就像是内核寄了(虽然不是 panic ,但是看起来像什么东西死锁了)。
    Donaldo
        3
    Donaldo  
       Jun 4, 2024
    @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
       Jun 5, 2024
    @Donaldo 感谢指路!回头研究下
    About     Help     Advertise     Blog     API     FAQ     Solana     3047 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:10 PVG 23:10 LAX 08:10 JFK 11:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86