Bug 355009 - umbrello stopped working to the open a file try open another
Summary: umbrello stopped working to the open a file try open another
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2015-11-07 23:19 UTC by Mario Fernando
Modified: 2016-08-30 07:42 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 2.20.1 (KDE Applications 16.08.1)


Attachments
DiseñoClases.xmi (94.24 KB, text/x-xmi)
2015-11-10 02:08 UTC, Mario Fernando
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mario Fernando 2015-11-07 23:19:36 UTC
Application: umbrello (2.16.0)
KDE Platform Version: 4.14.11
Qt Version: 4.8.6
Operating System: Linux 4.2.5-201.fc22.i686 i686
Distribution: "Fedora release 22 (Twenty Two)"

-- Information about the crash:
He was working on a diagram and try to open another without closing that had opened and failure

The crash can be reproduced every time.

-- Backtrace:
Application: Umbrello UML Modeller (umbrello), signal: Segmentation fault
Using host libthread_db library "/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0xb42827c0 (LWP 5558))]

Thread 2 (Thread 0xb004db40 (LWP 5579)):
#0  0xffffffff in g_source_iter_next () at /lib/libglib-2.0.so.0
#1  0xffffffff in g_main_context_prepare () at /lib/libglib-2.0.so.0
#2  0xffffffff in g_main_context_iterate.isra () at /lib/libglib-2.0.so.0
#3  0xffffffff in g_main_context_iteration () at /lib/libglib-2.0.so.0
#4  0xffffffff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#5  0xffffffff in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#6  0xffffffff in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#7  0xffffffff in QThread::exec() () at /lib/libQtCore.so.4
#8  0xffffffff in QInotifyFileSystemWatcherEngine::run() () at /lib/libQtCore.so.4
#9  0xffffffff in QThreadPrivate::start(void*) () at /lib/libQtCore.so.4
#10 0xffffffff in start_thread () at /lib/libpthread.so.0
#11 0xffffffff in clone () at /lib/libc.so.6

Thread 1 (Thread 0xb42827c0 (LWP 5558)):
[KCrash Handler]
#7  0xffffffff in __dynamic_cast () at /lib/libstdc++.so.6
#8  0x082bd338 in ClassifierWidget::paint(QPainter*, QStyleOptionGraphicsItem const*, QWidget*) ()
#9  0xffffffff in QGraphicsScenePrivate::draw(QGraphicsItem*, QPainter*, QTransform const*, QTransform const*, QRegion*, QWidget*, double, QTransform const*, bool, bool) () at /lib/libQtGui.so.4
#10 0xffffffff in QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem*, QPainter*, QTransform const*, QRegion*, QWidget*, double, QTransform const*) () at /lib/libQtGui.so.4
#11 0xffffffff in QGraphicsScenePrivate::drawItems(QPainter*, QTransform const*, QRegion*, QWidget*) () at /lib/libQtGui.so.4
#12 0xffffffff in QGraphicsView::paintEvent(QPaintEvent*) () at /lib/libQtGui.so.4
#13 0xffffffff in QWidget::event(QEvent*) () at /lib/libQtGui.so.4
#14 0xffffffff in QFrame::event(QEvent*) () at /lib/libQtGui.so.4
#15 0xffffffff in QAbstractScrollArea::viewportEvent(QEvent*) () at /lib/libQtGui.so.4
#16 0xffffffff in QGraphicsView::viewportEvent(QEvent*) () at /lib/libQtGui.so.4
#17 0xffffffff in QAbstractScrollAreaFilter::eventFilter(QObject*, QEvent*) () at /lib/libQtGui.so.4
#18 0xffffffff in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /lib/libQtCore.so.4
#19 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/libQtGui.so.4
#20 0xffffffff in QApplication::notify(QObject*, QEvent*) () at /lib/libQtGui.so.4
#21 0xffffffff in KApplication::notify(QObject*, QEvent*) () at /lib/libkdeui.so.5
#22 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /lib/libQtCore.so.4
#23 0xffffffff in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#24 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#25 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#26 0xffffffff in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#27 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#28 0xffffffff in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#29 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#30 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#31 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#32 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#33 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#34 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#35 0xffffffff in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#36 0xffffffff in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /lib/libQtGui.so.4
#37 0xffffffff in QWidgetBackingStore::sync() () at /lib/libQtGui.so.4
#38 0xffffffff in QWidgetPrivate::syncBackingStore() () at /lib/libQtGui.so.4
#39 0xffffffff in QWidget::event(QEvent*) () at /lib/libQtGui.so.4
#40 0xffffffff in QMainWindow::event(QEvent*) () at /lib/libQtGui.so.4
#41 0xffffffff in KMainWindow::event(QEvent*) () at /lib/libkdeui.so.5
#42 0xffffffff in KXmlGuiWindow::event(QEvent*) () at /lib/libkdeui.so.5
#43 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/libQtGui.so.4
#44 0xffffffff in QApplication::notify(QObject*, QEvent*) () at /lib/libQtGui.so.4
#45 0xffffffff in KApplication::notify(QObject*, QEvent*) () at /lib/libkdeui.so.5
#46 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /lib/libQtCore.so.4
#47 0xffffffff in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /lib/libQtCore.so.4
#48 0xffffffff in QCoreApplication::sendPostedEvents(QObject*, int) () at /lib/libQtCore.so.4
#49 0xffffffff in QGraphicsScenePrivate::_q_processDirtyItems() () at /lib/libQtGui.so.4
#50 0xffffffff in QGraphicsScene::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) [clone .part.155] () at /lib/libQtGui.so.4
#51 0xffffffff in QMetaCallEvent::placeMetaCall(QObject*) () at /lib/libQtCore.so.4
#52 0xffffffff in QObject::event(QEvent*) () at /lib/libQtCore.so.4
#53 0xffffffff in QGraphicsScene::event(QEvent*) () at /lib/libQtGui.so.4
#54 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/libQtGui.so.4
#55 0xffffffff in QApplication::notify(QObject*, QEvent*) () at /lib/libQtGui.so.4
#56 0xffffffff in KApplication::notify(QObject*, QEvent*) () at /lib/libkdeui.so.5
#57 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /lib/libQtCore.so.4
#58 0xffffffff in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /lib/libQtCore.so.4
#59 0xffffffff in QCoreApplication::sendPostedEvents(QObject*, int) () at /lib/libQtCore.so.4
#60 0xffffffff in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib/libQtCore.so.4
#61 0xffffffff in g_main_context_dispatch () at /lib/libglib-2.0.so.0
#62 0xffffffff in g_main_context_iterate.isra () at /lib/libglib-2.0.so.0
#63 0xffffffff in g_main_context_iteration () at /lib/libglib-2.0.so.0
#64 0xffffffff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#65 0xffffffff in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtGui.so.4
#66 0xffffffff in QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#67 0x083a4d8a in UMLDoc::loadFromXMI(QIODevice&, short) ()
#68 0x083aa034 in UMLDoc::openDocument(KUrl const&, char const*) ()
#69 0x08383eea in UMLApp::slotFileOpen() ()
#70 0x0807ea91 in UMLApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) [clone .part.13] ()
#71 0xffffffff in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib/libQtCore.so.4
#72 0xffffffff in QAction::triggered(bool) () at /lib/libQtGui.so.4
#73 0xffffffff in QAction::activate(QAction::ActionEvent) () at /lib/libQtGui.so.4
#74 0xffffffff in QToolButton::nextCheckState() () at /lib/libQtGui.so.4
#75 0xffffffff in QAbstractButtonPrivate::click() () at /lib/libQtGui.so.4
#76 0xffffffff in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () at /lib/libQtGui.so.4
#77 0xffffffff in QToolButton::mouseReleaseEvent(QMouseEvent*) () at /lib/libQtGui.so.4
#78 0xffffffff in QWidget::event(QEvent*) () at /lib/libQtGui.so.4
#79 0xffffffff in QAbstractButton::event(QEvent*) () at /lib/libQtGui.so.4
#80 0xffffffff in QToolButton::event(QEvent*) () at /lib/libQtGui.so.4
#81 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/libQtGui.so.4
#82 0xffffffff in QApplication::notify(QObject*, QEvent*) () at /lib/libQtGui.so.4
#83 0xffffffff in KApplication::notify(QObject*, QEvent*) () at /lib/libkdeui.so.5
#84 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /lib/libQtCore.so.4
#85 0xffffffff in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /lib/libQtGui.so.4
#86 0xffffffff in QETWidget::translateMouseEvent(_XEvent const*) () at /lib/libQtGui.so.4
#87 0xffffffff in QApplication::x11ProcessEvent(_XEvent*) () at /lib/libQtGui.so.4
#88 0xffffffff in x11EventSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib/libQtGui.so.4
#89 0xffffffff in g_main_context_dispatch () at /lib/libglib-2.0.so.0
#90 0xffffffff in g_main_context_iterate.isra () at /lib/libglib-2.0.so.0
#91 0xffffffff in g_main_context_iteration () at /lib/libglib-2.0.so.0
#92 0xffffffff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#93 0xffffffff in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtGui.so.4
#94 0xffffffff in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#95 0xffffffff in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/libQtCore.so.4
#96 0xffffffff in QCoreApplication::exec() () at /lib/libQtCore.so.4
#97 0xffffffff in QApplication::exec() () at /lib/libQtGui.so.4
#98 0x0807be55 in main ()

Reported using DrKonqi
Comment 1 Ralf Habacker 2015-11-09 11:53:34 UTC
(In reply to Mario Fernando from comment #0)
Please provide a testcase xmi file because it looks data specific.
Comment 2 Mario Fernando 2015-11-10 02:08:22 UTC
Created attachment 95413 [details]
DiseñoClases.xmi

This is the XML file with which to work, to have this open and try to open
another umbrello stops.




2015-11-09 6:53 GMT-05:00 Ralf Habacker via KDE Bugzilla <
bugzilla_noreply@kde.org>:

> https://bugs.kde.org/show_bug.cgi?id=355009
>
> Ralf Habacker <ralf.habacker@freenet.de> changed:
>
>            What    |Removed                     |Added
>
> ----------------------------------------------------------------------------
>                  CC|                            |ralf.habacker@freenet.de
>
> --- Comment #1 from Ralf Habacker <ralf.habacker@freenet.de> ---
> (In reply to Mario Fernando from comment #0)
> Please provide a testcase xmi file because it looks data specific.
>
> --
> You are receiving this mail because:
> You reported the bug.
>
Comment 3 Ralf Habacker 2016-08-30 04:48:52 UTC
Git commit 211f1d5e0b242414ece60b35aa8078c3ded5cb0d by Ralf Habacker.
Committed on 30/08/2016 at 04:48.
Pushed by habacker into branch 'Applications/16.08'.

Add missing attribute 'font' and 'seqnum' for xml tag 'assocwidget' to umbrello-diagrams.dtd

M  +3    -1    doc/xml/umbrello-diagrams.dtd

http://commits.kde.org/umbrello/211f1d5e0b242414ece60b35aa8078c3ded5cb0d
Comment 4 Ralf Habacker 2016-08-30 05:28:48 UTC
>#7 0xffffffff in __dynamic_cast () at /lib/libstdc++.so.6 
>#8 0x082bd338 in ClassifierWidget::paint(QPainter*, QStyleOptionGraphicsItem const*, QWidget*) ()
The callstack indicates that the crash happens somewhere in ClassifierWidget::paint() performing an invalid dynamic cast. 
An invalid cast is performed in classifier() called at line 672:
    UMLClassifier *umlc = this->classifier();
which expands to 
    return dynamic_cast<UMLClassifier*>(m_umlObject);

Stackoverflow mentioned several reasons for crashing dynamic cast here http://stackoverflow.com/questions/278429/what-could-cause-a-dynamic-cast-to-crash. 

The most common reason for such issues is that the related m_umlObject has been destroyed, which we can catch with QPointer.
Comment 5 Ralf Habacker 2016-08-30 07:42:37 UTC
Git commit 793ca536f67b59bed882f280ec7c9bcd1fffdb4f by Ralf Habacker.
Committed on 30/08/2016 at 07:42.
Pushed by habacker into branch 'Applications/16.08'.

Fix 'umbrello stopped working to the open a file try open another'.

There is still room for improvements in the case where the result from
dynamic_cast is 0 and used unconditional.
FIXED-IN:2.20.1 (KDE Applications 16.08.1)

M  +2    -2    umbrello/umlwidgets/artifactwidget.cpp
M  +8    -8    umbrello/umlwidgets/associationwidget.cpp
M  +1    -1    umbrello/umlwidgets/categorywidget.cpp
M  +1    -1    umbrello/umlwidgets/classifierwidget.cpp
M  +3    -3    umbrello/umlwidgets/componentwidget.cpp
M  +8    -8    umbrello/umlwidgets/entitywidget.cpp
M  +4    -4    umbrello/umlwidgets/enumwidget.cpp
M  +1    -1    umbrello/umlwidgets/messagewidget.cpp
M  +2    -1    umbrello/umlwidgets/widgetbase.h

http://commits.kde.org/umbrello/793ca536f67b59bed882f280ec7c9bcd1fffdb4f