从虚拟化前端Bug学习分析Kernel Dump( 五 )
承
在 symbol 安装完之后 , 就可以通过 crash 载入 corefile 和 symbol 了 。
通过 crash 载入 corefile 的时候 , crash 会自动输出一段信息 , 这段信息包含了系统的一些基本信息 , 如 CPU、内存、架构等 。 如果后面分析的时候还想看这部分信息 , 可以通过 sys 命令来查看 。 这里我们需要重点关注的信息是PANIC: \"kernel BUG at drivers/virtio/virtio_ring.c:278!\"
这个信息告诉我们 , 系统触发了位于 drivers/virtio/virtio_ring.c 这个文件的第 278 行的 Bug , 这里系统之所以知道是 Bug , 是因为编写这段代码的大佬在这里埋了一个检测的点 , 这个待会我们会在源码里看到 。
在看完上面的信息后 , 我的习惯是先看看当时系统在做什么 , 通过 bt 命令可以看到当时的调用堆栈:
上图打印的信息包含函数调用堆栈和各寄存器的值 , 这里挑几个比较重要的寄存器讲一下 。 RIP 指向正在执行的指令地址 , 在发生宕机之前 , 系统最后执行的函数是 virtqueue_add , 导致宕机的语句位于 virtqueue_add+1186 。 根据 x86_64 Linux 系统的函数调用约定 , RDI RSI RDX RCX R8 R9为传入函数的前六个参数 , 如果参数超过六个 , 第七个以上的参数将通过栈传递 。 注意在实际函数执行的过程中 , 寄存器的值可能会改变 。
推荐阅读
- 仙剑2|经典游戏《仙剑2》苏媚的梦蛇才是最大BUG,效果叠加一招带走千叶
- 女孩|第五人格:小女孩堪称“BUG女王”,用她对战,你千万要小心!
- 炉石传说|炉石天梯平衡补丁曝光,任务法锁喉贼惨遭大削,BUG德无了!
- 精灵宝可梦|《宝可梦BDSP》偷跑,玩家发现游戏存在大量bug
- 谛听|梦幻西游:又出新BUG了,同一个角色能在两个客户端上同时登陆
- 集合啦动物之森|《集合啦动物之森》新增9千多个物品! DLC有BUG
- 炉石传说|玩游戏还是玩Bug?炉石新版本更出一堆BUG,玩家:暴雪毁灭吧!
- 炉石传说|炉石传说标准战士胜率第一,天梯开始硬碰硬,而bug是永恒的主题
- 磨刀石|魔兽怀旧服:美服盗贼新技巧!磨刀石BUG常驻300攻强,别上毒药了
- 李延年|米哈游进军Steam第一枪哑火!蓝屏、限服加BUG,崩坏3好评率仅13%