那還是80年代初期,我爸爸在一家存儲設備公司工作,這個公司現在已經不存在了,它生產磁帶機和驅動這些磁帶高速運轉的氣動系統 —— 這是那個時代的產物。
(Used under license from Laughing Squid. 原始圖片可以在這里找到。)
他們用技術改造了磁帶驅動器,使得你可以只有一個中心驅動器 —— “A”盤 —— 由它連接著數個“B”盤,在跟A盤連接的內存里駐留這一個小型的操作系統,負責代理所有B盤的數據的讀寫操作。
每次當你啟動A驅動器,你需要在外圍驅動器里插入一張軟盤,操作系統會把A盤加載到內存里。這個操作系統簡單的出奇 —— 它的處理能力全部從一個8字節的微型控制器產生。
這種設備的目標用戶是擁有大量數據的企業 —— 銀行,雜志等等 —— 他們需要打印大量的地址簿或銀行帳目。
有個客戶出現了一個問題。在打印的過程中,有個別的驅動器會停止工作,導致整個打印過程終止。為了重載驅動器,值班人員必須重啟所有驅動 —— 如果這種事情發生在一個6小時的打印任務中,大量寶貴的計算機使用時間都會浪費,整個任務將不能按時間完成。
公司派出了技術人員。技術人員盡了他最大的努力也不能在測試環境復制出這個問題:這個問題似乎只會出現在打印大量任務的過程中。盡管問題出在硬件上可能性微乎其微,他還是更換了所有的設備 —— 內存,微處理器,磁盤驅動,所有跟磁帶機相關的部件 —— 但問題仍然出現。
于是技術人員打電話給總部叫來了一位專家。
專家要了一把椅子和一杯咖啡,坐在了計算機房 —— 那個時候他們已經專門為計算機提供了機房 —— 值班人員準備了一大堆的打印任務,他就在旁邊看著。他等著,一直到機器崩潰。機器果真崩潰了,所有人都看著專家 —— 專家沒有發現任何的線索。他命令把打印任務重新執行一次,所有的值班人員和技術人員都回各自崗位工作。
專家又在椅子上做下來,等著機器崩潰。這一等就是六小時,但真的又發生了。專家仍然沒有弄清是什么導致了崩潰 —— 除了有一點他注意到,崩潰總是發生在屋內人比較多的時候。他命令再打印一次,重新坐下,等著。
當第三次崩潰時,他發現了一件事情。崩潰總是在值班人員更換其他沒有關聯的啟動盤時發生的。進一步研究,他意識到當一個值班人員走過某塊地板時崩潰就會發生。
地板是由鋁制的板塊拼成,下面有6 到 8 英寸高的隔空層,計算機所使用的大量的電纜都走地板下,這樣可以避免值班人員無意間踢到它們。地板塊間拼合的很緊密,這是為了保證垃圾不掉進電纜通過的空間。
專家說有一塊地板變形了。當值班人員踩著這塊變形的地板的一角時,地板塊的邊緣相互摩擦,這就會跟連接各地板的塑料之間產生靜電,進而造成電磁干擾。
如今所有的RAM都有防電磁干擾功能。但當時并沒有這種技術。專家指出,電磁干擾破壞的RAM的工作,操作系統也就崩潰了。
專家打電話給維護部門,拿來了一塊新地板,他自己把它裝上,問題就這樣解決了。
本文是從 The Best Debugging Story I’ve Ever Heard 這篇文章翻譯而來。
it知識庫:我聽到過的最精彩的一個軟件糾錯故事,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。