一個空格引發(fā)的慘劇
51CTO編輯注:下面這件事其實是今年6月份的一次事故,一個安裝腳本中不應(yīng)該存在的空格讓無數(shù)系統(tǒng)管理員們悲催了……
你是否相信如果你的程序里沒有檢查一個變量會導(dǎo)致怎么系統(tǒng)癱瘓?無論你相不相信,這是我一個親身經(jīng)歷過的案例,你可以在本站的程序員那些悲催的事兒中找到很多這樣的事。這樣的事昨天在發(fā)生,今天同樣在發(fā)生。Unix40多年了,在這40年里,程序員發(fā)生過各種各樣的的慘劇,但是大多數(shù)的事情一而再再而三的重演。
今天的你,可能在開發(fā)者各種各樣NB的系統(tǒng),你會相信你的一個空格也能導(dǎo)致系統(tǒng)癱瘓嗎?也許你可能很難相信這個事。不過,再下面這個事將告訴你這個血淋淋的事實 —— 一個空格產(chǎn)生的bug可以讓你的系統(tǒng)癱瘓。
bumblebee是一個開源項目,這個名字也就是變形金剛里的大黃蜂,這個項目是這樣介紹自己的——
bumblebee is Optimus support for Linux, with real offloading, and not switchable graphics.. More important.. it works on Optimus Laptops without a graphical multiplexer..
Optimus 是NVIDIA的“優(yōu)馳”技術(shù),其可以將您的筆記本電腦PC提升到絕佳狀態(tài),提供出色的圖形性能,并在需要時延長電池續(xù)航時間。這個項目是把這個技術(shù)移到Linux上來。
這個項目本來不出名,不過,程序在其安裝腳本install.sh里的一個bug讓這個項目一下子成了全世界最矚目的項目,這個bug的fix如下:
@@ -348,7 +348,7 @@ case "$DISTRO" in - rm -rf /usr /lib/nvidia-current/xorg/xorg + rm -rf /usr/lib/nvidia-current/xorg/xorg
看明白了嗎?空格。這個空格會導(dǎo)致什么樣的問題呢?呵呵。你有沒有感到菊花一緊?這個bug絕對的霸氣外露!真是驗證了“如何寫出無法維護(hù)代碼”的那句話——“測試你的程序是一種懦夫的行為”。
不過,最精彩還不是這個bug,而是全世界程序員的對這個bug 的 code review comments,真的相當(dāng)?shù)臍g樂。請強勢圍望!
https://github.com/MrMEEE/bumblebee/commit/a047be85247755cdbe0acce6#diff-1
重點是其中的很多圖片,比如下面這個:
注:Github那里有更多的圖片,你看了之后會感到程序員們和SA們也是很有幽默感的一群人……