LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1582|回复: 7

fedora 8 的libxcb-xlib0问题及解决

[复制链接]
发表于 2007-11-7 22:33:08 | 显示全部楼层 |阅读模式
更新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 都能執行,
发表于 2007-11-8 11:32:14 | 显示全部楼层
不行,我安装过修改后的,还是出现那种提示,感觉重新安装后,没有替换掉,请问如何替换?

我的系统是x86_64的系统,现在正在郁闷
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-8 19:56:05 | 显示全部楼层
可以啊,修改文件后,
编译一下得到rpm包,安装后就可以了
回复 支持 反对

使用道具 举报

发表于 2007-11-8 20:12:17 | 显示全部楼层
libxcb-xlib0?能否先说一下这是什么东西,干什么用的呢oo!
回复 支持 反对

使用道具 举报

发表于 2007-11-9 10:50:21 | 显示全部楼层
放出一个修改后的 rpm。在安装这个 rpm 之前,要:
  1. # rpm -e --nodeps libxcb
复制代码


将附件中 tar.gz 包解开后,安装其中的 rpm 包:
  1. # rpm -ivh libxcb-1.0-3.fc8.i386.rpm
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2007-11-9 22:37:11 | 显示全部楼层
我的安装了楼上提供的包也不行的
回复 支持 反对

使用道具 举报

发表于 2007-11-9 22:43:29 | 显示全部楼层
我也是搞不定!装了楼上提供的还是不行,已经把以前的卸载了
回复 支持 反对

使用道具 举报

发表于 2007-11-9 23:44:47 | 显示全部楼层
我的没问题啊。

这种方法只是针对 sun jdk 程序的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表