Red Hat Linux嚴重Bug將影響基于Haswell架構的服務器
原文 http://www.infoq.com/cn/news/2015/06/redhat-futex
最近,Azul Systems公司的CTO與聯合創始人Gil Tene在Google Groups 報告 了一個十分重要,但鮮為人知的 Linux內核補丁 ,采用英特爾 Haswell 架構的Linux系統用戶和管理員尤其應該關注該問題。特別是基于Red Hat發行版的用戶(包括 CentOS 6.6以及 Scientific Linux 6.6),應該立即更新這個補丁。即便是運行在虛擬機中的Linux,如果這個虛擬機是在流行的云平臺上(如Azure、Amazon等),它也可能跑在Haswell機器上,打補丁應該是有好處的。
Tene是對該缺陷的描述如下:
“這個內核漏洞的影響非常簡單:在一些看似不可能的情況下,用戶進程會死鎖并被掛起。任何一個 futex 調用等待(即使被正確地喚醒)都有可能永遠被阻止執行。就像Java里的Thread.park() 可能會一直阻塞那樣,等等。如果足夠幸運,你會在dmesg日志中發現soft lockup消息;如果沒那么幸運(比如跟我們這樣),你將不得不花幾個月的人工成本去排查代碼中的問題,還有可能一無所獲。”
Tene繼續解釋了這個缺陷代碼是如何執行的(最終可以歸結到一個遺漏了default情況的switch塊)。現在最大的問題是,盡管問題代碼已經在2014年1月修復,但是在2014年10月左右,該缺陷又被移回了Red Hat 6.6家族系統中。其他系統包括SLES、Ubuntu、Debian等有可能也被影響了。
這些系統的修復情況現在并不一致,并且有可能被忽略。Red Hat用戶應該采用RHEL 6.6.z或更新的版本。Tene還指出另一個關鍵點在于,對于要將哪些東西放入內核,不同的發行版會有不同的選擇,這也導致問題的修復情況并不一致。
例如,對于RHEL 7.1而言,“其實上游的3.10內核是沒有這個bug的,但RHEL 7的內核又不是純粹的上游版本。不幸的是,RHEL 7.1(就像RHEL 6.6那樣)在移植的時候把(基于RHEL 7版本)這個bug包含了進去......我認為其他發行版可能也是這么做的。”
對基于RHEL的發行版,Tene提供了一個快速參考列表:
RHEL 5(包括CentOS 5和Scientific Linux 5):所有版本(包括5.11版)都沒有問題。
RHEL 6(包括CentOS 6和Scientific Linux 6):從6.0~6.5版都沒問題。 但6.6版存在缺陷,而6.6.z版本沒有問題。
RHEL 7(包括CentOS 7和Scientific Linux 7):7.1是有缺陷的。并且截至2015年5月13日也沒有一個7.x的修復。
盡管在 Hacker News 上對受影響系統的數量存在一些爭議,但它提供了一些環境來檢查你的系統是否需要修復。
編者注:在將于2015年10月15日~17日舉行的 QCon上海2015大會 上,Azul Systems聯合創始人兼CTO Gil Tene 將做主題演講。他是著名的Java和JVM專家。6月21日之前 報名 ,可享7折優惠。
查看英文原文: Serious Red Hat Linux Bug Affects Haswell-based Servers