[umbrello] [Bug 430322] New: Crash on exit with tabbed diagrams enabled

Oliver Kellogg bugzilla_noreply at kde.org
Sat Dec 12 22:03:11 GMT 2020


https://bugs.kde.org/show_bug.cgi?id=430322

            Bug ID: 430322
           Summary: Crash on exit with tabbed diagrams enabled
           Product: umbrello
           Version: Git
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: umbrello-devel at kde.org
          Reporter: okellogg at users.sourceforge.net
  Target Milestone: ---

SUMMARY

After import of a large Rose MDL file with very many diagrams, Umbrello crashed
on exit.
In Settings -> Configure Umbrello -> General Settings "Miscellaneous", "Use
tabbed diagrams" had been active.

STEPS TO REPRODUCE
1. Start Umbrello, ensure that "Use tabbed diagrams" is activated.
2. Load a model with very many diagrams (in my case resulting form a
   Rose model import - but may also happen in other usage scenarios)
3. Click around, select different diagrams, perhaps rearrange some diagram
   objects
4. Select File -> Quit or press the mainwindow "X" corner symbol
5. On dialog "The current file has been modified. Do you want to save it?"
   press Discard.


OBSERVED RESULT

Segfault with following backtrace:

#4  in std::__atomic_base<int>::operator++() (this=0x7f379ab77901 <typeinfo
name for QFutureWatcherBase+17>) at /usr/include/c++/10/bits/atomic_base.h:326
#5  in QAtomicOps<int>::ref<int>(std::atomic<int>&) (_q_value=...) at
/usr/include/qt5/QtCore/qatomic_cxx11.h:283
#6  in QBasicAtomicInteger<int>::ref() (this=0x7f379ab77901 <typeinfo name for
QFutureWatcherBase+17>) at /usr/include/qt5/QtCore/qbasicatomic.h:118
#7  in QtPrivate::RefCount::ref() (this=0x7f379ab77901 <typeinfo name for
QFutureWatcherBase+17>) at /usr/include/qt5/QtCore/qrefcount.h:61
#8  in QString::QString(QString const&) (this=0x7ffc93c3e568, other=...) at
/usr/include/qt5/QtCore/qstring.h:1094
#9  in UMLScene::documentation() const (this=0x7f3790028f20) at
/u/umbrello/umlscene.cpp:359
#10 in DocWindow::isModified() (this=0x203c700) at
/u/umbrello/docwindow.cpp:353
#11 in DocWindow::updateDocumentation(bool, bool) (this=0x203c700, clear=true,
startup=false) at /u/umbrello/docwindow.cpp:278
#12 in DocWindow::showDocumentation(UMLScene*, bool) (this=0x203c700,
scene=0xd6da320, overwrite=false) at /u/umbrello/docwindow.cpp:185
#13 in UMLDoc::changeCurrentView(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >) (this=0x1a23be0,
id="49A5573701AF") at /u/umbrello/umldoc.cpp:1790
#14 in UMLApp::slotTabChanged(int) (this=0x18fec30, index=0) at
/u/umbrello/uml.cpp:3199
#15 in UMLApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
(_o=0x18fec30, _c=QMetaObject::InvokeMetaMethod, _id=81, _a=0x7ffc93c3e910) at
/u/build/umbrello/libumbrello_autogen/EWIEGA46WW/moc_uml.cpp:560
#16 in doActivate<false>(QObject*, int, void**) (sender=0x1f48d80,
signal_index=7, argv=argv at entry=0x7ffc93c3e910) at
../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
#17 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
(sender=<optimized out>, m=m at entry=0x7f379bbd68c0
<QTabWidget::staticMetaObject>, local_signal_index=local_signal_index at entry=0,
argv=argv at entry=0x7ffc93c3e910) at kernel/qobject.cpp:3946
#18 in QTabWidget::currentChanged(int) (this=<optimized out>, _t1=<optimized
out>) at .moc/moc_qtabwidget.cpp:326
#19 in doActivate<false>(QObject*, int, void**) (sender=0x1f51020,
signal_index=7, argv=argv at entry=0x7ffc93c3ea30) at
../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
#20 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
(sender=sender at entry=0x1f51020, m=m at entry=0x7f379bbd5320
<QTabBar::staticMetaObject>, local_signal_index=local_signal_index at entry=0,
argv=argv at entry=0x7ffc93c3ea30) at kernel/qobject.cpp:3946
#21 in QTabBar::currentChanged(int) (this=this at entry=0x1f51020, _t1=<optimized
out>, _t1 at entry=0) at .moc/moc_qtabbar.cpp:338
#22 in QTabBar::setCurrentIndex(int) (this=this at entry=0x1f51020,
index=index at entry=0) at widgets/qtabbar.cpp:1450
#23 in QTabBar::removeTab(int) (this=0x1f51020, index=<optimized out>,
index at entry=0) at widgets/qtabbar.cpp:1094
#24 in QTabWidgetPrivate::_q_removeTab(int) (index=0, this=<optimized out>) at
widgets/qtabwidget.cpp:802
#25 QTabWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
(_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized
out>) at .moc/moc_qtabwidget.cpp:178
#26 0x00007f379aac78a0 in doActivate<false>(QObject*, int, void**)
(sender=0x1f50b40, signal_index=8, argv=argv at entry=0x7ffc93c3ec10) at
../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
#27 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
(sender=<optimized out>, m=m at entry=0x7f379bbd4d00
<QStackedWidget::staticMetaObject>,
local_signal_index=local_signal_index at entry=1, argv=argv at entry=0x7ffc93c3ec10)
at kernel/qobject.cpp:3946
#28 in QStackedWidget::widgetRemoved(int) (this=<optimized out>, _t1=<optimized
out>) at .moc/moc_qstackedwidget.cpp:226
#29 in doActivate<false>(QObject*, int, void**) (sender=0x1f50a50,
signal_index=3, argv=argv at entry=0x7ffc93c3ed30) at
../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
#30 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
(sender=sender at entry=0x1f50a50, m=m at entry=0x7f379bbc5360
<QStackedLayout::staticMetaObject>,
local_signal_index=local_signal_index at entry=0, argv=argv at entry=0x7ffc93c3ed30)
at kernel/qobject.cpp:3946
#31 in QStackedLayout::widgetRemoved(int) (this=this at entry=0x1f50a50,
_t1=<optimized out>, _t1 at entry=0) at .moc/moc_qstackedlayout.cpp:220
#32 in QStackedLayout::takeAt(int) (this=0x1f50a50, index=0) at
kernel/qstackedlayout.cpp:280
#33 in removeWidgetRecursively(QLayoutItem*, QObject*) (li=<optimized out>,
w=0xd71e8c0) at kernel/qlayout.cpp:573
#34 in QLayout::widgetEvent(QEvent*) (this=<optimized out>,
e=e at entry=0x7ffc93c3ee90) at
../../include/QtCore/../../src/corelib/kernel/qcoreevent.h:354
#35 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized
out>, receiver=0x1f50b40, e=0x7ffc93c3ee90) at kernel/qapplication.cpp:3621
#36 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(receiver=0x1f50b40, event=0x7ffc93c3ee90) at
../../include/QtCore/5.15.2/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325
#37 in QObjectPrivate::setParent_helper(QObject*) (this=0xd701ec0, o=0x0) at
kernel/qobject.cpp:2149
#38 in QObject::~QObject() (this=<optimized out>, __in_chrg=<optimized out>) at
kernel/qobject.cpp:1093
#39 in UMLView::~UMLView() (this=0xd71e8c0, __in_chrg=<optimized out>) at
/u/umbrello/umlview.cpp:48
#40 in UMLView::~UMLView() (this=0xd71e8c0, __in_chrg=<optimized out>) at
/u/umbrello/umlview.cpp:51
#41 in qDeleteAll<QList<QPointer<UMLView>
>::const_iterator>(QList<QPointer<UMLView> >::const_iterator,
QList<QPointer<UMLView> >::const_iterator) (begin=..., end=...) at
/usr/include/qt5/QtCore/qalgorithms.h:320
#42 in qDeleteAll<QList<QPointer<UMLView> > >(QList<QPointer<UMLView> > const&)
(c=...) at /usr/include/qt5/QtCore/qalgorithms.h:328
#43 in UMLFolder::~UMLFolder() (this=0xd6d9cc0, __in_chrg=<optimized out>) at
/u/umbrello/uml1model/folder.cpp:52
#44 in UMLFolder::~UMLFolder() (this=0xd6d9cc0, __in_chrg=<optimized out>) at
/u/umbrello/uml1model/folder.cpp:54
#45 in UMLPackage::removeAllObjects() (this=0xbc3abc0) at
/u/umbrello/uml1model/package.cpp:259
#46 in UMLPackage::removeAllObjects() (this=0x91ac220) at
/u/umbrello/uml1model/package.cpp:257
#47 in UMLPackage::removeAllObjects() (this=0x91a6150) at
/u/umbrello/uml1model/package.cpp:257
#48 in UMLPackage::removeAllObjects() (this=0x21b81a0) at
/u/umbrello/uml1model/package.cpp:257
#49 in UMLPackage::removeAllObjects() (this=0x1c6db50) at
/u/umbrello/uml1model/package.cpp:257
#50 in UMLDoc::removeAllObjects() (this=0x1a23be0) at
/u/umbrello/umldoc.cpp:2931
#51 in UMLDoc::closeDocument() (this=0x1a23be0) at /u/umbrello/umldoc.cpp:432
#52 in UMLDoc::saveModified() (this=0x1a23be0) at /u/umbrello/umldoc.cpp:386
#53 in UMLApp::queryClose() (this=0x18fec30) at /u/umbrello/uml.cpp:1235
#54 in KMainWindow::closeEvent(QCloseEvent*) () at /usr/lib64/libKF5XmlGui.so.5


EXPECTED RESULT

Don't crash.

SOFTWARE/OS VERSIONS
Umbrello: git master @ 526bd5ac
Linux/KDE Plasma: openSuSE Tumbleweed 20201129
KDE Plasma Version: 5.20.3
KDE Frameworks Version: 5.76.0
Qt Version: 5.15.2

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the umbrello-devel mailing list