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

Crash on QGraphicsSceneFindItemBspTreeVisitor::visit

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 5.15.2
    • Widgets: GraphicsView
    • None
    • Linux/X11

    Description

      Removing and Adding items on the graphicsview caused a segmentation fault.

      Backtrace:

      Thread 1 "test-qgv" received signal SIGSEGV, Segmentation fault.
      QGraphicsSceneFindItemBspTreeVisitor::visit (this=0x555556f1deb0, items=0x555555e50d88) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:116
      116     ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h: Directory not empty.
      (gdb) bt
      #0  QGraphicsSceneFindItemBspTreeVisitor::visit(QList<QGraphicsItem*>*) (this=0x555556f1deb0, items=0x555555e50d88) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:116
      #1  0x00007fffeb85588a in QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (this=0x555556f1ddd0, visitor=0x555556f1deb0, rect=..., index=<optimized out>)
          at graphicsview/qgraphicsscene_bsp.cpp:257
      #2  0x00007fffeb8558de in QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (this=0x555556f1ddd0, visitor=0x555556f1deb0, rect=..., index=<optimized out>)
          at graphicsview/qgraphicsscene_bsp.cpp:248
      #3  0x00007fffeb85588a in QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (this=0x555556f1ddd0, visitor=0x555556f1deb0, rect=..., index=<optimized out>)
          at graphicsview/qgraphicsscene_bsp.cpp:257
      #4  0x00007fffeb85588a in QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (this=0x555556f1ddd0, visitor=0x555556f1deb0, rect=..., index=<optimized out>)
          at graphicsview/qgraphicsscene_bsp.cpp:257
      #5  0x00007fffeb85588a in QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (this=0x555556f1ddd0, visitor=0x555556f1deb0, rect=..., index=<optimized out>)
          at graphicsview/qgraphicsscene_bsp.cpp:257
      #6  0x00007fffeb8558de in QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (this=0x555556f1ddd0, visitor=0x555556f1deb0, rect=..., index=<optimized out>)
          at graphicsview/qgraphicsscene_bsp.cpp:248
      #7  0x00007fffeb85588a in QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (this=0x555556f1ddd0, visitor=0x555556f1deb0, rect=..., index=<optimized out>)
          at graphicsview/qgraphicsscene_bsp.cpp:257
      #8  0x00007fffeb85ad36 in QGraphicsSceneBspTree::items(QRectF const&, bool) const (onlyTopLevelItems=true, rect=..., this=0x555556f1ddd0) at graphicsview/qgraphicsscene_bsp.cpp:150
      #9  QGraphicsSceneBspTreeIndexPrivate::estimateItems(QRectF const&, Qt::SortOrder, bool) (this=0x555556f1dd70, rect=..., order=Qt::AscendingOrder, onlyTopLevelItems=onlyTopLevelItems@entry=true)
          at graphicsview/qgraphicsscenebsptreeindex.cpp:387
      #10 0x00007fffeb85b09c in QGraphicsSceneBspTreeIndex::estimateTopLevelItems(QRectF const&, Qt::SortOrder) const (this=<optimized out>, rect=<optimized out>, order=<optimized out>) at graphicsview/qgraphicsscenebsptreeindex.cpp:541
      #11 0x00007fffeb86fe8f in QGraphicsScenePrivate::drawItems(QPainter*, QTransform const*, QRegion*, QWidget*)
          (widget=0x555556f1d9e0, exposedRegion=0x555556f1d4c0, viewTransform=0x7fffffffb050, painter=0x7fffffffb000, this=0x555556ddb8c0) at graphicsview/qgraphicsscene.cpp:4733
      #12 QGraphicsView::paintEvent(QPaintEvent*) (this=<optimized out>, event=<optimized out>) at graphicsview/qgraphicsview.cpp:3561
      #13 0x00007fffeb5564dc in QWidget::event(QEvent*) (this=0x555556f19940, event=0x7fffffffb3c0) at kernel/qwidget.cpp:8814
      #14 0x00007fffeb6074c3 in QFrame::event(QEvent*) (this=0x555556f19940, e=0x7fffffffb3c0) at widgets/qframe.cpp:550
      #15 0x00007fffea9e332a in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (event=<optimized out>, receiver=<optimized out>) at kernel/qcoreapplication.cpp:1190
      #16 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (receiver=receiver@entry=0x555556f1d9e0, event=event@entry=0x7fffffffb3c0) at kernel/qcoreapplication.cpp:1179
      #17 0x00007fffeb5201b5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x555556f1d9e0, e=0x7fffffffb3c0) at kernel/qapplication.cpp:3631
      #18 0x00007fffea9e45aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555556f1d9e0, event=0x7fffffffb3c0) at kernel/qcoreapplication.cpp:1064
      #19 0x00007fffeb54a1fc in QWidgetPrivate::sendPaintEvent(QRegion const&) (this=this@entry=0x555556f1da20, toBePainted=...) at kernel/qwidget.cpp:5467
      #20 0x00007fffeb54b592 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x555556f1da20, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5417
      #21 0x00007fffeb54c075 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x555556f1d000, pdev=0x555555927be0, siblings=<optimized out>, index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5598
      #22 0x00007fffeb54be96 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x555556f1d000, pdev=0x555555927be0, siblings=..., index=3, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5584
      #23 0x00007fffeb54be96 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x555556f1d000, pdev=0x555555927be0, siblings=..., index=4, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5584
      #24 0x00007fffeb54be96 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x555556f1d000, pdev=0x555555927be0, siblings=..., index=5, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5584
      #25 0x00007fffeb54be96 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=this@entry=0x555556f1d000, pdev=pdev@entry=0x555555927be0, siblings=..., index=6, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5584
      #26 0x00007fffeb54aac3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x555556f1d000, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5458
      #27 0x00007fffeb54c075 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=this@entry=0x555557a36340, pdev=pdev@entry=0x555555927be0, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5598
      #28 0x00007fffeb54aac3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x555557a36340, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5458
      #29 0x00007fffeb54c075 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=this@entry=0x5555558ed250, pdev=pdev@entry=0x555555927be0, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5598
      #30 0x00007fffeb54aac3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x5555558ed250, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5458
      #31 0x00007fffeb54c075 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=this@entry=0x5555558ceb60, pdev=pdev@entry=0x555555927be0, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5598
      #32 0x00007fffeb54aac3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
          (this=0x5555558ceb60, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5458
      #33 0x00007fffeb54c075 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
      --Type <RET> for more, q to quit, c to continue without paging--c
          (this=this@entry=0x555555919090, pdev=pdev@entry=0x555555927be0, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5598
      #34 0x00007fffeb54aac3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555555919090, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5458
      #35 0x00007fffeb54c075 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=this@entry=0x5555558f3200, pdev=pdev@entry=0x555555927be0, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5598
      #36 0x00007fffeb54aac3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555558f3200, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5458
      #37 0x00007fffeb54c075 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555555711d00, pdev=0x555555927be0, siblings=<optimized out>, index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5598
      #38 0x00007fffeb54be96 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555555711d00, pdev=0x555555927be0, siblings=..., index=28, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5584
      #39 0x00007fffeb54be96 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555555711d00, pdev=0x555555927be0, siblings=..., index=29, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5584
      #40 0x00007fffeb54be96 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=this@entry=0x555555711d00, pdev=pdev@entry=0x555555927be0, siblings=..., index=30, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x5555577939e0) at kernel/qwidget.cpp:5584
      #41 0x00007fffeb54aac3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555555711d00, pdev=0x555555927be0, rgn=..., offset=<optimized out>, flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5458
      #42 0x00007fffeb52bb90 in QWidgetRepaintManager::paintAndFlush() (this=<optimized out>) at kernel/qwidgetrepaintmanager.cpp:1009
      #43 0x00007fffeb556855 in QWidget::event(QEvent*) (this=0x7fffffffdba0, event=0x7fffe0018c70) at kernel/qwidget.cpp:8978
      #44 0x00007fffeb5201c6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x7fffffffdba0, e=0x7fffe0018c70) at kernel/qapplication.cpp:3637
      #45 0x00007fffea9e45aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffffffdba0, event=0x7fffe0018c70) at kernel/qcoreapplication.cpp:1064
      #46 0x00007fffea9e50a9 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x7fffffffdba0, event_type=77, data=0x555555701180) at kernel/qcoreapplication.cpp:1821
      #47 0x00007fffeb856f0f in QGraphicsViewPrivate::dispatchPendingUpdateRequests() (this=<optimized out>, this=<optimized out>) at ../../include/QtWidgets/5.15.3/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsview_p.h:191
      #48 QGraphicsViewPrivate::dispatchPendingUpdateRequests() (this=0x555556f1d000) at ../../include/QtWidgets/5.15.3/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsview_p.h:186
      #49 QGraphicsScenePrivate::_q_processDirtyItems() (this=0x555556ddb8c0) at graphicsview/qgraphicsscene.cpp:516
      #50 QGraphicsScene::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qgraphicsscene.cpp:197
      #51 0x00007fffeaa087d6 in QObject::event(QEvent*) (this=<optimized out>, e=0x555555f1fe00) at kernel/qobject.cpp:1314
      #52 0x00007fffeb5201c6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x5555577e8190, e=0x555555f1fe00) at kernel/qapplication.cpp:3637
      #53 0x00007fffea9e45aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x5555577e8190, event=0x555555f1fe00) at kernel/qcoreapplication.cpp:1064
      #54 0x00007fffea9e50a9 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x555555701180) at kernel/qcoreapplication.cpp:1821
      #55 0x00007fffeaa2c678 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x555555880100) at kernel/qeventdispatcher_glib.cpp:277
      #56 0x00007fffe958eee3 in g_main_dispatch (context=0x7fffe0005010) at ../glib/glib/gmain.c:3381
      #57 g_main_context_dispatch (context=0x7fffe0005010) at ../glib/glib/gmain.c:4099
      #58 0x00007fffe95e50f9 in g_main_context_iterate.constprop.0 (context=context@entry=0x7fffe0005010, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4175
      #59 0x00007fffe958c455 in g_main_context_iteration (context=0x7fffe0005010, may_block=1) at ../glib/glib/gmain.c:4240
      #60 0x00007fffeaa3057a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x5555558856e0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
      #61 0x00007fffea9dc88b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffffffdac0, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
      #62 0x00007fffea9e7fd7 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
      #63 0x000055555557a2c9 in main(int, char**) (argc=1, argv=0x7fffffffde58) at /home/tcanabrava/Projects/diagram-server/desktopapp/desktopapp.m.cpp:72
      (gdb) 
      

      Attachments

        Activity

          People

            bibr Andreas Aardal Hanssen
            tomaz.canabrava tomaz.canabrava
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: