首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xlib/ xcb死锁或阻塞

xlib/ xcb死锁或阻塞
EN

Stack Overflow用户
提问于 2010-10-11 07:44:30
回答 1查看 870关注 0票数 1

我有一个使用xlib和cairo开发的程序。作为参考,我确实在cairo和xlib之间混合调用,尽管我不确定这是否是错误的原因。在某些情况下,我会陷入僵局。我有三个线程可以使用xlib。一个是主UI线程,它同时调用xlib和cairo,另一个线程只使用它发送一个XClientMessage,第三个线程进行一些xlib调用,比如XCopyArea,最后发送一个XClientMessage (它们用于一些动画)。我在节目一开始就给InitThreads打过电话。我还用XLockDisplay保护了所有xlib调用(cairo调用也被XLockDisplay保护)。我用的是ubuntu 10.10。堆栈跟踪如下:

(gdb)线程1

__kernel_vsyscall ()中的0

在/lib/tls/i 686/cmov/libc.so.

2 in?()从/usr/lib/libxcb.so.1

3 in?()从/usr/lib/libxcb.so.1

4在xcb_writev ()中来自/usr/lib/libxcb.so.1

来自/usr/lib/libX11.so.6的_XSend ()中的5

_XEventsQueued ()中的6来自/usr/lib/libX11.so.6

来自/usr/lib/libX11.so.6的XPending ()中的7

(gdb)线程6

__kernel_vsyscall ()中的0

1在__lll_lock_wait ()中

/lib/tls/i 686/cmov/libp线程.so.0

2在/lib/tls/i 686/cmov/libp线程.so.0处的_L_lock_752 ()中

3在/lib/tls/i 686/cmov/libp线程.so.0处的pthread_mutex_lock ()中

4 in ??()来自/usr/lib/libX11.so.6

来自/usr/lib/libX11.so.6的XLockDisplay ()中的5

(gdb)线程7

__kernel_vsyscall ()中的0

1在/lib/tls/i 686/cmov/libp线程.so.0处的__lll_lock_wait ()中

2在/lib/tls/i 686/cmov/libp线程.so.0处的_L_lock_752 ()中

3在/lib/tls/i 686/cmov/libp线程.so.0处的pthread_mutex_lock ()中

4 in ??()来自/usr/lib/libX11.so.6

来自/usr/lib/libX11.so.6的XLockDisplay ()中的5

在事件循环中,线程1是主ui线程,目前正在调用XPending (它已经调用了XLockDisplay),而头7是刚刚发送XClientMessage的线程,线程6是对XCopyArea进行了一些调用并即将对XSendMessage进行调用的线程(它正与线程7一起等待线程1完成)。但是,线程1似乎从未从民意测验中恢复过来。我不确定这是否相关(我绝不是linux或libc方面的专家),但我还有另一个线程在等待投票(它是TCP/IP网络通信的线程) (gdb)线程2

__kernel_vsyscall ()中的0

在/lib/tls/i 686/cmov/libc.so.

有没有人经历过类似的死锁/阻塞?这是否是xcb中的一个bug,是否值得在没有xcb的情况下编译xlib?谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-05-04 18:40:39

我只是遇到了一个问题,__lll_lock_wait ()中的1也是麻烦制造者。这是在我的代码的I/O部分,也许您有问题吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3904361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档