簡介
本文檔說明導致軟體強制崩潰的最常見原因,並介紹為進行故障排除而必須收集的資訊。如果您提交軟體強制崩潰的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恢復過程。]也可能是由於記憶體硬體故障或軟體Bug所致。 |
其他故障 |
導致崩潰的錯誤通常由處理器硬體檢測到,處理器硬體會自動呼叫ROM監視器中的特殊錯誤處理代碼。ROM監視器可辨識錯誤、列印訊息、儲存故障相關資訊,並重新啟動系統。某些崩潰不會發生這種情況(請參閱監視器超時),而某些崩潰會由軟體檢測問題並呼叫crashdump功能。這是真正的「軟體強制」崩潰。在Power PC平台上,呼叫crashdump函式時列印的「軟體強制崩潰」不是重新啟動理由-至少直到最近才如此。在這些平台上(早於Cisco IOS軟體版本12.2(12.7)),這些版本稱為「SIGTRAP」異常。在其他所有方面,SIGTRAP和SFC是相同的。 |
疑難排解
軟體強制崩潰通常是由於Cisco IOS軟體Bug引起的。如果日誌中顯示了記憶體分配失敗錯誤消息,請參閱記憶體問題故障排除。
如果未看到記憶體分配失敗錯誤消息,並且您在軟體強制崩潰後沒有手動重新載入路由器或重新通電,則可使用的最佳工具是Cisco CLI Analyzer(僅供註冊客戶使用)搜尋已知的匹配錯誤ID。此工具結合了舊的Stack Decoder工具功能。
範例:
-
從路由器收集show stack的輸出。
-
轉到Cisco CLI Analyzer(僅供已註冊客戶使用)工具。
-
從下拉選單中選擇show stack。
-
貼上到已收集的輸出中。
-
按一下submit。
如果show stack命令的解碼輸出與已知的軟體bug匹配,您將會收到最可能導致軟體強制崩潰的軟體bug的bug ID。
-
按一下Bug ID超連結,以檢視Cisco Bug Toolkit(僅供註冊客戶使用)的其他錯誤詳細資訊,這可協助您判斷正確的錯誤ID相符。
找到與錯誤相符的錯誤ID後,請參閱「fixed in」欄位以確定包含錯誤修正程式的第一個Cisco IOS軟體版本。
如果不清楚錯誤ID或包含問題修正程式的Cisco IOS軟體版本,請將Cisco IOS軟體升級為您版本系列中的最新版本。這很有幫助,因為最新版本包含對大量錯誤的修復。即使這無法解決問題,當您擁有最新版的軟體時,錯誤報告和解決程式也會更簡單快速。
使用Cisco CLI Analyzer後,如果您懷疑或肯定已找到仍未解決的錯誤,我們建議您發出TAC服務請求,以提供其他資訊來協助解決錯誤,並在最終解決錯誤時加快通知速度。
組態設定程序
如果問題被確定為新的軟體Bug,Cisco TAC工程師可能會請求您將路由器配置為收集核心轉儲。有時需要核心轉儲來確定可以採取哪些操作來修復軟體Bug。
要收集核心轉儲中更有用的資訊,建議您使用隱藏的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)。您可以透過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 ftp-sj.cisco.com,然後鍵入cd incoming),通知案例所有者並包括檔名。
打開TAC服務請求時要收集的資訊
如果您在採取上述故障排除步驟後仍需要幫助並希望透過Cisco TAC建立服務請求,請確保包括以下資訊: |
- show technical-support輸出- show technical-support命令的輸出提供有關路由器當前狀態的資訊,以及提供路由器在崩潰之前儲存的重要資訊。
- 控制檯日誌-控制檯日誌通常儲存在syslog伺服器中,它們可以提供路由器崩潰前所發生事件的重要資訊。這些線索往往是你能收集到的最重要資訊。
- crashinfo檔案(如果存在)- Cisco建議您使用支援crashinfo功能的Cisco IOS軟體版本,以便順利進行故障排除。為此,版本必須滿足您網路的其它需求。請參閱從Crashinfo檔案檢索資訊或使用Software Advisor(僅供註冊客戶使用)工具查詢支援crashinfo功能的Cisco IOS軟體版本。一個潛在的好處是,如果您有較舊版本的Cisco IOS軟體,支援此功能的較新IOS軟體版本可能已經修復了您的漏洞。
為了將資訊附加到您的服務請求,請透過TAC服務請求工具上傳資訊(僅限註冊客戶)。如果無法訪問TAC服務請求工具,可在郵件的主題行中註明案例號,然後以附件形式將資訊傳送到attach@cisco.com。 警告:在收集上述資訊之前(如果可能),請勿手動重新載入路由器或對路由器重新加電,因為這樣可能導致確定問題根本原因所需的重要資訊丟失。 |
相關資訊