Linux內核錯誤panic oops


1、panic
當內核遇到嚴重錯誤的時候,內核panic,立馬崩潰。死機。

2、oops
oops是內核遇到錯誤時發出的提示“聲音”,oops有時候會觸發panic,有時候不會,而是直接殺死當前進程,系統可以繼續運行。

比如說內核態下的段錯誤,當內核設置了panic_on_oops=1的時候,oops會觸發panic。【panic_on_oops的值在內核編譯的時候配置,可以在/proc/sys/kernel/panic_on_oops查看值,同時可以使用sysctl修改】

當panic_on_oops=0的時候,如果錯誤發生在中斷上下文,oops也會觸發panic。如果錯誤只是發生在進程上下文,這個時候只需要kill當前進程。【中斷上下文包括以下情況:硬中斷、軟中斷、NMI】。

oops的時候內核還可以運行,只是可能不穩定,這個時候,內核會調用printk打印輸出內核棧的信息和寄存器的信息。

oops提示:

[  263.336138] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[  263.342790] pgd = d4a44000
[  263.345467] [00000000] *pgd=566db831, *pte=00000000, *ppte=00000000
[  263.351708] Internal error: Oops: 817 [#1] PREEMPT SMP
[  263.356826] Modules linked in: hello(+)
[  263.360647] CPU: 0    Not tainted  (3.0.15 #20)
[  263.365165] PC is at hello_init+0x18/0x20 [hello]
[  263.369856] LR is at do_one_initcall+0x3c/0x190
[  263.374361] pc : [<bf002018>]    lr : [<c003e684>]    psr: 60000013
[  263.374365] sp : d4a17f18  ip : d4a17f28  fp : d4a17f24
[  263.385817] r10: 00000000  r9 : d4a16000  r8 : c0045ae8
[  263.391025] r7 : 0000534b  r6 : 00000000  r5 : bf000034  r4 : c096f840
[  263.397536] r3 : 00000000  r2 : 00000001  r1 : d4a17f28  r0 : 00000000
[  263.404047] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  263.411163] Control: 10c5387d  Table: 54a4404a  DAC: 00000015
[  263.416891] 
[  263.416893] LR: 0xc003e604:

 

from: https://blog.csdn.net/weixin_38812277/article/details/95939853

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM