Crash

Bad RIP 值是什麼意思?

  • December 3, 2020

在常見的呼叫跟踪中,我們可以檢查 RIP 以了解哪些程式碼崩潰了。

但在某些呼叫跟踪中,它顯示 Bad RIP 值:

[ 86.414392] RIP: 0010: (null)
[ 86.415351] Code: Bad RIP value.

前任:

https://bugzilla.kernel.org/show_bug.cgi?id=202827

是什麼Bad RIP value意思?

“RIP”是 CPU 的 64 位指令指針寄存器。它的值決定了 CPU 將從哪個地址獲取下一條要執行的指令。

(在 x64 架構中,最初的 16 位指令指針被(現在仍然是)稱為 IP;當架構擴展到 32 位時,在寄存器名稱中添加了 E 前綴以指示 32 位寬訪問,並且使用x86_64,添加了 R 前綴以指示完整的 64 位訪問。)

“壞 RIP 值”意味著指令指針寄存器指向的地址不包含可執行記憶體。這表明錯誤,例如在嘗試使用函式之前未正確初始化指向函式的指針,或者可能在堆棧中覆蓋函式的返回地址,因此RET機器程式碼指令最終會嘗試返回錯誤的地址。

引用自:https://unix.stackexchange.com/questions/622673