一個(gè)空格引發(fā)的慘劇
51CTO編輯注:下面這件事其實(shí)是今年6月份的一次事故,一個(gè)安裝腳本中不應(yīng)該存在的空格讓無(wú)數(shù)系統(tǒng)管理員們悲催了……
你是否相信如果你的程序里沒有檢查一個(gè)變量會(huì)導(dǎo)致怎么系統(tǒng)癱瘓?無(wú)論你相不相信,這是我一個(gè)親身經(jīng)歷過的案例,你可以在本站的程序員那些悲催的事兒中找到很多這樣的事。這樣的事昨天在發(fā)生,今天同樣在發(fā)生。Unix40多年了,在這40年里,程序員發(fā)生過各種各樣的的慘劇,但是大多數(shù)的事情一而再再而三的重演。
今天的你,可能在開發(fā)者各種各樣NB的系統(tǒng),你會(huì)相信你的一個(gè)空格也能導(dǎo)致系統(tǒng)癱瘓嗎?也許你可能很難相信這個(gè)事。不過,再下面這個(gè)事將告訴你這個(gè)血淋淋的事實(shí) —— 一個(gè)空格產(chǎn)生的bug可以讓你的系統(tǒng)癱瘓。
bumblebee是一個(gè)開源項(xiàng)目,這個(gè)名字也就是變形金剛里的大黃蜂,這個(gè)項(xiàng)目是這樣介紹自己的——
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),提供出色的圖形性能,并在需要時(shí)延長(zhǎng)電池續(xù)航時(shí)間。這個(gè)項(xiàng)目是把這個(gè)技術(shù)移到Linux上來(lái)。
這個(gè)項(xiàng)目本來(lái)不出名,不過,程序在其安裝腳本install.sh里的一個(gè)bug讓這個(gè)項(xiàng)目一下子成了全世界最矚目的項(xiàng)目,這個(gè)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
看明白了嗎?空格。這個(gè)空格會(huì)導(dǎo)致什么樣的問題呢?呵呵。你有沒有感到菊花一緊?這個(gè)bug絕對(duì)的霸氣外露!真是驗(yàn)證了“如何寫出無(wú)法維護(hù)代碼”的那句話——“測(cè)試你的程序是一種懦夫的行為”。
不過,最精彩還不是這個(gè)bug,而是全世界程序員的對(duì)這個(gè)bug 的 code review comments,真的相當(dāng)?shù)臍g樂。請(qǐng)強(qiáng)勢(shì)圍望!
https://github.com/MrMEEE/bumblebee/commit/a047be85247755cdbe0acce6#diff-1
重點(diǎn)是其中的很多圖片,比如下面這個(gè):
注:Github那里有更多的圖片,你看了之后會(huì)感到程序員們和SA們也是很有幽默感的一群人……