Calendar

四月 2011
« 十一月   八月 »
 123
45678910
11121314151617
18192021222324
252627282930  

Categories

使用 X server 遠端執行 VirtualBox 時一進入設定就會 Segmentation fault

這個問題是在 FreeBSD 8.2-STABLE 上遇到的,但我想其實跟 OS 無關。
主要是 Windows 上的 X server 不支援 OpenGL 加速,然後 VirtualBox 裡有一段測試 OpenGL 是否能運作的 code 沒寫好,結果就掛了。
會看到的錯誤訊息如下:

WARNING: QGLContext::makeCurrent(): Cannot make invalid context current
Segmentation fault

稍微看了一下,相關的判斷部分,都是透過檢查 QGLContext::makeCurrent() 的 return value 是否為 0 來判斷。
不過稍微 Google 一下就會發現,其實應該使用 QGLWidget::isValid() 來判斷才對。

我本身只會使用 X server 遠端從 shell 啟動 VirtualBox,沒有從 console 上執行的打算,所以上面這些部分都可以不管它。
在 emulators/virtualbox-ose 裡 make configure 以後,進去這個目錄:
work/VirtualBox-3.2.12_OSE/src/VBox/Frontends/VirtualBox/src/
照下面這樣修改 VBoxFBOverlay.cpp,把 OpenGL 加速整個當成不支援就好:

至於有打算在 console 上跑,而且能用 OpenGL 加速的,就請自己去它下層呼叫的函式裡照上面的說法修正程式吧。
最近沒什麼動力幫這種東西 debug...

FreeBSD 在 mysql55-{server,client} 改用 CMake 建置後某些編譯選項無法傳遞

以往在 FreeBSD 編譯 databases/mysql55-{server,client} 時,要下這樣的參數:
make WITH_CHARSET=utf8 WITH_COLLATION=utf8_general_ci WITH_XCHARSET=complex install

不過因為在 MySQL 5.5.8 後的 build system 改成了 CMake,導致 ports maintainer 必須重新設計 Makefile。
而目前的 Makefile 尚未設計完善,所以想把這些 options 傳遞給 CMake 的話,只能直接改 Makefile 解決:

如果在做這修改前不小心將沒設好的 MySQL 整套裝起來的話,請記得把 mysql55-client 也砍掉一起重裝。
特別是對那些真正需要用到 WITH_EXTRA_CHARSET="complex" 的人,有一邊沒弄好的話,網頁上就準備出現一大堆「???????」了。

至於是否能像以前那樣直接用 make 送參數,就只能慢慢等 maintainer,看他何時會重新把所有 options 對應上去了。