Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.0.0
-
None
-
OpenSUSE 12.10 kwin, Qt 5.0.0.
-
d2e64c47ce63607e7c4159ad9fb6a31e6652f8b8
Description
Qt Creator on top of Qt 5 / xcb frequently hangs after a while, see e.g. QTCREATORBUG-8473 . The stack trace points to a recursion happening in xlib / XError, e.g.
0 pthread_cond_wait@@GLIBC_2.3.2 /lib64/libpthread.so.0 0x7f3bb14a18f4 1 _XReply xcb_io.c 595 0x7f3bb08dd8fd 2 _XSeqSyncFunction XlibInt.c 232 0x7f3bb08e0401 3 _XError XlibInt.c 1585 0x7f3bb08dfbbb 4 handle_error xcb_io.c 212 0x7f3bb08dcdf1 5 handle_response xcb_io.c 324 0x7f3bb08dce35 6 _XReply xcb_io.c 647 0x7f3bb08dd9d3 7 _XSeqSyncFunction XlibInt.c 232 0x7f3bb08e0401 8 _XError XlibInt.c 1585 0x7f3bb08dfbbb 9 handle_error xcb_io.c 212 0x7f3bb08dcdf1 10 handle_response xcb_io.c 324 0x7f3bb08dce35 11 _XReply xcb_io.c 647 0x7f3bb08dd9d3 12 _XSeqSyncFunction XlibInt.c 232 0x7f3bb08e0401 13 XCreateWindow Window.c 117 0x7f3bb08db942
_XSeqSyncFunction calls _XReply here because the number of outstanding XLib request packages is too big, and hits a buffer boundary:
if ((dpy->request - dpy->last_request_read) >= (65535 - BUFSIZE/SIZEOF(xReq))) { // ... }
This is due to QXcbWindow::create() creating requests, but apparently never syncing the XLib connection. A workaround seems to be to add an
XSync(dpy, false)
at the end of QXcbWindow::create().
Attachments
Issue Links
- is required for
-
QTCREATORBUG-8473 Qt Creator 2.6.1 on Qt 5.0.0 hangs
- Closed