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