內部堆疊溢出故障:Iomega Zip 驅動程式衝突導致開機暫停
使用 GUST 程式掛載 Iomega Zip 驅動器後重啟,開機進行到一半停住。若啟動時按左 Shift 鍵,提示 "Internal Stack Overflow. System Halted."。屬於內部堆疊溢出錯誤,由中斷嵌套過深耗盡堆疊空間引起。
原理分析
- 堆疊 (Stack) 是一小塊記憶體區域,專用於保存 CPU 處理中斷時的現場 (暫存器、旗標、返回位址)。
- 中斷發生時 (硬體/軟體觸發),CPU 暫停當前任務,將狀態壓入堆疊,轉執行中斷服務程式 (ISR)。
- 若在處理當前中斷前又發生多個高優先級中斷,CPU 會不斷壓入狀態,最終堆疊空間耗盡溢出,系統暫停並報錯。
- Iomega Zip 驅動器安裝的 GUEST 軟體導致中斷嵌套過深,耗盡堆疊。
處理步驟
- 檢查啟動檔
AUTOEXEC.BAT 與 CONFIG.SYS。
- 確認已加入必要命令列參數,或用
REM 註解掉所有 GUEST 程式引用行。
- 嘗試斷開 Zip 驅動器連接。
- 若故障持續,進一步檢查其他常駐程式 (TSR) 是否佔用過多堆疊空間,可在 CONFIG.SYS 增加
STACKS=9,256 (或更大) 擴大堆疊。
本文整理自《堆棧溢出故障》,屬 DOS 時期經典故障,現代 Windows 系統較少見,但嵌入式/即時系統仍需注意堆疊大小設定。