Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-38221

Crash when using the QML profiler timeline

XMLWordPrintable

    • 6977700bed929c7f1a20192d07a06abc2fdca278 in qtbase

      I've heard from two people that they're getting the following assert:

      qtcreator: xcb_conn.c:186: write_vec: Assertion `!c->out.queue_len' failed.
      

      One of them was using QtCreator 3.1.0 beta (aka 3.0.82) on Qt 5.2.1.

      To sum up all the comments below:

      There are two code paths which can be used to communicate with libxcb. One is from QWidget and friends in the GUI thread. e.g. xcb_flush() can be called on geometry changes as seem in Pasi's backtrace. The other one is via the OpenGL library from the renderer thread. Such a backtrace can be seen in Oleg's comments where it calls xcb_flush() from QOpenGLContext::swapBuffers() via xlib. The assertion is clearly about some kind of parallel access to xcb as in Oleg's case it must have set the queue_len to 0 in the same thread before. It seems that xcb is not prepared for that kind of interaction. The theory that XInitThreads() (see QTBUG-31935) fixes it is apparently wrong. Notably the widgets are not using xlib to communicate with xcb and are thus unaffected by any thread synchronization happening there. That is still the case in Qt 5.3.

      I've reopened https://bugs.freedesktop.org/show_bug.cgi?id=44198 as, arguably, this interaction with xcb should be allowed.

      Apparently we'll ship our own version of xcb in 5.3. If that happens this bug probably doesn't apply to 5.3 anymore.

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            aalpert Alan Alpert
            ulherman Ulf Hermann
            Votes:
            2 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes