在ubuntu系统下运行Qt程序
Qt的程序就相当于X11的一个客户端,受X11的限制
近期,在处理一起离奇事件,发现UI的qt界面已经卡死了,无鼠标键盘任何反应
但程序是运行的,比如与其他设备通信是正常的,说明程序本身没有死掉。
通过断点,发现所有的槽均失效了
如果重启应用程序,可以恢复正常的。
出现的概率不大,但总能出来,总的来说是没有找到规律。
一开始,一直怀疑程序本身代码出现出现,比如槽函数里出现死循环等,因为这样比较适合解释现象。
当出现问题的时候,通过GDB调试,发现x11卡在某个函数地方
提示:libX11.so.6 _XReply()
百思不得其解
难不成X11的bug?
从现象看,的确存在漏洞,x11会出现死等的情况
因此,解决办法:
1. 去x11网站看看,有没有类似问题,的确也有,已经在下一个版本上解决了,正好,拿来编译下,替换掉原先的,发现问题的确再也不出现了
2. 自己修改x11的源码,也是可以的,就是把wait那个地方改成不要死等,就可以了
mark一下
标签:XReply,Qt,程序,x11,X11,出现 来源: https://www.cnblogs.com/winafa/p/14206600.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。