[Kernel_exception1] kernel exception的总结

一、概述:

    kernel exception的种类有很多,主要表现为kernel panic,一旦linux kernel发生panic,机器会出现重启,会产生很差的体验,但导致kernel  panic的原因有很多,软件和硬件问题都会导致panic,出现panic时需要通过gdb/trace32工具对产生的DB文件根据具体的代码进行分析定位问题,下面会介绍各种kernel exception(简称KE)。

二、execption的种类:

(1)普通的data abort,从SYS_KERNEL_LOG中,可以检索到如下的info:

      Unable to handle kernel paging request at virtual address  XXXXXXXXX

     上面的XXXXXXXX代表某个非法地址。这种类型的KE很常见,导致这种问题的原因可能有:踩内存、硬件Bit位翻转等;

     此类问题一般需要同时编译出来的符号表(vmlinux)进行反汇编分析。

(2)主动调BUG的重启Kernel panic,在对应的kernel log中可以看到如下关键字,既可以定位为此类问题:

    Kernel BUG at ffffff8008311ac8 [verbose debug info unavailable]

    此类BUG,是在代码中出现异常导致调用到BUG()触发的主动重启。

(3)oom 主动触发的panic,从SYS_KERNEL_LOG中,可以检索到如下的info:

    Kernel panic - not syncing: Out of memory and no killable processes...

    Out of memory意味着已无可用的memory,这样的问题必然存在一些耗费资源的进程耗尽了memory的资源触发的KE。

(4)undefined instruction,未定义指令异常。从SYS_KERNEL_LOG中,可以检索到如下的info:

    Internal error: Oops - undefined instruction,此类问题一般是CPU/DRAM不稳定导致的问题。

(5)Watchdog 超时:

    a、硬件看门狗超时:

      此类异常较为常见,多见于底层频繁irq/bus卡死,导致kicker无法被schedule,从而引起watch dog触发中断,引导系

      统进入FIQ处理流程,最终call到BUG触发重启。(表现为HWT和Hardware  Reboot)。

   b、软件看门狗超时:

     MTK平台有hang_detect的机制,system_server进程每30S回去软件喂狗,如果系统卡在超过10min/11min/12min/14min时会

     dump出不同的信息用于debug。

    上面只是列出了很多不同类型的kernel exception,后面会做详细的说明并贴上分析过程。

作者:frank_zyp 
您的支持是对博主最大的鼓励,感谢您的认真阅读。 
本文无所谓版权,欢迎转载。      

    

猜你喜欢

转载自blog.csdn.net/frank_zyp/article/details/82760369
今日推荐