Bug 383592 - Crash in component diagram after deleting component
Summary: Crash in component diagram after deleting component
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords: drkonqi
: 384618 (view as bug list)
Depends on:
Blocks:
 
Reported: 2017-08-16 10:38 UTC by Ralf Habacker
Modified: 2017-09-12 20:29 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 2.23.1 (KDE Applications 17.08.1)
Sentry Crash Report:


Attachments
test case (16.76 KB, text/x-xmi)
2017-08-16 10:39 UTC, Ralf Habacker
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ralf Habacker 2017-08-16 10:38:45 UTC
Application: umbrello (2.23.0-22682b2)
KDE Platform Version: 4.14.33 (Compiled from sources)
Qt Version: 4.8.7
Operating System: Linux 3.12.62-55-desktop x86_64
Distribution: "openSUSE 13.1 (Bottle) (x86_64)"

-- Information about the crash:
- What I was doing when the application crashed:
1. open appended file
2. open component diagram
3. delete component 'webserver'
4. click on any object in the scene

The crash can be reproduced every time.

-- Backtrace:
Application: Umbrello UML Modeller (umbrello), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[KCrash Handler]
#6  QGraphicsItem::parentItem (this=this@entry=0xffff00000001) at graphicsview/qgraphicsitem.cpp:1576
#7  0x00007fde2d4b313b in QGraphicsItem::topLevelItem (this=<optimized out>) at graphicsview/qgraphicsitem.cpp:1589
#8  0x00007fde2d4ff5d3 in QGraphicsSceneFindItemBspTreeVisitor::visit (this=0x2afd070, items=0x2c18da0) at graphicsview/qgraphicsscene_bsp.cpp:80
#9  0x00007fde2d4fe482 in QGraphicsSceneBspTree::climbTree (this=0x2c1df78, visitor=0x2afd070, rect=..., index=<optimized out>) at graphicsview/qgraphicsscene_bsp.cpp:261
#10 0x00007fde2d4fe482 in QGraphicsSceneBspTree::climbTree (this=0x2c1df78, visitor=0x2afd070, rect=..., index=<optimized out>) at graphicsview/qgraphicsscene_bsp.cpp:261
#11 0x00007fde2d4fe4de in QGraphicsSceneBspTree::climbTree (this=0x2c1df78, visitor=0x2afd070, rect=..., index=<optimized out>) at graphicsview/qgraphicsscene_bsp.cpp:252
#12 0x00007fde2d4feb8f in QGraphicsSceneBspTree::items (this=this@entry=0x2c1df78, rect=..., onlyTopLevelItems=onlyTopLevelItems@entry=true) at graphicsview/qgraphicsscene_bsp.cpp:154
#13 0x00007fde2d501860 in QGraphicsSceneBspTreeIndexPrivate::estimateItems (this=0x2c1ded0, rect=..., order=Qt::AscendingOrder, onlyTopLevelItems=onlyTopLevelItems@entry=true) at graphicsview/qgraphicsscenebsptreeindex.cpp:387
#14 0x00007fde2d5019f3 in QGraphicsSceneBspTreeIndex::estimateTopLevelItems (this=<optimized out>, rect=..., order=<optimized out>) at graphicsview/qgraphicsscenebsptreeindex.cpp:540
#15 0x00007fde2d504ba6 in items_helper (order=Qt::DescendingOrder, mode=Qt::IntersectsItemShape, viewTransform=..., items=0x7ffcb9bb7a90, intersector=0x2ad9b20, rect=..., this=0x2c1ded0) at graphicsview/qgraphicssceneindex_p.h:157
#16 QGraphicsSceneIndex::items (this=<optimized out>, pos=..., mode=mode@entry=Qt::IntersectsItemShape, order=order@entry=Qt::DescendingOrder, deviceTransform=...) at graphicsview/qgraphicssceneindex.cpp:423
#17 0x00007fde2d4dfaac in QGraphicsScene::items (this=<optimized out>, pos=...) at graphicsview/qgraphicsscene.cpp:1976
#18 0x00007fde2d4e0ec7 in QGraphicsScene::itemAt (this=<optimized out>, position=...) at graphicsview/qgraphicsscene.cpp:2211
#19 0x0000000000479cc9 in UMLScene::widgetAt (this=<optimized out>, p=...) at /home/ralf.habacker/src/umbrello-17.08/umbrello/umlscene.cpp:978
#20 0x0000000000674e9d in ToolBarState::setCurrentElement (this=0x2a57b00) at /home/ralf.habacker/src/umbrello-17.08/umbrello/toolbarstate.cpp:303
#21 0x00000000006744fc in ToolBarState::mousePress (this=0x2a57b00, ome=<optimized out>) at /home/ralf.habacker/src/umbrello-17.08/umbrello/toolbarstate.cpp:90
#22 0x000000000047eed0 in UMLScene::mousePressEvent (this=0x2c1d910, event=0x7ffcb9bb7e70) at /home/ralf.habacker/src/umbrello-17.08/umbrello/umlscene.cpp:852
#23 0x00007fde2d4f95c0 in QGraphicsScene::event (this=0x2c1d910, event=0x7ffcb9bb7e70) at graphicsview/qgraphicsscene.cpp:3455
#24 0x00007fde2cf12d9c in QApplicationPrivate::notify_helper (this=this@entry=0x22227a0, receiver=receiver@entry=0x2c1d910, e=e@entry=0x7ffcb9bb7e70) at kernel/qapplication.cpp:4565
#25 0x00007fde2cf1931d in QApplication::notify (this=this@entry=0x7ffcb9bb8c90, receiver=receiver@entry=0x2c1d910, e=e@entry=0x7ffcb9bb7e70) at kernel/qapplication.cpp:4351
#26 0x00007fde2ea3389a in KApplication::notify (this=0x7ffcb9bb8c90, receiver=0x2c1d910, event=0x7ffcb9bb7e70) at /usr/src/debug/kdelibs-4.14.33/kdeui/kernel/kapplication.cpp:311
#27 0x00007fde2c9cbe6d in QCoreApplication::notifyInternal (this=0x7ffcb9bb8c90, receiver=0x2c1d910, event=event@entry=0x7ffcb9bb7e70) at kernel/qcoreapplication.cpp:955
#28 0x00007fde2cf11736 in sendSpontaneousEvent (event=event@entry=0x7ffcb9bb7e70, receiver=<optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:234
#29 qt_sendSpontaneousEvent (receiver=<optimized out>, event=event@entry=0x7ffcb9bb7e70) at kernel/qapplication.cpp:5563
#30 0x00007fde2d50ff9f in QGraphicsView::mousePressEvent (this=this@entry=0x2c196a0, event=event@entry=0x7ffcb9bb8450) at graphicsview/qgraphicsview.cpp:3164
#31 0x000000000048a683 in UMLView::mousePressEvent (this=0x2c196a0, event=0x7ffcb9bb8450) at /home/ralf.habacker/src/umbrello-17.08/umbrello/umlview.cpp:206
#32 0x00007fde2cf652c1 in QWidget::event (this=this@entry=0x2c196a0, event=event@entry=0x7ffcb9bb8450) at kernel/qwidget.cpp:8385
#33 0x00007fde2d303b6e in QFrame::event (this=0x2c196a0, e=0x7ffcb9bb8450) at widgets/qframe.cpp:557
#34 0x00007fde2d510cf9 in QGraphicsView::viewportEvent (this=0x2c196a0, event=0x7ffcb9bb8450) at graphicsview/qgraphicsview.cpp:2866
#35 0x00007fde2c9cbfd6 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=this@entry=0x22227a0, receiver=receiver@entry=0x2c24ac0, event=event@entry=0x7ffcb9bb8450) at kernel/qcoreapplication.cpp:1065
#36 0x00007fde2cf12d7c in QApplicationPrivate::notify_helper (this=this@entry=0x22227a0, receiver=receiver@entry=0x2c24ac0, e=e@entry=0x7ffcb9bb8450) at kernel/qapplication.cpp:4561
#37 0x00007fde2cf1945a in QApplication::notify (this=this@entry=0x7ffcb9bb8c90, receiver=receiver@entry=0x2c24ac0, e=e@entry=0x7ffcb9bb8450) at kernel/qapplication.cpp:4108
#38 0x00007fde2ea3389a in KApplication::notify (this=0x7ffcb9bb8c90, receiver=0x2c24ac0, event=0x7ffcb9bb8450) at /usr/src/debug/kdelibs-4.14.33/kdeui/kernel/kapplication.cpp:311
#39 0x00007fde2c9cbe6d in QCoreApplication::notifyInternal (this=0x7ffcb9bb8c90, receiver=receiver@entry=0x2c24ac0, event=event@entry=0x7ffcb9bb8450) at kernel/qcoreapplication.cpp:955
#40 0x00007fde2cf18c53 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:231
#41 QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0x2c24ac0, event=event@entry=0x7ffcb9bb8450, alienWidget=alienWidget@entry=0x2c24ac0, nativeWidget=nativeWidget@entry=0x28beab0, buttonDown=buttonDown@entry=0x7fde2d9fa2e8 <qt_button_down>, lastMouseReceiver=..., spontaneous=spontaneous@entry=true) at kernel/qapplication.cpp:3173
#42 0x00007fde2cf8d5cb in QETWidget::translateMouseEvent (this=this@entry=0x28beab0, event=event@entry=0x7ffcb9bb87c0) at kernel/qapplication_x11.cpp:4536
#43 0x00007fde2cf8c03c in QApplication::x11ProcessEvent (this=0x7ffcb9bb8c90, event=event@entry=0x7ffcb9bb87c0) at kernel/qapplication_x11.cpp:3653
#44 0x00007fde2cfb2ef2 in x11EventSourceDispatch (s=0x22142b0, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#45 0x00007fde29a0c316 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#46 0x00007fde29a0c668 in ?? () from /usr/lib64/libglib-2.0.so.0
#47 0x00007fde29a0c70c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#48 0x00007fde2c9f8d4e in QEventDispatcherGlib::processEvents (this=0x213e700, flags=...) at kernel/qeventdispatcher_glib.cpp:450
#49 0x00007fde2cfb2fa6 in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#50 0x00007fde2c9caa3f in QEventLoop::processEvents (this=this@entry=0x7ffcb9bb8ba0, flags=...) at kernel/qeventloop.cpp:149
#51 0x00007fde2c9cad35 in QEventLoop::exec (this=this@entry=0x7ffcb9bb8ba0, flags=...) at kernel/qeventloop.cpp:204
#52 0x00007fde2c9d01bb in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1227
#53 0x00007fde2cf1155c in QApplication::exec () at kernel/qapplication.cpp:3823
#54 0x000000000043ffe5 in main (argc=<optimized out>, argv=<optimized out>) at /home/ralf.habacker/src/umbrello-17.08/umbrello/main.cpp:248

Reported using DrKonqi
Comment 1 Ralf Habacker 2017-08-16 10:39:14 UTC
Created attachment 107309 [details]
test case
Comment 2 Ralf Habacker 2017-08-17 10:24:26 UTC
Git commit de5622502762d26dc9ba5e3ea9eb9e2600256b45 by Ralf Habacker.
Committed on 17/08/2017 at 10:23.
Pushed by habacker into branch 'Applications/17.08'.

Fix 'Crash in component diagram after deleting component'

In case a QGraphicsItem instance is on a scene and should be
deleted QGraphicsScenePrivate::removeItemHelper() is called.
The documentation say it leaves stale index in the tree, which let
QGraphicsScene crash on the next paint.

For now using the index has been disabled to avoid this issue.

FIXED-IN:2.23.1 (KDE Applications 17.08.1)

M  +3    -0    umbrello/umlscene.cpp

https://commits.kde.org/umbrello/de5622502762d26dc9ba5e3ea9eb9e2600256b45
Comment 3 Ralf Habacker 2017-08-17 10:24:26 UTC
Git commit ffdd4bfabdf830c859c2a4abfa711e715beeefdc by Ralf Habacker.
Committed on 17/08/2017 at 10:04.
Pushed by habacker into branch 'Applications/17.08'.

Fix memory leaks

M  +9    -0    umbrello/toolbarstatearrow.cpp
M  +1    -0    umbrello/toolbarstatearrow.h
M  +2    -0    umbrello/toolbarstatemessages.cpp
M  +4    -0    umbrello/umlappprivate.h
M  +4    -0    umbrello/umlwidgets/associationline.cpp
M  +1    -0    umbrello/umlwidgets/associationwidget.cpp
M  +1    -0    umbrello/umlwidgets/seqlinewidget.cpp

https://commits.kde.org/umbrello/ffdd4bfabdf830c859c2a4abfa711e715beeefdc
Comment 4 Ralf Habacker 2017-09-12 20:29:31 UTC
*** Bug 384618 has been marked as a duplicate of this bug. ***