首页 > 其他分享 >Kernel panic 堆栈信息怎么看

Kernel panic 堆栈信息怎么看

时间:2023-05-23 10:35:09浏览次数:40  
标签:Kernel snd do 00 0000000000000000 堆栈 panic

Kernel panic 是指 Linux 内核遇到了无法继续执行的致命错误,此时会在屏幕上输出一些错误信息,其中就包括堆栈信息。堆栈信息是指发生错误时 CPU 执行的代码路径,可以通过堆栈信息来定位错误发生的位置。

通常,堆栈信息会以类似下面的形式输出:

Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
CPU: 0 PID: 1 Comm: init Not tainted 4.4.0-31-generic #50-Ubuntu
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
 ffffffff813f7ab7 ffff8800363c7e00 ffffffff817e0c5d 0000000000000000
 ffff8800363c7e38 ffff8800363c7e20 ffffffff8108124c ffff8800363c7e58
 ffffffff810812a2 ffffffff81862f78 ffffffff81862f68 ffffffff81862f68
Call Trace:
 [<ffffffff813f7ab7>] dump_stack+0x63/0x82
 [<ffffffff817e0c5d>] panic+0xc8/0x1fe
 [<ffffffff8108124c>] do_exit+0x6d4/0x6e0
 [<ffffffff810812a2>] do_group_exit+0x42/0xa0
 [<ffffffff8108a300>] get_signal+0x2f8/0x5c0
 [<ffffffff81015eb5>] do_signal+0x55/0x6d0
 [<ffffffff8108f9cc>] ? __fget_light+0x3c/0x50
 [<ffffffff81011c2b>] do_notify_resume+0x9b/0xc0
 [<ffffffff817fba0c>] int_signal+0x12/0x17

堆栈信息的最后一行是 Call Trace:,接下来的几行是函数调用栈,每一行都是一个函数调用,最上面的是发生错误的函数,最下面的是最开始的函数。

在上面的例子中,发生错误的函数是 panic+0xc8/0x1fe,它是由函数 do_exit+0x6d4/0x6e0 调用的,而 do_exit 又是由函数 do_group_exit+0x42/0xa0 调用的,以此类推,直到最下面的 int_signal+0x12/0x17,它是被中断处理程序调用的。

通过分析堆栈信息,可以找到发生错误的函数及其调用关系,从而定位错误原因。

实例

Kernel Panic 日志如下:

[    4.575208] intel_rapl: no valid rapl domains found in package 0
[    4.585046] intel_rapl: no valid rapl domains found in package 0
[    5.528975] general protection fault: 0000 [#1] SMP 
[    5.531157] Modules linked in: ppdev crc32_pclmul ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper cryptd pcspkr virtio_balloon snd_hda_codec_generic sg parport_pc parport snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer snd soundcore i2c_piix4 nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c sr_mod cdrom ata_generic pata_acpi virtio_blk qxl syscopyarea virtio_console sysfillrect sysimgblt virtio_net drm_kms_helper ttm crct10dif_pclmul crct10dif_common ata_piix crc32c_intel drm serio_raw libata virtio_pci virtio_ring i2c_core virtio floppy dm_mirror dm_region_hash dm_log dm_mod
[    5.556243] CPU: 1 PID: 1791 Comm: mktemp Tainted: G        W      ------------   3.10.0-327.el7.x86_64 #1
[    5.559680] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
[    5.562122] task: ffff8801f3da2280 ti: ffff8800bb998000 task.ti: ffff8800bb998000
[    5.564988] RIP: 0010:[<ffffffff811dc33e>]  [<ffffffff811dc33e>] vfs_open+0x5e/0x70
[    5.567942] RSP: 0018:ffff8800bb99bcf8  EFLAGS: 00010206
[    5.569977] RAX: ffff8801f7fd4180 RBX: ffff8800bb99bf28 RCX: 63616e695f736678
[    5.572568] RDX: ffff8800bb9c0300 RSI: ffff8801f4252f00 RDI: ffff8801f7fd4180
[    5.575107] RBP: ffff8800bb99bcf8 R08: ffff8801f4252f00 R09: 0000000000000000
[    5.577635] R10: ffff8801f7fd4180 R11: ffffea0000dade40 R12: 00000000000080c2
[    5.580186] R13: ffff8800bb99bdf0 R14: 0000000000000000 R15: ffff8800bb99be50
[    5.582652] FS:  00007f14f380e740(0000) GS:ffff8801ffd00000(0000) knlGS:0000000000000000
[    5.585344] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    5.587257] CR2: 00007f14f2771fb0 CR3: 0000000035ffe000 CR4: 00000000003406e0
[    5.589638] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[    5.592064] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[    5.594334] Stack:
[    5.594993]  ffff8800bb99bda8 ffffffff811eb90d ffff880035dbeaf8 ffff8800bb99bdc0
[    5.597430]  ffff8800bb99bd48 ffff8801f3da2280 00000101f3da2280 0000000000000000
[    5.599903]  0000000000000000 ffff8801f1478000 ffff8800bb99bde4 ffff8801f7fd2a80
[    5.602303] Call Trace:
[    5.603041]  [<ffffffff811eb90d>] do_last+0x1ed/0x1270
[    5.604554]  [<ffffffff811ee672>] path_openat+0xc2/0x490
[    5.606124]  [<ffffffff811efe3b>] do_filp_open+0x4b/0xb0
[    5.607660]  [<ffffffff811fc9c7>] ? __alloc_fd+0xa7/0x130
[    5.609228]  [<ffffffff811dd7e3>] do_sys_open+0xf3/0x1f0
[    5.610813]  [<ffffffff811dd8fe>] SyS_open+0x1e/0x20
[    5.612269]  [<ffffffff81645909>] system_call_fastpath+0x16/0x1b
[    5.614003] Code: f6 e8 27 fc ff ff 5d c3 0f 1f 44 00 00 48 8b 51 20 48 85 d2 74 d4 48 8b 8a d0 00 00 00 48 85 c9 74 c8 48 89 f2 48 89 c7 4c 89 c6 <ff> d1 5d c3 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 
[    5.621542] RIP  [<ffffffff811dc33e>] vfs_open+0x5e/0x70
[    5.622799]  RSP <ffff8800bb99bcf8>
[    5.623642] ---[ end trace ab3a1c6a69ac5150 ]---
[    5.624735] Kernel panic - not syncing: Fatal exception
[    5.626489] drm_kms_helper: panic occurred, switching back to text console

  • 分析

“CPU: 1 PID: 1791 Comm: mktemp” ,由此可知导致panic的进程是 mktemp。

在 Linux 内核引导过程中,没有 mktemp 进程参与。mktemp 是一个用户态的工具,用于创建一个唯一的临时文件名。它的作用是在指定的目录中创建一个临时文件,文件名可以自动生成,保证不重复。这个过程需要使用到随机数生成算法,确保文件名的唯一性。

从函数调用栈可知,导致panic的函数是“path_openat+0xc2/0x490”。

标签:Kernel,snd,do,00,0000000000000000,堆栈,panic
From: https://www.cnblogs.com/dewan/p/17422553.html

相关文章

  • Linux Kernel最新版本 4.0 正式发布啦
    近日由GregKroah-Hartman宣布了免费开源系统Linux Kernel4.0正式稳定版发布啦!Linux内核正式进入4.0全新内核时代,LinuxKernel4.0最值得关注的特性应该就是内核补丁无需重启系统,该技术基于Ksplice实现。 基本介绍长期支持版内核针对的是嵌入式设备,嵌入式设......
  • Linux Kernel最新版本 4.0 正式发布啦
    近日由GregKroah-Hartman宣布了免费开源系统Linux Kernel4.0正式稳定版发布啦!Linux内核正式进入4.0全新内核时代,LinuxKernel4.0最值得关注的特性应该就是内核补丁无需重启系统,该技术基于Ksplice实现。 基本介绍长期支持版内核针对的是嵌入式设备,嵌入式设......
  • Linux Kernel最新版本 4.0 正式发布啦
    近日由GregKroah-Hartman宣布了免费开源系统Linux Kernel4.0正式稳定版发布啦!Linux内核正式进入4.0全新内核时代,LinuxKernel4.0最值得关注的特性应该就是内核补丁无需重启系统,该技术基于Ksplice实现。 基本介绍长期支持版内核针对的是嵌入式设备,嵌入式设......
  • kernel pwn 从 0.5 到 0
    xman2020-level1注册了一个baby驱动,在sub_0中存在栈溢出,可以将0x100的用户数据copy到内核栈上,缓冲去到rbp距离为0x80。什么保护没开直接ret2user......
  • 【2023最新】小白Anaconda+Python+Jupyter环境安装教程+kernel安装
    目录下载Anaconda安装包安装配置Anaconda环境测试是否安装成功为anaconda添加国内源创建环境JupyterNotebook启动Jupyter更改默认工作目录在jupyter中使用conda中安装的虚拟环境参考博客下载Anaconda安装包历史版本(最新版本可能安装不了旧版Python)https://repo.anaconda.com/......
  • 安装ESXi遇到Relocating modules and starting up the kernel的处理
    原文https://blog.csdn.net/weixin_33857679/article/details/85666367https://blog.csdn.net/qq_54947566/article/details/123008779在一些Dell较旧的服务器上安装ESXi5.x时,会遇到卡在Relocatingmodulesandstartingupthekernel过不去的问题.比如我装的这台CS24VSS.......
  • global_size local_size clEnqueueNDRangeKernel OpenCL
    clEnqueueNDRangeKernel填入的形参:global_sizelocal_size global_size控制最终的workgroup数量,而且会平均分配到几个core上,比如global_size=8 然后有2个core,那么每个core分到4个wglocal_size控制每个core分到几个workitem,每个.cl文件里,已经hardcoding了一个workitem计......
  • 解决 VirutalBox 安装 Alpine Linux 出现 Kernel Panic 的问题
    问题如图,使用默认配置安装AlpineLinux时总是会启动都启动不了,找了半天后终于在官方论坛上找到原因了。解决在设置里分配大于1个的cpu就行,如图我这里给的是2个,分配完毕后重新启动就正常了......
  • Java NullPointerException 没有打印堆栈
    ref  https://www.bbsmax.com/A/obzbgx41JE/ 周五在公司搭好的ELK上查看日志,组长让看看其中NullPointerException出现很多的原因。通过NullPointerException搜索,点看其中一个查看,发现异常的信息就一行java.lang.NullPointerException,并没有堆栈信息。看了几个都没有,然后翻......
  • kernel module编程(四):设备属性和与上层应用的联系
     本文也即是《LinuxDeviceDrivers》一书第三章CharDrivers的读书笔记之二。 这部分开始有些觉得阴涩难懂。我上网去查,没能找到这本书的Example的例子,所以决定还是靠自己。我先写一个应用层的例子,通过这个例子来触发kernelmodule的一些操作,这样比较容易理解。#in......