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

QGlxIntegration crashes when screen changes

    Details

    • Commits:
      41826cfbae4569255c78ea5ade2a4b7ed9a2dfe1

      Description

      Here's a backtrace, to be more precise we're tracking destroyed windows and managing the screens ourselves. Most of the times we get this backtrace.

      This is reproduceable in many KDE projects, here's a bug report in another one.
      https://bugs.kde.org/show_bug.cgi?id=336511

      ==24288== Invalid read of size 8
      ==24288== at 0x1AF8C066: QXcbObject::connection() const (qxcbobject.h:55)
      ==24288== by 0x1AFC98CD: QGLXContext::makeCurrent(QPlatformSurface*) (qglxintegration.cpp:333)
      ==24288== by 0xCFBCF5C: QOpenGLContext::makeCurrent(QSurface*) (qopenglcontext.cpp:812)
      ==24288== by 0x4FF916A: QSGGuiThreadRenderLoop::renderWindow(QQuickWindow*) (qsgrenderloop.cpp:346)
      ==24288== by 0x4FF9695: QSGGuiThreadRenderLoop::exposureChanged(QQuickWindow*) (qsgrenderloop.cpp:414)
      ==24288== by 0x5029E65: QQuickWindow::exposeEvent(QExposeEvent*) (qquickwindow.cpp:216)
      ==24288== by 0xCF86E8F: QWindow::event(QEvent*) (qwindow.cpp:1956)
      ==24288== by 0x502DC06: QQuickWindow::event(QEvent*) (qquickwindow.cpp:1348)
      ==24288== by 0x4689DB: DesktopView::event(QEvent*) (desktopview.cpp:182)
      ==24288== by 0xC62D985: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3522)
      ==24288== by 0xC62B1CD: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:2975)
      ==24288== by 0xD966D83: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:935)
      ==24288== Address 0x1aa55760 is 16 bytes inside a block of size 192 free'd
      ==24288== at 0x4C29E6C: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==24288== by 0x1AFA6C57: QXcbScreen::~QXcbScreen() (qxcbscreen.cpp:215)
      ==24288== by 0x1AF8F66A: QXcbConnection::updateScreens() (qxcbconnection.cpp:258)
      ==24288== by 0x1AF915C8: QXcbConnection::handleXcbEvent(xcb_generic_event_t*) (qxcbconnection.cpp:928)
      ==24288== by 0x1AF92767: QXcbConnection::processXcbEvents() (qxcbconnection.cpp:1241)
      ==24288== by 0x1AFCB67F: QXcbConnection::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_qxcbconnection.cpp:190)
      ==24288== by 0xD9A10AA: QMetaCallEvent::placeMetaCall(QObject*) (qobject.cpp:487)
      ==24288== by 0xD9A20DF: QObject::event(QEvent*) (qobject.cpp:1241)
      ==24288== by 0xC62D985: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3522)
      ==24288== by 0xC62B1CD: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:2975)
      ==24288== by 0xD966D83: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:935)
      ==24288== by 0xD96A9BE: QCoreApplication::sendEvent(QObject*, QEvent*) (in /home/kde-devel/kde5/lib/libQt5Core.so.5.3.1)
      ==24288==
      ==24288== Invalid read of size 8
      ==24288== at 0x1AF8C066: QXcbObject::connection() const (qxcbobject.h:55)
      ==24288== by 0x1AFC9D51: QGLXContext::swapBuffers(QPlatformSurface*) (qglxintegration.cpp:392)
      ==24288== by 0xCFBD398: QOpenGLContext::swapBuffers(QSurface*) (qopenglcontext.cpp:901)
      ==24288== by 0x4FF939A: QSGGuiThreadRenderLoop::renderWindow(QQuickWindow*) (qsgrenderloop.cpp:381)
      ==24288== by 0x4FF9695: QSGGuiThreadRenderLoop::exposureChanged(QQuickWindow*) (qsgrenderloop.cpp:414)
      ==24288== by 0x5029E65: QQuickWindow::exposeEvent(QExposeEvent*) (qquickwindow.cpp:216)
      ==24288== by 0xCF86E8F: QWindow::event(QEvent*) (qwindow.cpp:1956)
      ==24288== by 0x502DC06: QQuickWindow::event(QEvent*) (qquickwindow.cpp:1348)
      ==24288== by 0x4689DB: DesktopView::event(QEvent*) (desktopview.cpp:182)
      ==24288== by 0xC62D985: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3522)
      ==24288== by 0xC62B1CD: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:2975)
      ==24288== by 0xD966D83: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:935)
      ==24288== Address 0x1aa55760 is 16 bytes inside a block of size 192 free'd
      ==24288== at 0x4C29E6C: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==24288== by 0x1AFA6C57: QXcbScreen::~QXcbScreen() (qxcbscreen.cpp:215)
      ==24288== by 0x1AF8F66A: QXcbConnection::updateScreens() (qxcbconnection.cpp:258)
      ==24288== by 0x1AF915C8: QXcbConnection::handleXcbEvent(xcb_generic_event_t*) (qxcbconnection.cpp:928)
      ==24288== by 0x1AF92767: QXcbConnection::processXcbEvents() (qxcbconnection.cpp:1241)
      ==24288== by 0x1AFCB67F: QXcbConnection::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_qxcbconnection.cpp:190)
      ==24288== by 0xD9A10AA: QMetaCallEvent::placeMetaCall(QObject*) (qobject.cpp:487)
      ==24288== by 0xD9A20DF: QObject::event(QEvent*) (qobject.cpp:1241)
      ==24288== by 0xC62D985: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3522)
      ==24288== by 0xC62B1CD: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:2975)
      ==24288== by 0xD966D83: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:935)
      ==24288== by 0xD96A9BE: QCoreApplication::sendEvent(QObject*, QEvent*) (in /home/kde-devel/kde5/lib/libQt5Core.so.5.3.1)
      ==24288==

        Attachments

          Issue Links

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

            Activity

              People

              • Assignee:
                srutledg Shawn Rutledge
                Reporter:
                apol-old Aleix Pol (Inactive)
              • Votes:
                2 Vote for this issue
                Watchers:
                10 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes