umbrello sequence diagrams supports object creating. Using this feature let umbrello crash Reproducible: Always Steps to Reproduce: 1. open umbrello 2. add two classes 3. add a sequence diagram 4. add objects of both classes to sequence diagram 5. select synchronous message 6. select vertical line of first object 7. click on the second object to add a creation message Actual Results: umbrello crashes with the following backtrace 0 QTextEngine::itemize() const /usr/lib64/libQtGui.so.4 0x7ffff57bc687 1 QTextEngine::width(int, int) const /usr/lib64/libQtGui.so.4 0x7ffff57befa0 2 QFontMetrics::width(QString const&, int, int) const /usr/lib64/libQtGui.so.4 0x7ffff5797900 3 FloatingTextWidget::minimumSize floatingtextwidget.cpp 185 0x5a898b 4 UMLWidget::constrain umlwidget.cpp 678 0x5bd42a 5 UMLWidget::updateGeometry umlwidget.cpp 1593 0x5be0db 6 MessageWidget::setTextPosition messagewidget.cpp 632 0x5acbb5 7 MessageWidget::setY messagewidget.cpp 162 0x5ace7b 8 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 9 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 10 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 11 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 12 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 13 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 14 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 15 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 16 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 17 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 18 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 19 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 20 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 21 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 22 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 23 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 24 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 25 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 26 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 27 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 28 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 29 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 30 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 31 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 32 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 33 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 .... 72844 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72845 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72846 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72847 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72848 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 72849 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 72850 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72851 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72852 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72853 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72854 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 72855 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 72856 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72857 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72858 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72859 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72860 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 72861 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 72862 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72863 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72864 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72865 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72866 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 72867 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 72868 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72869 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72870 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72871 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72872 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 72873 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 72874 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72875 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72876 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72877 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72878 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 72879 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 72880 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72881 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72882 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72883 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72884 MessageWidget::slotWidgetMoved messagewidget.cpp 729 0x5ad26c 72885 MessageWidget::qt_static_metacall messagewidget.moc 55 0x5ac940 72886 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /usr/lib64/libQtCore.so.4 0x7ffff46a3d68 72887 UMLWidget::sigWidgetMoved umlwidget.moc 124 0x5be5d0 72888 ObjectWidget::moveEvent objectwidget.cpp 306 0x5b3027 72889 MessageWidget::setY messagewidget.cpp 158 0x5ace4c 72890 MessageWidget::calculateDimensionsCreation messagewidget.cpp 1108 0x5ac483 72891 MessageWidget::calculateDimensions messagewidget.cpp 1003 0x5acedc 72892 MessageWidget::activate messagewidget.cpp 851 0x5ada0f 72893 MessageWidget::MessageWidget messagewidget.cpp 72 0x5adbda 72894 ToolBarStateMessages::setSecondWidget toolbarstatemessages.cpp 269 0x608bcd 72895 ToolBarState::mouseRelease toolbarstate.cpp 121 0x60646f 72896 QGraphicsScene::event(QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff5b544e0 72897 QApplicationPrivate::notify_helper(QObject*, QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff55738ac 72898 QApplication::notify(QObject*, QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff5579e70 72899 KApplication::notify(QObject*, QEvent*) /usr/lib64/libkdeui.so.5 0x7ffff628a5ea 72900 QCoreApplication::notifyInternal(QObject*, QEvent*) /usr/lib64/libQtCore.so.4 0x7ffff46900ad 72901 QGraphicsView::mouseReleaseEvent(QMouseEvent*) /usr/lib64/libQtGui.so.4 0x7ffff5b6b1b7 72902 UMLView::mouseReleaseEvent umlview.cpp 251 0x6451c0 72903 QWidget::event(QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff55c2dfe 72904 QFrame::event(QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff595fb6e 72905 QGraphicsView::viewportEvent(QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff5b6bbd9 72906 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) /usr/lib64/libQtCore.so.4 0x7ffff4690216 72907 QApplicationPrivate::notify_helper(QObject*, QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff557388c 72908 QApplication::notify(QObject*, QEvent*) /usr/lib64/libQtGui.so.4 0x7ffff5579fad 72909 KApplication::notify(QObject*, QEvent*) /usr/lib64/libkdeui.so.5 0x7ffff628a5ea 72910 QCoreApplication::notifyInternal(QObject*, QEvent*) /usr/lib64/libQtCore.so.4 0x7ffff46900ad 72911 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) /usr/lib64/libQtGui.so.4 0x7ffff5579763 72912 ?? /usr/lib64/libQtGui.so.4 0x7ffff55eaf7b 72913 QApplication::x11ProcessEvent(_XEvent*) /usr/lib64/libQtGui.so.4 0x7ffff55e99ec 72914 ?? /usr/lib64/libQtGui.so.4 0x7ffff5610882 72915 g_main_context_dispatch /usr/lib64/libglib-2.0.so.0 0x7ffff027e316 72916 ?? /usr/lib64/libglib-2.0.so.0 0x7ffff027e668 72917 g_main_context_iteration /usr/lib64/libglib-2.0.so.0 0x7ffff027e70c 72918 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) /usr/lib64/libQtCore.so.4 0x7ffff46bcd55 72919 ?? /usr/lib64/libQtGui.so.4 0x7ffff5610936 72920 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) /usr/lib64/libQtCore.so.4 0x7ffff468ed0f 72921 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) /usr/lib64/libQtCore.so.4 0x7ffff468f005 72922 QCoreApplication::exec() /usr/lib64/libQtCore.so.4 0x7ffff469413b 72923 main main.cpp 123 0x440f6e Expected Results: umbrello should add a creation message The crash is a result of a stack overflow caused by a recursive call to MessageWidget::setY()
Git commit beb4c640764bde669ab38fbd452eeb58a16ee6ff by Ralf Habacker. Committed on 03/07/2014 at 13:43. Pushed by habacker into branch 'master'. Fix crash on sequence diagram adding creating message. The fix prevents a ObjectWidget/MessageWidget signal/slot loop by using setPos() instead of setY(). M +2 -3 umbrello/widgets/messagewidget.cpp http://commits.kde.org/umbrello/beb4c640764bde669ab38fbd452eeb58a16ee6ff
Git commit 3f9a859bd399ef257ff3cc065285df730cdf1f36 by Ralf Habacker. Committed on 03/07/2014 at 13:43. Pushed by habacker into branch 'KDE/4.13'. Fix crash on sequence diagram adding creating message. The fix prevents a ObjectWidget/MessageWidget signal/slot loop by using setPos() instead of setY(). FIXED-IN:4.13.3 (cherry picked from commit beb4c640764bde669ab38fbd452eeb58a16ee6ff) M +2 -3 umbrello/widgets/messagewidget.cpp http://commits.kde.org/umbrello/3f9a859bd399ef257ff3cc065285df730cdf1f36