在一个常见的调用跟踪中,我们可以检查RIP以知道哪些代码崩溃了。
但在某些调用跟踪中,它显示了不良的RIP值:
[ 86.414392] RIP: 0010: (null)
[ 86.415351] Code: Bad RIP value.例:
https://bugzilla.kernel.org/show_bug.cgi?id=202827
Bad RIP value是什么意思?
发布于 2020-12-03 14:18:20
"RIP“是CPU的64位指令指针寄存器。它的值决定CPU将从中获取要执行的下一条指令的地址。
(在x86体系结构中,原来的16位指令指针被(现在仍然是)称为IP;当体系结构扩展到32位时,会添加E前缀来注册名称以表示32位宽的访问,而在x86_64中,R前缀被添加以指示完整的64位访问。
“坏RIP值”意味着指令指针寄存器指向不包含可执行内存的地址。这表明错误,例如在尝试使用指针之前没有正确初始化指向函数的指针,或者可能在堆栈中覆盖函数的返回地址,因此RET机器代码指令最终会试图返回错误的地址。
https://unix.stackexchange.com/questions/622673
复制相似问题