本文转载自Linux公众号

宋宝华: Kernel Oops和Panic是一回事吗?

Oops英文单词的中文含义是“哎呀”,表示“惊叹”;Panic英文单词的中文含义是“惊慌”。所以panic的程度显然是高于oops的,因为惊叹不一定会惊慌,而惊慌最容易失措,内核panic后,就死机了,俗称内核崩溃。但是内核报oops,这个时候不见得会panic,它可能只是报个oops,杀死进程而已。

当oops发生的时候,如果in_interrupt()成立,或者panic_on_oops成立,都是直接panic(),否则只是以一个信号退出进程而已。

由此可见,如果我们在一个中断上下文,这个oops必须抛panic;否则如果只是一个进程上下文,打印个oops,进程退出即可。另外,如果/proc/sys/kernel/panic_on_oops设置的值是1,这个时候,不管你在什么上下文,都是要panic的。

In_interrupt()在如下三种情况下,都会成立:

  • 在硬中断;

  • 在软中断(soft irq);

  • 在NMI

全文总结非中断上下文的oops只是oops;中断上下文oops要panic;如果设置了panic_on_oops,任何oops都是panic。

oops和panic的区别相关推荐

  1. Go面试题——log.fatal和panic的区别

    log.fatal和panic的区别 log.fatal(err) panic(err) 简单来说就是: 第一种在报错之后会立即终止整个程序(不执行defer). 第二种在报错之后会终止当前报错的协程 ...

  2. linux oops 自动重启,Linux 死机复位(oops、panic)问题定位指南

    一个计算机系统和一个人类社会其实是差不多的,系统在运行中碰到的各种bug相当于人类社会中的各种案件:user space发生的bug危害性一般,可能就相当于一般的民事案件:kernel层面发生bug引 ...

  3. kernel panic 和 kernel Oops

    1. Kernel panic 内核错误(Kernel panic)是指操作系统在监测到内部的致命错误,并无法安全处理此错误时采取的动作.这个概念主要被限定在Unix以及类Unix系统中:对于Micr ...

  4. Linux内核oops panic简析

    源码基于:Linux 5.4 0. 前言 内核异常的级别大致分为三个:BUG.oops.panic. BUG 是指那些不符合内核的正常设计,但内核能够检测出来并且对系统运行不会产生影响的问题,比如在原 ...

  5. go 异常捕获和处理(panic/recover)

    异常处理 Golang 没有结构化异常,使用 panic 抛出错误,recover 捕获错误. 异常的使用场景简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个 ...

  6. go语言错误和异常处理,panic、defer、recover的执行顺序

    一.panic()和recover() Golang中引入两个内置函数panic和recover来触发和终止异常处理流程,同时引入关键字defer来延迟执行defer后面的函数. 一直等到包含defe ...

  7. Kernel Exception 问题分析详解

    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一.Kernel Exception概述 二.Kernel空间布局 三.printk 概述 四.AEE ...

  8. abort linux,ARM Linux异常处理之data abort

    1 异常向量与程序跳转data abort是ARM体系定义的异常之一.异常发生时,ARM会自动跳转到异常向量表中,通过向量表中的跳转命令跳转到相应的异常处理中去. ARM的异常处理向量表在entry- ...

  9. kdump和crash的配置方法与内核故障原因分析(一)

     最近数据库服务器备机升级网卡驱动版本以及大数据有个别设备直接crash重启了,查看日志也查不到当时时间点的日志,查看kdump是开启了的,但是数据库的kdump不知道为啥没有生成crash日志,为了 ...

最新文章

  1. js模块化编程之CommonJS和AMD/CMD
  2. LINUX基本命令行手册一
  3. var let const声明变量的区别
  4. 专为linux设计的笔记本,平板变笔记本,Linux 设备也要凑凑热闹
  5. Servlet 的实例对象
  6. 【Best Time to Buy and Sell Stock III 】cpp
  7. ubuntu16.04下运行海康威视网络摄像头sdk(qtdemo)
  8. python用tkinter做简易计算器_基于python tkinter的简单计算器(v1.0)
  9. 终于!LeCun发文驳斥Gary Marcus:别把深度学习暂时的困难当撞墙
  10. pg_stat_statements
  11. tensorflow python cuda nividia驱动版本对照
  12. 可以弹奏的钢琴页面(HTML实现)
  13. Ubuntu20.04+GTX1060+显卡驱动+CUDA11.8+cuDNN8.5.0
  14. 1-14 Burpsuite Repeater介绍
  15. Android项目实践(四)——音乐播放器APP
  16. Python脚本---在 MySQL数据库中跑批加载多个表的数据
  17. 消息称Bilibili通过发行债券和股票筹集8.24亿美元
  18. 华容道程序制作(解题部分)
  19. 如何将Android程序放在手机上调试运行
  20. C++开发斗地主(QT)第二篇之牌的绘制与显示

热门文章

  1. 普通计算器和科学计算器的实现过程另附带画图功能(C# 窗体)
  2. 数据库日常管理常用sql脚本
  3. Git-Git里程碑
  4. 在C++中实现变长数组
  5. xcode9 privat framework path
  6. 状态机设计软件-QM
  7. GitHub下载的 Git Shell中出现的字符支持警告,将字体修改为新宋体即可
  8. webshell查杀工具
  9. Tomcat网页乱码、控制台乱码
  10. 第十四章 习题14-11-习题14-20