这些 Linux 内核 Oops 字段的含义是什么?

2024-01-02

我在开发人员的生活中已经遇到过一些 Oops,虽然我熟悉可以从这些 Oops 中检索到的一些信息,但仍然有一些信息我无法理解,因此无法用来解决问题。

下面您将找到一个 Oops 示例,我将描述我可以从中推断出什么。然后,我会问剩下的信息可以告诉我什么关于这个问题的信息。

[  716.485951] BUG: unable to handle kernel paging request at fc132158
[  716.485973] IP: [<fc1936e7>] ubi_change_vtbl_record+0x87/0x1c0 [ubi]
[  716.485986] *pdpt = 00000000019e6001 *pde = 000000002c558067 *pte = 0000000000000000 
[  716.485997] Oops: 0002 [#1] SMP 
[  716.486004] Modules linked in: ubi(O) mtdchar nandsim nand mtd nand_ids nand_bch bch nand_ecc bnep rfcomm bluetooth parport_pc ppdev lp parport nfsd nfs_acl auth_rpcgss nfs fscache lockd sunrpc binfmt_misc dm_crypt snd_hda_codec_hdmi snd_hda_codec_analog kvm_intel snd_hda_intel snd_hda_codec snd_hwdep kvm snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event hid_generic snd_seq cdc_acm snd_timer snd_seq_device mei tpm_tis snd mac_hid serio_raw soundcore lpc_ich snd_page_alloc microcode coretemp usbhid hid nouveau usb_storage ttm drm_kms_helper drm floppy e1000e i2c_algo_bit mxm_wmi video wmi
[  716.486128] Pid: 3994, comm: ubimkvol Tainted: G           O 3.8.0-rc3+ #3 LENOVO 6239AS8/LENOVO
[  716.486136] EIP: 0060:[<fc1936e7>] EFLAGS: 00010246 CPU: 0
[  716.486144] EIP is at ubi_change_vtbl_record+0x87/0x1c0 [ubi]
[  716.486151] EAX: 000000ac EBX: eb5ea000 ECX: 0000002b EDX: 00000000
[  716.486157] ESI: eb4d1d74 EDI: fc132158 EBP: eb4d1d40 ESP: eb4d1d20
[  716.486164]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[  716.486170] CR0: 8005003b CR2: fc132158 CR3: 27542000 CR4: 000407f0
[  716.486176] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[  716.486183] DR6: ffff0ff0 DR7: 00000400
[  716.486188] Process ubimkvol (pid: 3994, ti=eb4d0000 task=ec01d9b0 task.ti=eb4d0000)
[  716.486195] Stack:
[  716.486199]  e755f000 eb4d1d2c c11cad11 eb4d1d34 eb543c00 eb5ea000 00000000 eb4d1e20
[  716.486215]  eb4d1e30 fc195412 e755f000 fc1adf01 eb5ea26c 00000002 0000009e eb5ea480
[  716.486232]  00000002 e755f22c e755f2ac e755f000 eb4d1d74 2a000000 01000000 00000000
[  716.486248] Call Trace:
[  716.486257]  [<c11cad11>] ? sysfs_create_file+0x21/0x30
[  716.486266]  [<fc195412>] ubi_create_volume+0x4b2/0x790 [ubi]
[  716.486277]  [<fc19967a>] ubi_cdev_ioctl+0x5da/0xac0 [ubi]
[  716.486285]  [<c117202a>] ? link_path_walk+0x5a/0x7d0
[  716.486294]  [<fc1990a0>] ? vol_cdev_ioctl+0x440/0x440 [ubi]
[  716.486842]  [<c1177e12>] do_vfs_ioctl+0x82/0x5b0
[  716.487703]  [<c1171ced>] ? final_putname+0x1d/0x40
[  716.488564]  [<c1171ced>] ? final_putname+0x1d/0x40
[  716.489422]  [<c1171ced>] ? final_putname+0x1d/0x40
[  716.489891]  [<c1171eb4>] ? putname+0x24/0x40
[  716.489891]  [<c1167239>] ? do_sys_open+0x169/0x1d0
[  716.489891]  [<c11783b0>] sys_ioctl+0x70/0x80
[  716.489891]  [<c16205cd>] sysenter_do_call+0x12/0x38
[  716.489891] Code: ac 00 00 00 03 bb c8 04 00 00 f7 c7 01 00 00 00 0f 85 ee 00 00 00 f7 c7 02 00 00 00 0f 85 ca 00 00 00 89 c1 31 d2 c1 e9 02 a8 02 <f3> a5 74 0b 0f b7 16 66 89 17 ba 02 00 00 00 a8 01 74 07 0f b6
[  716.489891] EIP: [<fc1936e7>] ubi_change_vtbl_record+0x87/0x1c0 [ubi] SS:ESP 0068:eb4d1d20
[  716.489891] CR2: 00000000fc132158
[  716.516453] ---[ end trace 473b15a7780e19ea ]---

看来内核想要访问错误的页面。现在,

  • Oops 代码 0002 告诉我,它是在尝试在用户模式下读取某些内容时发生的。
  • 指令指针位于ubi_change_vtbl_record,这意味着有问题的指令位于该函数中。
  • 我可以从以下位置推断出导致故障函数的路径 调用跟踪(从进程启动的 ioctlubimkvol)

从那里,“堆栈”是任务的原始堆栈的转储吗?我可以看到提到的一些值也是在调用跟踪中找到的函数地址。然后,我得到了像这样的漂亮值EAX, EBX ... DR7。我认为它们是CPU寄存器,但我仍然不知道它们到底是什么。

最后,下面这行让我迷失了:

[  716.485986] *pdpt = 00000000019e6001 *pde = 000000002c558067 *pte = 0000000000000000

什么是 pdpt、pde 和 pte ?我觉得它们是有关页面错误的信息,但经过一番谷歌搜索后我无法检索到更多信息。


是的,EAX等都是32位x86处理器寄存器。 pdpt(页目录指针表)、pde(页目录项)和pte(页表项)都是分页结构。

IP(也称为 32 位处理器的 EIP 或 64 位处理器的 RIP)是 Oop 时的指令指针。

该堆栈是该处理器的原始堆栈。每个处理器都有自己的堆栈。请注意,在此架构上,堆栈向下增长(地址以 0xfxxxxxx 开头)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这些 Linux 内核 Oops 字段的含义是什么? 的相关文章

随机推荐

  • 需要调用curl_multi_exec多少次?

    我使用curl multi 和multi 将文件上传到不同的服务器 每个服务器都有多个需要上传的文件 所以我对每个服务器都有一个curl multi请求 当我执行curl multi句柄时 我只是在同一个循环中执行所有curl multi句
  • SVG 水填充动画

    我要获得一个擦拭动画 看起来就像水在水滴内充满 目前它是一个正方形 在水滴标志上方有一个波浪动画 它正确地执行了波浪动画 但我无法让它留在水滴内并填充 我越来越接近了 但我仍然需要至少将实际徽标放在圆圈内 我的进步
  • 尝试执行“bin/mkdistro.sh -DskipTests”时出现 Oozie 错误

    尝试安装 oozie 4 0 1 以下http www thecloudavenue com 2013 10 installation and configuration of html http www thecloudavenue co
  • 已标记我的主页的帖子不会通过 API 调用显示

    我为我的服务创建了一个 Facebook 页面here http www facebook com pages Rowz 265813166783408 该页面的名称是 Rowz 该页面上有一些用户在自己的墙上的帖子中标记了该页面的帖子 这
  • PHP 读取最快的序列化数据格式

    我有一个 PHP 前端和一个 C 后端 我需要能够将一组名称发送到前端 对于 PHP 来说 哪种序列化格式读取最有效 最快 示例数据 group1 name1 3923 name2 9879 name3 8944 group2 name5
  • Oracle 星期几问题[重复]

    这个问题在这里已经有答案了 然而 下面的语句返回正确的星期几 当 case 子句中使用表达式时 它不起作用 Select to char SYSDATE Day Dwo case when to char SYSDATE Day Thurs
  • 如何查找包中的活动名称?安卓。亚行外壳

    我可以获得 Android 上安装的所有软件包的列表 但要打开应用程序 我需要活动名称和软件包名称 有没有办法通过 adb shell 列出包中的所有活动 从手机中提取的 Android 清单文件没有帮助 因为它是文件的二进制版本 因此不包
  • array_push 不会给出数组,而是打印出整数值

    我正在使用 array push 编写一个非常简单的 php 程序 但根据文档它无法正常工作 每次我尝试打印最终数组的值时 它都会给我一个整数 有人可以帮我解决这个问题吗 这是我的代码 这是它的输出 9 先谢谢您的帮助 array push
  • Nginx 不将 Cookie 传递给代理

    我有一个 cookie 设置适用于所有子域 example com 我有 nginx ajax 调用通过 proxy pass 但 cookie 不会保留 我的配置如下 server listen 80 server name www ex
  • 如何在 Emacs/elisp 风格的正则表达式中用“\(”替换“(”?

    问题如标题 更具体地说 我厌倦了打字 等等 每次我想在 Emacs 的 交互式 正则表达式函数中使用括号 更不用说 在代码中 所以我写了类似的东西 defadvice query replace regexp before my query
  • MvvmCross Xamarin.Forms 模态对话框

    我只是想用 MvvmCross 制作我的第一个应用程序 但我的应用程序已经遇到了问题 并且在网络上找不到任何相关内容 我想在支持的设备 例如 iPad 上打开特定页面作为模式对话框 对于我的非 MvvmCross 应用程序 我使用 Rg P
  • 如何使用 Bootstrap 3 模态来实现 JavaScriptalert()?

    如果我的 HTML 标头中的 JavaScript 代码中有警报 例如 有没有办法可以使用 Bootstrap 中的模式窗口而不是浏览器的本机警报窗口 如果是这样 有人可以向我展示上面一行代码的简单示例吗 模式应该只有一个 确定 按钮 没什
  • p5.j​​s 中的上下移动(并使用 WASD)

    在p5中如何使用键盘让角色移动 我的意思是 不仅仅是向左和向右 我还想使用 WASD 键 我用过这个 形状作为占位符 https editor p5js org TheDiamondfinderYT present 8ZqV2LsVB ht
  • 如何用Pickle存储自我价值?

    class Player def init self self money 0 self level 0 self xp 0 self xp until level 20 self taxi car Cabbie self busines
  • 在 Jenkins 中配置 GitLab 存储库

    我正在尝试配置 Jenkins 在 Windows Server 2008 上运行 以连接到 GitLab 6 0 存储库 在 Linux 机器上 从我的本地 Windows 盒子中 我可以使用 SSH URL 来克隆我的 GitLab 服
  • 将参数传递给另一个可变参数函数

    有没有什么方法可以让这段代码按预期编译和工作 而无需求助于va list stuff include
  • Android LVL(许可服务)非常慢! ——解决方案?异步?

    我在网上查了一下 看到其他一些帖子抱怨 Android 许可 LVL 库如何缓慢 但没有解决方案 在 HTC Thunderbolt 全新手机 上 它会使测试应用程序的启动时间延迟 3 5 秒以上 有人对异步调用这个库有任何经验或想法吗 其
  • 如何让 Eclipse 自动生成新 Java 类的 main 方法?

    有谁知道我的 Eclipse 不预加载的原因 public static void main String args 当我创建一个新课程时 我该怎么做才能让它自动出现 Type main and press ctrl space The e
  • 提取 Windows 中任何文件的缩略图

    从任何文件 而不仅仅是不同大小的图像 中提取缩略图的最有效方法是什么 我已经查看了所有内容 其中最有希望的是 Windows API ShellFile 但它似乎没有正确安装 我使用的是Windows 7 不久前 我编写了一个 Thumbn
  • 这些 Linux 内核 Oops 字段的含义是什么?

    我在开发人员的生活中已经遇到过一些 Oops 虽然我熟悉可以从这些 Oops 中检索到的一些信息 但仍然有一些信息我无法理解 因此无法用来解决问题 下面您将找到一个 Oops 示例 我将描述我可以从中推断出什么 然后 我会问剩下的信息可以告