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

Crash when destroying graphics effect via menu item

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 5.3.2
    • None
    • Qt 5.3.2, Arch Linux, Intel graphics

    Description

      I'm getting a crash whenever an item with a QtGraphicalEffect is destroyed via menu item. When the menu window is destroyed it triggers an attempt to update the destroyed graphics effect (-> segfault).

      This reliably crashes for me with Qt 5.3.2/Arch Linux, and I have reports of it crashing on 5.3.1/linux. Some have also reported that it does not crash on 5.3.1/linux. It's not clear what the differentiating factor is.

      import QtQuick 2.3
      import QtGraphicalEffects 1.0
      import QtQuick.Window 2.2
      import QtQuick.Controls 1.2
      
      ApplicationWindow {
          visible: true
          width: loader.width
          height: loader.height
          menuBar: MenuBar {
              Menu {
                  title: "OpenMe"
                  MenuItem {
                      text: "Crash"
                      onTriggered: { loader.sourceComponent = undefined }
                  }
              }
          }
          Component {
              id: crasher
              RadialGradient {
                  width: 100; height: 100
                  gradient: Gradient {
                      GradientStop { position: 0.0; color: "red" }
                      GradientStop { position: 1.0; color: "green" }
                  }
              }
      
          }
          Loader {
              id: loader
              sourceComponent: crasher
          }
      }
      
      ASSERT: "context" in file opengl/qopenglfunctions.cpp, line 201
      
      Program received signal SIGABRT, Aborted.
      0x00007ffff5b7fa97 in raise () from /usr/lib/libc.so.6
      (gdb) bt
      #0  0x00007ffff5b7fa97 in raise () from /usr/lib/libc.so.6
      #1  0x00007ffff5b80e6a in abort () from /usr/lib/libc.so.6
      #2  0x00007ffff6594a88 in qt_message_fatal (context=..., message=...) at global/qlogging.cpp:1364
      #3  QMessageLogger::fatal (this=this@entry=0x7fffffffd530, msg=msg@entry=0x7ffff6804160 "ASSERT: \"%s\" in file %s, line %d") at global/qlogging.cpp:669
      #4  0x00007ffff658ff64 in qt_assert (assertion=assertion@entry=0x7ffff6db3370 "context", file=file@entry=0x7ffff6db3354 "opengl/qopenglfunctions.cpp", line=line@entry=201) at global/qglobal.cpp:2127
      #5  0x00007ffff6d081f9 in qt_gl_functions (context=0x0) at opengl/qopenglfunctions.cpp:201
      #6  0x00007ffff6d14d6d in (anonymous namespace)::Resolver<QOpenGLFunctionsPrivate, void (*)(int, unsigned int const*), 3, void>::operator()<int, unsigned int const*> (this=this@entry=0x7fffffffd630, p1=p1@entry=1, p2=p2@entry=0x97d998) at opengl/qopenglfunctions.cpp:2296
      #7  0x00007ffff6d150c2 in qopenglfResolveDeleteRenderbuffers (n=1, renderbuffers=0x97d998) at opengl/qopenglfunctions.cpp:2754
      #8  0x00007ffff7b356b8 in glDeleteRenderbuffers (renderbuffers=0x97d998, n=1, this=0x97d978) at /home/username/managed/ABS/extra/qt5/src/qt-everywhere-opensource-src-5.3.2/qtbase/include/QtGui/5.3.2/QtGui/private/../../../../../src/gui/opengl/qopenglfunctions.h:1325
      #9  QSGDefaultDepthStencilBuffer::free (this=this@entry=0x97d970) at scenegraph/util/qsgdepthstencilbuffer.cpp:153
      #10 0x00007ffff7b35dc3 in QSGDefaultDepthStencilBuffer::~QSGDefaultDepthStencilBuffer (this=0x97d970, __in_chrg=<optimized out>) at scenegraph/util/qsgdepthstencilbuffer.cpp:147
      #11 0x00007ffff7b35df9 in QSGDefaultDepthStencilBuffer::~QSGDefaultDepthStencilBuffer (this=0x97d970, __in_chrg=<optimized out>) at scenegraph/util/qsgdepthstencilbuffer.cpp:148
      #12 0x00007ffff7c76b86 in destroy (this=0x1e0a7e0) at /home/username/managed/ABS/extra/qt5/src/qt-everywhere-opensource-src-5.3.2/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h:158
      #13 deref (d=0x1e0a7e0) at /home/username/managed/ABS/extra/qt5/src/qt-everywhere-opensource-src-5.3.2/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h:449
      #14 deref (this=<optimized out>) at /home/username/managed/ABS/extra/qt5/src/qt-everywhere-opensource-src-5.3.2/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h:444
      #15 ~QSharedPointer (this=0xa808a8, __in_chrg=<optimized out>) at /home/username/managed/ABS/extra/qt5/src/qt-everywhere-opensource-src-5.3.2/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h:312
      #16 QQuickShaderEffectTexture::~QQuickShaderEffectTexture (this=0xa80840, __in_chrg=<optimized out>) at items/qquickshadereffectsource.cpp:159
      #17 0x00007ffff7c76bc9 in QQuickShaderEffectTexture::~QQuickShaderEffectTexture (this=0xa80840, __in_chrg=<optimized out>) at items/qquickshadereffectsource.cpp:162
      #18 0x00007ffff67892d8 in QObject::event (this=0xa80840, e=<optimized out>) at kernel/qobject.cpp:1232
      #19 0x00007ffff6ff08c4 in QApplicationPrivate::notify_helper (this=0x4183b0, receiver=0xa80840, e=0x226ed90) at kernel/qapplication.cpp:3499
      #20 0x00007ffff6ff6020 in QApplication::notify (this=0x7fffffffe4a0, receiver=0xa80840, e=0x226ed90) at kernel/qapplication.cpp:3282
      #21 0x00007ffff675a6cd in QCoreApplication::notifyInternal (this=0x7fffffffe4a0, receiver=0xa80840, event=event@entry=0x226ed90) at kernel/qcoreapplication.cpp:935
      #22 0x00007ffff675d98d in sendEvent (event=0x226ed90, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:237
      #23 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=52, data=0x418510) at kernel/qcoreapplication.cpp:1539
      #24 0x00007ffff675de78 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=52) at kernel/qcoreapplication.cpp:1397
      #25 0x00007ffff7b88ad1 in QQuickWindow::~QQuickWindow (this=0x1db2cb0, __in_chrg=<optimized out>) at items/qquickwindow.cpp:1097
      #26 0x00007fffe8174cb1 in ~QQuickPopupWindow (this=0x1db2cb0, __in_chrg=<optimized out>) at .moc/../qquickpopupwindow_p.h:51
      #27 ~QQuickMenuPopupWindow (this=0x1db2cb0, __in_chrg=<optimized out>) at .moc/../qquickmenupopupwindow_p.h:49
      #28 QQuickMenuPopupWindow::~QQuickMenuPopupWindow (this=0x1db2cb0, __in_chrg=<optimized out>) at .moc/../qquickmenupopupwindow_p.h:49
      #29 0x00007ffff67892d8 in QObject::event (this=this@entry=0x1db2cb0, e=<optimized out>) at kernel/qobject.cpp:1232
      #30 0x00007ffff6a9c6b8 in QWindow::event (this=this@entry=0x1db2cb0, ev=ev@entry=0x1de1120) at kernel/qwindow.cpp:2000
      #31 0x00007ffff7b8f3d3 in QQuickWindow::event (this=0x1db2cb0, e=0x1de1120) at items/qquickwindow.cpp:1349
      #32 0x00007ffff6ff08c4 in QApplicationPrivate::notify_helper (this=0x4183b0, receiver=0x1db2cb0, e=0x1de1120) at kernel/qapplication.cpp:3499
      #33 0x00007ffff6ff6020 in QApplication::notify (this=0x7fffffffe4a0, receiver=0x1db2cb0, e=0x1de1120) at kernel/qapplication.cpp:3282
      #34 0x00007ffff675a6cd in QCoreApplication::notifyInternal (this=0x7fffffffe4a0, receiver=0x1db2cb0, event=event@entry=0x1de1120) at kernel/qcoreapplication.cpp:935
      #35 0x00007ffff675d98d in sendEvent (event=0x1de1120, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:237
      #36 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x418510) at kernel/qcoreapplication.cpp:1539
      #37 0x00007ffff675de78 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1397
      #38 0x00007ffff67b1013 in postEventSourceDispatch (s=0x447060) at kernel/qeventdispatcher_glib.cpp:279
      #39 0x00007ffff5180a0d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
      #40 0x00007ffff5180cf8 in ?? () from /usr/lib/libglib-2.0.so.0
      #41 0x00007ffff5180dac in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
      #42 0x00007ffff67b1087 in QEventDispatcherGlib::processEvents (this=0x44b630, flags=...) at kernel/qeventdispatcher_glib.cpp:426
      #43 0x00007ffff6758b12 in QEventLoop::exec (this=this@entry=0x7fffffffe2d0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
      #44 0x00007ffff67603dc in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
      #45 0x000000000040460a in main (argc=2, argv=0xd1d) at main.cpp:548
      

      Attachments

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

        Activity

          People

            sletta Gunnar Sletta
            olivier.jg Olivier JG
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes