谷歌程序員少輸一個“&”,差點讓全球Chrome筆記本變磚
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
代碼只是少了一個字符,后果竟如此可怕。
上周,一些使用Chrome OS筆記本的用戶發現,一旦重啟筆記本,就將陷入了無法登錄的死循環。
明明輸入的開機密碼是對的,但就是一直提示“無法驗證您的密碼”,進不了系統。更嚴重的情況是筆記本將反復重啟。
一臺好好的筆記本怎么突然就“變磚”了呢?
原來都是Chrome OS一次悄悄自動更新惹的禍。
由于ChromeOS是開源的,一位Reddit網友仔細系統更新的代碼,發現其中的低級錯誤令人哭笑不得。

少一個“&”惹的禍
這位網友仔細對比兩份代碼后發現,這個“驚天大bug”背后竟然只是谷歌程序員少輸了一個字符“&”。
原本正確的代碼應該是:
- if (keydata.hasvalue() && !key_data->label().empty())
而這位程序員卻這句if語句寫成了。
- if (keydata.hasvalue() & !key_data->label().empty())
“&&”和“&”兩個運算符雖然看起來只差一點點,但二者作用真是天壤之別。
前者是對兩個變量求“與”(AND),而后者是對這兩個值按位求與。
這樣就導致了條件語句兩邊變量每一位都會被求與,即使has_value()為真,返回結果也不一定就是真。
而這串代碼是Chrome OS中保存用戶加密密鑰的部分,由于這個錯誤,系統無法驗證將存儲的密鑰與輸入密碼進行比較,就出現了尷尬的一幕。
接到用戶的反饋后,谷歌迅速發布了91.0.4472.167更新來解決該問題。
如果你的Chrome筆記本只是無法進入當前賬戶,那么可以先嘗試安裝最新更新,而不會丟失文件。
如果你的筆記本無線重啟,就只能回復出廠設置然后再接收更新了,數據也會全部丟失。
沒測試就發布,著實離譜
堂堂互聯網大廠竟犯如此低級錯誤,這令不少Chromebook用戶感到憤怒:
谷歌的測試團隊這兩個月是休假了嗎?

谷歌沒有代碼測試的嗎?為什么會在沒有測試的情況下把代碼發布到生產環境。

Chrome OS過去一直“小錯不斷”,所以有些用戶已經學得精明了:
我已經學會了等更新發布一段時間后再升級。

真是沒想到,代碼少一個字符竟有這么大的破壞力。好在Chrome OS系統更新是分批進行,波及面也不算太廣。
看到這個谷歌程序員的bug,你有沒有想起自己犯過哪些低級錯誤呢?(比如把等于號“==”寫成了賦值號“=”)