|
|
更新fedora 8以后,由于libxcb-xlib0 的更新, 一些視窗程式會發生 assertion , 像是 java , vmware,臃肿,matlab等会都有影響.
java: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock’ failed.
X protocol C-language Binding (xcb) 取代 xlib , 且提供 transport layer 讓尚未修改的程式使用 ( Xlib/XCB ). 但是如果原本使用 xlib 的程式沒有照規矩來, 就會發生 assertion. JRE , vmware 這些程式又不是說改就改, 網路上的暫時解法兩種, 一個是退回 xlib , 另外一個就是自己編譯, 把 assert 檢查拿掉.
用後者的方法
得到libxcb-1.0.3.fc8.src.rpm
把其中的 src/xcb_xlib.c 的第 41 , 50 行 assert 都註解掉.
void xcb_xlib_lock(xcb_connection_t *c)
{
_xcb_lock_io(c);
// assert(!c->xlib.lock);
if (!c->xlib.lock) {
c->xlib.lock = 1;
c->xlib.thread = pthread_self();
}
_xcb_unlock_io(c);
}
void xcb_xlib_unlock(xcb_connection_t *c)
{
_xcb_lock_io(c);
// assert(c->xlib.lock);
if (c->xlib.lock) {
assert(pthread_equal(c->xlib.thread, pthread_self()));
c->xlib.lock = 0;
pthread_cond_broadcast(&c->xlib.cond);
}
_xcb_unlock_io(c);
}
安裝之後, java, vmware 都能執行, |
|