所谓Linux panic就是碰到错误状况时, code里主动调的一个函数panic(),里面出不来,会让cpu重启。 不容许再乱执行代码,以便保留现场。 像下面这个例子,就是在kernel fault函数里检查到非法无效地址访问后的错误处理,主动调了panic(). 经过访问地址能够区分是kernel代码(>0xC0000000)仍是user space 代码。函数
writing 'C' to /proc/sysrq-trigger is like sysrq-Cspa
echo c > /proc/sysrq-trigger指针
代码在: \kernel\drivers\tty\sysrq.ccode
本质上是操做NULL 指针引发crashit
调用路径: 从下往上 panic die __do_kernel_fault do_page_fault do_DataAbort __dabt_svc sysrq_handle_crash __handle_sysrq write_sysrq_trigger proc_reg_write vfs_write sys_write ret_fast_syscallast