Crash
Bad RIP 值是什麼意思?
在常見的呼叫跟踪中,我們可以檢查 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
機器程式碼指令最終會嘗試返回錯誤的地址。