OK6410A 开发板 (八) 63 linux-5.11 OK6410A linux内核空间常见的异常情景及分析 kernel exception

发布者:温文儒雅最新更新时间:2022-08-22 来源: csdn关键字:OK6410A  开发板  11  内核空间 手机看文章 扫描二维码
随时随地手机看文章

异常情景的level1

异常情景的level1 是最底层 show 当前状况的 api

其他具体的异常情景会根据 自身情景 调用 这些api


oops

打印

Unable to ... 到 ---[ end trace

行为

如果调用panic,就会做panic的行为,否则只是打印

是什么时候会调用panic

1. panic_on_oops 为 1

2. in_interrupt

2.1 硬中断

2.2 软中断

2.3 NMI


panic

打印

Kernel panic ... 

行为

通知感兴趣模块,死机或重启

被谁调用的

只有oops会调用panic


BUG

!CONFIG_BUG #define BUG() do {} while (1)

CONFIG_BUG && !HAVE_ARCH_BUG #define BUG() do {

printk("BUG: failure at %s:%d/%s()!n", __FILE__, __LINE__, __func__);

barrier_before_unreachable();

panic("BUG!");

} while (0)

CONFIG_BUG && HAVE_ARCH_BUG #define BUG() _BUG(__FILE__, __LINE__, BUG_INSTR_VALUE)


#define BUG() _BUG(__FILE__, __LINE__, BUG_INSTR_VALUE) // #define BUG_INSTR_VALUE 0xe7f001f2 // 以这个值为arm的二进制代码执行,会产生未定义指令异常

#define _BUG(file, line, value) __BUG(file, line, value)

#define __BUG(__file, __line, __value)             

do {

asm volatile("1:t" BUG_INSTR(__value) "n" 

".pushsection .rodata.str, "aMS", %progbits, 1n"

"2:t.asciz " #__file "n"         

".popsectionn"                 

".pushsection __bug_table,"aw"n"     

".align 2n"                   

"3:t.word 1b, 2bn"               

"t.hword " #__line ", 0n"         

".popsection");                 

unreachable();                     

} while (0)

BUG_ON

#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)


level2

level2 的话 有很多,level 2 对应了具体的异常情景

比如 除0 的函数路径

比如 缺页 的函数路径



1. 踩内存、硬件Bit位翻转导致的数据异常

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

Unable to handle kernel paging request at virtual address  XXXXXXXXX

2. 调用BUG // arm64 BUG 直接调用 panic

代码中出现异常导致调用到BUG()触发的主动重启

Kernel BUG at ffffff8008311ac8 [verbose debug info unavailable]

3. oom

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

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

4. 未定义指令异常

一般是CPU/DRAM不稳定导致的问题

Internal error: Oops - undefined instruction

5. 卡死导致硬件看门狗超时

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

引导系统进入FIQ处理流程,最终call到BUG触发重启。 // wathchdog 是 fiq ???

(表现为HWT和Hardware  Reboot)

6. 软件看门狗超时

MTK平台有hang_detect的机制,system_server进程每30S回去软件喂狗

如果系统卡在超过10min/11min/12min/14min时,会dump出不同的信息用于debug。


level2 实例

clcdfb_probe


825     printk("xxxxxxxxxxxxxxxxxxxxxxxxxxxx1n");                                   

826     int *p = 0;                                                                  

827     int a = 0;                                                                   

828     a = *p;                                                                      

829     printk("xxxxxxxxxxxxxxxxxxxxxxxxxxxx2n");


#0  __loop_delay () at arch/arm/lib/delay-loop.S:47

#1  0xc0045544 in panic (fmt=0xc0b1a010 "Attempted to kill init! exitcode=0x%08xn") at kernel/panic.c:200

#2  0xc00486cc in find_child_reaper (father=0xee8a8000) at kernel/exit.c:471

#3  0xc0048998 in forget_original_parent (father=0xee8a8000, dead=0xee8977a0) at kernel/exit.c:560

#4  0xc0048cd4 in exit_notify (tsk=0xee8a8000, group_dead=1) at kernel/exit.c:596

#5  0xc0049878 in do_exit (code=11) at kernel/exit.c:767

#6  0xc001dacc in oops_end (flags=1610613011, regs=0xee897b88, signr=11) at arch/arm/kernel/traps.c:313

#7  0xc001db7c in die (str=0xc0b17148 "Oops", regs=0xee897b88, err=23) at arch/arm/kernel/traps.c:333

#8  0xc002f960 in __do_kernel_fault (mm=0x0 <__vectors_start>, addr=0, fsr=23, regs=0xee897b88) at arch/arm/mm/fault.c:150

#9  0xc0b0dc00 in do_page_fault (addr=0, fsr=23, regs=0xee897b88) at arch/arm/mm/fault.c:392

#10 0xc0008798 in do_DataAbort (addr=0, fsr=23, regs=0xee897b88) at arch/arm/mm/fault.c:550

#11 0xc0b0c9d8 in __dabt_svc () at arch/arm/kernel/entry-armv.S:197

#12 0xc0b0c9d8 in __dabt_svc () at arch/arm/kernel/entry-armv.S:197

#13 0xc0b0c9d8 in __dabt_svc () at arch/arm/kernel/entry-armv.S:197


xxxxxxxxxxxxxxxxxxxxxxxxxxxx1

Unable to handle kernel NULL pointer dereference at virtual address 00000000

pgd = c0004000

[00000000] *pgd=00000000

Internal error: Oops: 17 [#1] SMP ARM

Modules linked in:

CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.0.0 #10

Hardware name: ARM-Versatile Express

task: ee8a8000 ti: ee896000 task.ti: ee896000

PC is at clcdfb_probe+0x44/0x2f0

LR is at clcdfb_probe+0x30/0x2f0

pc : []    lr : []    psr: 60000013

sp : ee897bd0  ip : 00000004  fp : 00000000

r10: 00000000  r9 : 00000000  r8 : 00000000

r7 : 00000000  r6 : 00000000  r5 : c0affb44  r4 : 00000000

r3 : 00000000  r2 : c10b37a8  r1 : 60000013  r0 : 0000001d

Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel

Control: 10c5387d  Table: 8ebcc059  DAC: 00000015

Process swapper/0 (pid: 1, stack limit = 0xee896210)

Stack: (0xee897bd0 to 0xee898000)

7bc0:                                     60000013 c10c8afc c10c37ac eea0ec00

7be0: 60000013 eea0ec64 c10c8b60 c10c8b60 60000013 00030003 60000013 00000000

7c00: 00000000 60000013 eea0ec64 60000013 eea0ec64 eea0ec64 60000013 eea0ec64

7c20: eea0ec64 eea0ec00 00000001 60000013 c10fb134 00000000 00000000 eea0ec64

7c40: 60000013 00000000 c0affb44 c0615614 c10fb134 eea0ec00 eebe7144 80000001

7c60: eebe71e0 eebe71e0 c10fb134 eebe7140 00000004 c0314138 00000001 c0b95370

7c80: 00000000 00000001 eea0ecc4 eea0ecc4 00000001 eea0ec00 00000000 c0b95370

7ca0: eea0ec00 eea0ec08 c10c37ac c10c37c4 c10c37c4 eea0ec00 eea0ec00 00000000

7cc0: 00000000 00000000 c0affb44 c068a554 c10c37c4 eea0ec00 eea0ec64 eea0ec64

7ce0: eea0ec64 c069d468 ffffffff eea0ec00 00000000 eea0ec64 eea0ec64 00000000

7d00: 00000001 c1107f6c c1107f6c eea0ec08 eea0ed3c ffffffff eea0ecc4 00000000

7d20: ffffffff eea0ecc4 00000000 00000001 eea0ecc4 eea0ecc4 00000000 c0b95378

7d40: eea0ec00 00000001 eea0ec00 00000000 00000000 00000000 c0affb44 c068a90c

7d60: eea0ec00 c10c37c4 eea0ec08 eea0ec00 c0b95488 eea0ec00 eea0ec34 00000000

7d80: ee95f9c0 c068ab90 c10c37c4 eea0ec00 00000000 eea0ec00 c10c37c4 ee897dc8

7da0: ee95f980 eea0ec00 c10c8a98 c10c37c4 ee95e774 c0687aa8 c068aac0 c10c37c4

7dc0: 00000000 c10c3aa8 ee95e75c ee95f9b4 eea0ec00 00000000 c10c8994 c068ac0c

7de0: ee95e770 c10c37c4 c0688858 c06888b0 c0b8e7f0 ee93ef80 00000000 c10c37c4

7e00: 000080d0 00000050 000000d0 00000050 eea7f180 c0b951c4 c10c3aa8 00000000

7e20: ef5d0620 c068bec4 00000000 c10c37c4 00000000 00000000 00000006 c0615a04

7e40: 00000000 c10c37c4 eeb31380 c0d57280 00000000 c0008dc8 ee891130 c007dc78

7e60: 000000a2 c0d5724c 00000006 c0d0eb30 000000a2 c0cd69f8 eefeb32a c0b12200

7e80: 000000d0 c10fa0ec 60000153 c10b1eec c10fa0ec c10fa0ec 00000000 00000001

7ea0: eefeb329 eefeb320 c0b1bb10 60000153 c10b1ef0 60000153 c10b1eec 00000000

7ec0: 60000013 60000013 60000013 a0000113 00000000 00000000 00000000 c0d0f40c

7ee0: 00000006 00000006 c0d0eb30 c10b1dc4 c10b1dc4 00000006 c10b1dc4 c0d901bc

7f00: ee8af6c0 c0d0f460 00000000 00000006 00000000 c0d0f4ac 00000000 c0d0f724

7f20: 2df17000 ee8a84c0 00000000 c10ac7e4 c10ac7e4 ee8a8000 eefc05c0 eefc05c0

7f40: 00000001 ee8a83f4 ee8a83f4 ee8a83f4 ee8a83f4 ee8a8000 60000153 c10b8e98

7f60: 60000153 ee8a842c ee8a842c ee8a842c 00000000 ee8a842c ee8a842c 60000153

7f80: 60000153 ee8a83f4 ee8a8000 ee8a8000 00000000 c0affb54 00000000 00000000

7fa0: 00000000 eefc05c0 00000000 c0014de0 00000000 00000000 00000000 00000000

7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000

[] (clcdfb_probe) from [] (amba_probe+0x11c/0x238)

[] (amba_probe) from [] (really_probe+0x210/0x424)

[] (really_probe) from [] (driver_probe_device+0x84/0xac)

[] (driver_probe_device) from [] (__driver_attach+0xd0/0x124)

[] (__driver_attach) from [] (bus_for_each_dev+0x90/0xd8)

[] (bus_for_each_dev) from [] (driver_attach+0x28/0x38)

[] (driver_attach) from [] (bus_add_driver+0x15c/0x2a8)

[] (bus_add_driver) from [] (driver_register+0x10c/0x17c)

[] (driver_register) from [] (amba_driver_register+0x88/0x98)

[] (amba_driver_register) from [] (amba_clcdfb_init+0x34/0x40)

[] (amba_clcdfb_init) from [] (do_one_initcall+0x68/0x190)

[] (do_one_initcall) from [] (do_initcall_level+0xc8/0x100)

[] (do_initcall_level) from [] (do_initcalls+0x1c/0x40)

[] (do_initcalls) from [] (do_basic_setup+0x28/0x34)

[1] [2] [3]
关键字:OK6410A  开发板  11  内核空间 引用地址:OK6410A 开发板 (八) 63 linux-5.11 OK6410A linux内核空间常见的异常情景及分析 kernel exception

上一篇:OK6410A 开发板 (八) 64 linux-5.11 OK6410A linux异常解析
下一篇:OK6410A 开发板 (八) 62 linux-5.11 OK6410A linux应用空间常见的异常情景及分析

推荐阅读最新更新时间:2024-11-11 05:14

美菱电器投11亿建空调生产基地代工小米空调
面对日趋激烈的行业竞争,以及格力、美的等行业巨头的高压,空调行业内其他中小企业可谓夹缝求生,也唯有靠扩大规模和提高科技含量来适应。美菱电器(000521,SZ)8月9日晚公告称,公司全资子公司长虹空调拟投入10.9亿元新建生产基地,在提升产能的同时,也将实现产业升级。   新增420万套空调产能   美菱电器公告称,公司全资子公司长虹空调计划投资10.9亿元在绵阳经济开发区实施搬迁及扩能升级项目,最终建设形成年产420万套空调的生产基地。   对于此次投资的目的,美菱电器称:一方面,长虹空调原租用厂房、办公楼等因绵阳市城市规划要求,现已无法继续租用且需搬离;另一方面,结合目前空调行业变革趋势,项目有利于进一步提高长虹空调制造能力,
[手机便携]
OK6410A 开发板 (八) 102 linux-5.11 OK6410A glibc提供的mmap的四种用途之一
OK6410A 开发板 (八) 102 linux-5.11 OK6410A glibc提供的mmap的四种用途之一 共享匿名映射两种方式 当使用参数 fd = -1 且 flags = MAP_ANONYMOUS | MAP_SHARED 时,创建的mmap 映射是共享匿名映射. 共享匿名映射让相关进程共享一块内存区域,通常用于父子进程之间的通信. 创建共享匿名映射有如下两种方式,这两种方法最终都调用shmem 模块来创建共享匿名映射 1. fd = -1,且 使用这个文件句柄来创建mmap(lags = MAP_ANONYMOUS | MAP_SHARED) . 在这种情况下,do_mmap_pgoff()- mma
[单片机]
基于AX22001/11的嵌入式Wi-Fi系统设计方案
引 言 随着物联网技术的发展,众多的嵌入式系统均有增加Wi-Fi特性的需求,比如利用智能手机内建的Wi-Fi来遥控各种嵌入式设备,使支持机器对机器的通信(M2M)具有物联网通讯功能的嵌入式网络解决方案,而这些都将成为未来的主流需求。而在进行产品设计时,考虑到成本等因素,可以选用ASIX电子的单芯片TCP/IP处理器AX22001/11来进行Wi-Fi系统的设计。AX22001/11处理器可提供具有成本优势的嵌入式网络解决方案,以用于需要简单、易用、低成本接入有线/无线局域网或互联网的各类嵌入式应用领域。 1 单芯片TCP/IP微处理器AX22001/11 1.1 AX22001/11的基本性能 AX22001和
[单片机]
基于AX22001/<font color='red'>11</font>的嵌入式Wi-Fi系统设计方案
苹果推送iOS 11第六测试版:图标新设计 地图有彩蛋
    新浪手机讯 8月15日上午消息,苹果公司在今日凌晨推送了iOS 11系统第六个测试版,除了修复Bug,新版本最大的改变是重新设计了应用图标。   在iOS 11上一个版本中,苹果对“相机”、“设置”的图标进行了微调,而在新版本中,“App Store”、“地图”、“时钟”的设计也发生了改变。 “App Store”、“地图”、“时钟”图标有了新设计   App Store的图标自2008年后就没有什么改变,而在这次的iOS 11中它变得更加扁平化了。从之前的铅笔、毛笔、尺子叠放变成了三段线条的交错,熟悉iOS系统的用户一定不会认错,因为新图标依旧保留了之前的元素。   地图图标的改变,对于熟悉苹果公司的用户来说应该是一个彩
[手机便携]
iOS 13全系越狱发布:iPhone 6s到iPhone 11都支持
前不久,Pwn20wnd团队发布unc0ver v4.0.0,实现对A12~A13处理器iOS 13设备的越狱支持,换言之,iPhone XS系列、iPhone XR、iPhone 11系列、现款iPad Pro/iPad Air/iPad mini均“解锁金身”。   最新上线的v4.2版本更进一步,将A9~A11处理器(iPhone 6s到iPhone X)设备纳入进来,换言之,所有能够升级到iOS 13系统(iOS 13.3及以下)的设备都能越狱了。   当然,更早时候,Checkra1n也已支持iPhone 6s到iPhone X基于iOS 13的越狱,从越狱效果上看,两者没有差别。不过,Checkra1n首次越
[手机便携]
17个月后 全球511家Apple Store同时营业
由于疫情的影响,在过去的一年多时间里,全球各地的Apple Store都面临着不同的情况,有些店铺一直正常营业,而有些店铺则不得不面临暂停营业。 自疫情爆发以来,健康和安全预防措施、地区封锁以及反复出现的疫情都对苹果零售运营构成了挑战。 根据美国时间周二上午对苹果网站上所有门店位置的检查,全球所有511家活跃的苹果门店今天都在运营,虽然许多门店营业的“程度”不太一样。 这也标志着,2021年6月15日是全球Apple Store同时营业的第一天,历时17个月。 2020年初,第一家Apple Store因为疫情而关闭。而从2020年3月14日开始,大中华地区以外的每家苹果店都关闭了。 据悉,苹果未来仍可能根据当地的
[手机便携]
全面提升?一探究竟!HTC U11+评测
   就在上个月我们评测了一款HTC U11手机,还记得吗?我在文中说HTC U11手机已经弯道赶上了安卓手机一流水平,这一点毫不夸张,HTC U11的水漾玻璃设计和优秀的拍照能力至今让我印象深刻。   到了2017年中旬,18:9“全面屏”的概念也席卷整个手机圈,让许多手机厂商不得不提前进入18:9时代。就在这个月初,HTC也跟随潮流正式发布了HTC U11+,笔者也在第一时间拿到这款手机并当主力机使用了一段时间,那么这款主打屏占比、拍照能力的HTC旗舰机到底如何?今天让我们一探究竟!   水漾玻璃 无愧光影   HTC U11+的背面称得上是这款手机的最大亮点,与前代相同,背面依然为3D水漾玻璃设计。整个背面像水滴一样覆盖在
[手机便携]
市场需求劲扬 802.11ac芯片价格下降20%
    802.11ac晶片单价已开始松动。高阶智慧型手机、高阶笔记型电脑、无线网路接取点(AP)、路由器(Router)、智慧电视(Smart TV)等终端装置导入802.11ac晶片的需求大量涌现,引爆半导体厂激烈价格战,并带动802.11ac晶片价格下滑。 安捷伦(Agilent)电子量测事业群应用工程部协理陈俊宇表示,随着宏达电新HTC One和三星(Samsung)Galaxy S4相继搭载802.11ac晶片,更多智慧型手机品牌商亦将跟进支援,藉此增加产品卖点,预期下半年将有众多配备802.11ac功能的智慧型手机轮番上阵。此外,高阶笔记型电脑、家电等品牌商为突显旗下产品的功能差异,也已计划于新一代产品导入802.11a
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved