Open Source 的好處 ?

20 四月, 2006 (02:44) | 電腦與網路

雖然因為 kernel 有 bug 造成病毒無法執行,不過我們還是要 patch kernel…

老實說,這標題實在是很難下… 故事是這樣的,前幾天有則新聞是說有人寫了一隻 “概念性病毒” 出來,可以同時在 Linux 和 Windows 的環境下執行並感染,但是經過一些測試後,發現它的感染能力好像有問題,在新版的 Linux kernel 下並不能正常運作,測試人員 Hans-Werner Hilse 發現這可能是因為 ftruncate() 這個 system call 在新版的 kernel 裡面有問題,呼叫後會不正常地改變 ebx 暫存器的值。

在和 Linus Torvalds 討論過後,得到了一個結論,那就是系統確實是有問題,但是問題並不是在 Linux 的 kernel 本身,而是 GCC 造成的,它在某個特殊的 compiler option (”-mregparm=3″) 下會產生錯誤的 assembly code,而這個 compiler option 是在 kernel 2.6.16 之後才是 default option,所以就會造成病毒無法在新版的 kernel 下正常運作的現象。

那又有人問啦,為什麼那麼多程式都有 call ftruncate() 這個 system call,可是大家都沒事,就只有這隻病毒出事呢 ? 答案是因為,如果你是用標準 C 函式庫的話,它在 system call 以後會自動恢復 ebx 暫存器,所以就算真的有問題也會因此而沒事 :Q 這病毒是因為它是自己用 assembly 去刻才會踩到地雷…

BTW,雖然說 “終於能正常地被病毒給感染了” 並不是什麼很值得驕傲的事,不過從發現系統表現不如預期、到追蹤問題、到找出問題並修正錯誤,整個過程花不到一個星期的時間,這也算是 Open Source 開發哲學的一個最好的典範 :)

Technorati Tags: , , ,

Comments

Comment from anton
Date: 2006/4/20, 9:45 上午

hihi.

“雖然因為 kernel 有 bug 造成病毒無法執行,不過我們還是要 patch kernel…”
啊~~ 這句話是說我們要 patch kernel 讓病毒感染嗎?

@_@!!!

Comment from SearchFull
Date: 2006/4/21, 9:49 上午

开源的Linux和病毒的故事太有趣了!让人哭笑不得。
而由此可见,比起windows来,开源的Linux更加让人信任。

Comment from SearchFull
Date: 2006/4/21, 9:53 上午

另外,想问一下作者,从Google里面搜索关键字链接到你的页面,你的页面对关键字高亮显示了,是你自己实现的还是WordPress实现的?

Pingback from 微程式部落格 » 這也是不錯的blog
Date: 2006/4/21, 10:57 上午

[...] 如題 連結 [...]

Comment from ijliao
Date: 2006/4/21, 11:49 上午

是 wordpress 的 plugin,叫做 search hilite

Comment from jjgod
Date: 2006/4/24, 2:31 上午

Hi,

想问问,“如果你是用標準 C 函式庫的話,它在 system call 以後會自動恢復 ebx 暫存器,”这个说法有何而来?可有资料印证?

Comment from ijliao
Date: 2006/4/24, 7:45 上午

這話是 Torvalds 說的,我沒辦法給你什麼資料印證,我只是單純外電報導… :p

Write a comment