一般保護錯誤
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
此條目翻譯品質不佳,原文在en:General protection fault。 |
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Unrecoverable_Application_Error.png/220px-Unrecoverable_Application_Error.png)
一般保護錯誤(英語:General protection fault,縮寫:GPF)是在英特爾x86和AMDx86-64架構和其它架構中的一種錯誤(或者一種中斷),指正在運行的程序(內核或用戶態程序)違反處理器架構中的保護措施的情況。此機制最初在1986年英特爾80386處理器的程序員參考手冊第9.8.13節中描述。一般保護錯誤通過中斷(向量值13)實現。
若處理器偵測到保護違例,會停止當前代碼的執行,並發出GPF中斷。大多數情形下,操作系統會簡單地關閉觸發GPF的進程,告知用戶,並繼續執行其它程序。但如果操作系統沒能捕獲這一錯誤(如在操作系統從GPF中斷處理例程中返回前發生了另一次違例),處理器會發出雙重錯誤(中斷向量值8,一種常見的藍屏情形)。如果再次發生了違例,則處理器會關閉(參見三重錯誤),其後只會響應復位(即按下機器的復位按鈕)、啟動(重新啟動系統)或不可屏蔽中斷(除非其之前在處理此類中斷時出錯)。
操作系統行為
在一些版本的Microsoft Windows中,一般保護錯誤確實會被報告為「一般保護錯誤」。
但在大部分版本中,Windows會給出如下錯誤:
- Unrecoverable Application Error.(Windows 3.0)
- [程序] has caused a General Protection Fault in module [模塊] at [內存地址].(Windows 3.1和3.1x)
- 該程序執行了非法操作,即將關閉。(Windows 9x & Windows NT 4.0)
- [程序]產生了錯誤,會被Windows關閉。(Windows 2000)
- [程序] has caused an error in [模塊]. [程序] will now close.(Windows Me)
- [程序/描述]發生問題,必須關閉。謹此致歉。(Windows XP)
- [程序/描述]已停止工作。(Windows Vista和Windows 7)
在類Unix的系統中,此錯誤會被分別報告(比如Linux下的段錯誤等)。
|