簡介
本文說明軟體強制崩潰的最常見原因,並說明您必須收集資訊才能進行疑難排解。如果您針對軟體強制崩潰開啟TAC服務請求,將會要求您收集的資訊對於解決該問題至關重要。
必要條件
需求
本文檔的讀者應瞭解以下主題:
採用元件
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
慣例
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
當路由器檢測到無法恢復的嚴重錯誤,並重新載入自己以便不傳輸損壞的資料時,就會發生軟體強制崩潰。絕大多數軟體強制崩潰是由Cisco IOS®軟體錯誤所導致,雖然某些平台(例如舊的Cisco 4000)可能將硬體問題報告為軟體強制崩潰。
如果尚未重新通電或手動重新載入路由器,show version命令的輸出會顯示以下資訊:
Router uptime is 2 days, 21 hours, 30 minutes
System restarted by error - Software-forced crash, PC 0x316EF90 at 20:22:37 edt
System image file is "flash:c2500-is-l.112-15a.bin", booted via flash
如果您的Cisco裝置輸出了show version命令,則可以使用Cisco CLI Analyzer(僅供已註冊客戶使用)顯示潛在問題和修正程式。
可能原因
下表說明軟體強制崩潰的可能原因:
原因 |
說明 |
監視器超時 |
處理器使用計時器以避免無限循環,並使路由器停止響應。在正常操作中,CPU會定期重置這些計時器。否則將導致系統重新載入。報告為軟體強制崩潰的監視程式超時與軟體相關。有關其他型別的監視器超時的資訊,請參閱對監視器超時進行故障排除。重新載入之前,系統停滯在環路中。因此,堆疊追蹤軌跡不一定相關。您可以在控制檯日誌的以下行中識別這種型別的軟體強制崩潰: %SYS-2-WATCHDOG: Process aborted on watchdog timeout, process = Exec
and
*** System received a Software forced crash ***
signal = 0x17, code = 0x24, context= 0x60ceca60
|
記憶體不足 |
當路由器的記憶體過低時,它最終會自行重新載入,並將其報告為軟體強制崩潰。在這種情況下,記憶體分配失敗錯誤消息顯示在控制檯日誌中: %SYS-2-MALLOCFAIL: Memory allocation of 734 bytes failed from 0x6015EC84,
pool Processor, alignment 0 |
軟體映像損壞 |
啟動時,路由器可以檢測到Cisco IOS軟體映像已損壞,並返回compressed image checksum is incorrect消息,然後嘗試重新載入。在這種情況下,事件報告為軟體強制崩潰。 Error : compressed image checksum is incorrect 0x54B2C70A
Expected a checksum of 0x04B2C70A
*** System received a Software forced crash ***
signal= 0x17, code= 0x5, context= 0x0
PC = 0x800080d4, Cause = 0x20, Status Reg = 0x3041f003
這可能是由在傳輸到路由器期間實際損壞的Cisco IOS軟體映像造成的。在這種情況下,您可以將新映像載入到路由器上以解決問題。[有關平台的ROMMON恢複方法,請參閱Cisco 7200、7300、7400、7500、RSP7000、Catalyst 5500 RSM、uBR7100、uBR7200、uBR10000和12000系列路由器的ROMmon恢復過程。]它也可能由記憶體硬體故障或軟體錯誤引起。 |
其他故障 |
導致崩潰的錯誤通常由處理器硬體檢測到,處理器硬體會自動呼叫ROM監控器中的特殊錯誤處理代碼。ROM監控器可識別錯誤、列印消息、儲存有關故障的資訊並重新啟動系統。某些崩潰不會發生上述情況(請參見Watchdog timeouts),某些崩潰則由軟體檢測問題並呼叫crashdump功能。這是真正的「軟體強制」崩潰。在Power PC平台上,「軟體強制崩潰」不是呼叫crashdump函式時列印的重新啟動原因 — 至少直到最近才如此。在這些平台上(Cisco IOS軟體版本12.2(12.7)之前),這些平台稱為「SIGTRAP」例外。在其他所有方面,SIGTRAP和SFC是相同的。 |
疑難排解
軟體強制崩潰通常由Cisco IOS軟體錯誤引起。如果日誌中存在記憶體分配失敗錯誤消息,請參閱記憶體問題故障排除。
如果您沒有看到記憶體分配失敗錯誤消息,而且在軟體強制崩潰後沒有手動重新載入或重新啟動路由器,則可以使用的最佳工具是Cisco CLI Analyzer(僅限註冊客戶)來搜尋已知的匹配錯誤ID。此工具結合了舊堆疊解碼器工具的功能。
範例:
-
從路由器收集show stack的輸出。
-
前往Cisco CLI Analyzer(僅供已註冊客戶使用)工具。
-
從下拉選單中選擇show stack。
-
貼上已收集的輸出中。
-
按一下「submit」。
如果show stack指令的解碼輸出與已知軟體錯誤相符,則您會收到最有可能導致軟體強制崩潰的軟體錯誤的錯誤ID。
-
按一下錯誤ID超連結以檢視Cisco Bug Toolkit(僅供註冊客戶使用)的其他錯誤詳細資訊,這有助於您判斷正確的錯誤ID是否相符。
找到與您的錯誤相符的錯誤ID後,請參閱「已在中修正」欄位,以確定包含錯誤修正程式的第一個Cisco IOS軟體版本。
如果您不確定錯誤ID或包含問題修正程式的Cisco IOS軟體版本,請將Cisco IOS軟體升級為版本系列中的最新版本。這很有用,因為最新版本包含大量錯誤的修正程式。即使這無法解決問題,當您擁有該軟體的最新版本時,錯誤報告和解決流程也會更簡單和快速。
使用Cisco CLI Analyzer後,如果您懷疑或肯定已識別出仍未解決的錯誤,我們建議您開啟TAC服務請求,提供其他資訊以協助解決錯誤,並在錯誤最終解決時更快地發出通知。
組態設定程序
如果問題被識別為新的軟體錯誤,Cisco TAC工程師可以請求您將路由器配置為收集核心轉儲。有時需要核心轉儲來識別可以修復軟體錯誤的操作。
要在核心轉儲中收集更多有用資訊,建議您使用隱藏的debug sanity命令。這會導致在分配緩衝區和釋放緩衝區時,對系統中使用的每個緩衝區進行正常檢查。必須在特權EXEC模式(啟用模式)下發出debug sanity命令,該命令涉及某些CPU,但不會顯著影響路由器的功能。如果要禁用健全性檢查,請使用undebug sanity特權EXEC命令。
對於主記憶體為16 MB或更小的路由器,您可以使用簡單式檔案傳輸協定(TFTP)來收集核心轉儲。如果路由器的主記憶體超過16MB,建議您使用檔案傳輸協定(FTP)。使用本節中的配置過程。或者,請參閱建立核心轉儲。
完成以下步驟以配置路由器:
-
使用configure terminal命令配置路由器。
-
鍵入exception dump n.n.n.n,其中n.n.n.n是遠端簡單檔案傳輸協定(TFTP)伺服器主機的IP地址。
-
退出配置模式。
TFTP伺服器主機配置過程
完成以下步驟以配置TFTP伺服器主機:
-
在所選編輯器的幫助下,在遠端主機上的/tftpboot目錄下建立一個檔案。檔名為Cisco router hostname-core。
-
在UNIX系統上,將「hostname-core」檔案的許可權模式更改為全域性相容(666)。 您可以通過TFTP檔案上的copy running-config tftp命令檢查TFTP安裝程式。
-
確保在/tftpboot下有超過16 MB的可用磁碟空間。
如果系統崩潰,exception dump命令會將其輸出建立到上述檔案。如果路由器的主記憶體超過16 MB,請使用檔案傳輸協定(FTP)或遠端複製協定(RCP)來獲取核心轉儲。在路由器上設定以下專案:
exception protocol ftp
exception dump n.n.n.n
ip ftp username
ip ftp password
ip ftp source-interface
exception core-file
收集核心轉儲後,請將其上傳到ftp://ftp-sj.cisco.com/incoming(在UNIX中,鍵入pftp ftp-sj.cisco.com,然後鍵入cd incoming),並通知案例的所有者並包含檔名。
開啟TAC服務請求時要收集的資訊
如果在完成上述故障排除步驟後仍需要幫助,並且希望通過Cisco TAC建立服務請求,請確保包含以下資訊: |
- show technical-support output - show technical-support命令的輸出提供有關路由器當前狀態的資訊,以及路由器在崩潰之前儲存的關鍵資訊。
- 控制檯日誌 — 通常儲存在系統日誌伺服器中的控制檯日誌可以提供路由器在崩潰之前發生的事件的重要資訊。這些線索通常是你能收集到的最重要的資訊。
- crashinfo檔案(如果存在) — Cisco建議您使用支援crashinfo功能的Cisco IOS軟體版本,以便成功進行疑難排解。為此,版本必須滿足您網路的其它需求。請參閱從Crashinfo檔案擷取資訊或使用Software Advisor(僅供註冊客戶使用)工具尋找支援crashinfo功能的Cisco IOS軟體版本。另一個可能的額外優勢是,如果您有較舊版本的Cisco IOS軟體,則支援此功能的較新IOS軟體版本可能已經修正了您的錯誤。
若要將資訊附加到服務請求,請透過TAC服務請求工具(僅限註冊客戶)上傳。 如果您無法存取TAC服務請求工具,可以將資訊以電子郵件附件傳送到attach@cisco.com,並將您的案件編號填寫在郵件主題行。 注意:在收集上述資訊之前(如果可能),請勿手動重新載入或重新啟動路由器,因為這樣可能會導致確定問題根本原因所需的重要資訊丟失。 |
相關資訊