在 x86 環境下編譯 GCC 4.8 會出現 '_ITM_TYPE_M256' does not name a type 的錯誤

我想應該不少人已經知道 x86 平台被很多 software developer 無視已久了。
特別是歷經了用 gcc -O3 編譯 zlib 以後會讓包括 ssh 在內的一大堆程式爆炸,叫修又被裝死很長一段時間的這段血淚史,讓我對這個潮流更加印象深刻:
Bug 270120 - (PR40838) [4.4/bad-code] -ftree-vectorize causes segfaults on x86 due to stack misalignment
Bug 41156 - [4.4/4.5/4.6 Regression] zlib segfault in inflate_table() compiled w/ -O -msse2 ftree-vectorize
不過最近在租用外國 KVM 服務的時候,居然遇到一家實體 CPU 採用 Xeon E3-1270 V2 的主機商,無論如何就是無法讓 64-bit 的 FreeBSD ISO 能 boot 起來,無論是 8.3 和 9.1 都不行。
相對地,其它 Linux 家族的 64-bit 安裝光碟都完全沒事,可以正常 boot 也能裝得很開心,這實在是讓我這個喊了 FreeBSD 才是王道超過 10 年的人看得很傻眼。
雖然主機商馬上 call 了 FreeBSD 的 maintainer 來看看有沒有辦法解決,但最後只是推測這新的 CPU 架構和 USB 裝置的初始化有衝突,要修正還是不知道得等到何年何月,所以我就和主機商說讓我改裝 i386 的 FreeBSD 9.1 了。
因此在切換到 x86-64 環境的數年後,我又再次被迫回到 x86 平台這個戰場來編譯程式,向者艱辛的道路邁進。

Read more在 x86 環境下編譯 GCC 4.8 會出現 '_ITM_TYPE_M256' does not name a type 的錯誤

Apache 從 2.2.12 開始支援 SNI

其實這資訊 lag 了一年多了吧 (現在都 2.2.17 了)。
前幾週被人問到 SSL 時丟相關資訊給他,
才發現 wikipedia 的 SNI 那頁更新過了:Server Name Indication

這功能是從 Apache 2.3 merge 回來的:#34607 - Support for Server Name Indication
設定範例可以參考 Apache 的 wiki:SSL with Virtual Hosts Using SNI
其實設定上沒什麼新東西要注意,
一切都恢復到過去設 SSL vhost 的方式即可。
最多就是記得要擺 NameVirtualHost *:443SSLStrictSNIVHostCheck off 這兩行吧。

Read moreApache 從 2.2.12 開始支援 SNI

電機電子群高工學生失落的知識:電工數學

今天在某板看到一篇有趣的文章:

我並非天龍國大安國的國民,也不是該國國境內某八大省工之一的名校學生,所以我也無從得知他們現在的老師是否有教這些東西,但是這些東西其實是電機電子群的高工學生們原本就有機會學到的。只是這門課因為各式各樣的原因,所以早在相當久遠的年代以前就慘遭諸多學校以暗黑兵法做掉了,這門課的課名就叫做電工數學。當然會求長進的學校絕對不是沒有,所以即使現在真的還有學校在教這種東西,我也一點都不感到意外。

Read more電機電子群高工學生失落的知識:電工數學