Bug 336997 - Crash on sequence diagrams adding creation message
Summary: Crash on sequence diagrams adding creation message
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: 2.13.2
Platform: unspecified Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-07-03 08:08 UTC by Ralf Habacker
Modified: 2014-07-03 13:59 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: 4.13.3


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ralf Habacker 2014-07-03 08:08:26 UTC
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()
Comment 1 Ralf Habacker 2014-07-03 13:54:59 UTC
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
Comment 2 Ralf Habacker 2014-07-03 13:59:11 UTC
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