Bug 209552

Summary: Crashes Refactoring and Adding Attributes
Product: [Applications] umbrello Reporter: Saulo Toledo <saulotoledo>
Component: generalAssignee: Ralf Habacker <ralf.habacker>
Status: RESOLVED FIXED    
Severity: crash CC: kde, okellogg, ralf.habacker
Priority: NOR    
Version: 2.3.1   
Target Milestone: ---   
Platform: Debian testing   
OS: Linux   
Latest Commit: Version Fixed In: 4.11.4
Attachments: The file where the crashes occurs

Description Saulo Toledo 2009-10-05 19:22:09 UTC
Version:           2.3.1 (using KDE 4.3.1)
OS:                Linux
Installed from:    Debian testing/unstable Packages

a) When I click "refactor" in a class with attributes, Umbrello crashes.

b) I receive another crash if I do this:

1) Select all
2) Copy (Control + C)
3) File -> New
4) Paste (Control + V)
5) Right click in a class to add some attribute -> Umbrello crashes.


If, after "4", save the new file, and close it, and opens it with Umbrello again, the file will appear without the relationship arrows, and the bug described in "5" does not happens anymore.

I will attach here the file where the error occurs. To see them, try refactor the class "UsersController".
Comment 1 Saulo Toledo 2009-10-05 19:25:51 UTC
Created attachment 37385 [details]
The file where the crashes occurs

Try refactor "UserController" class. To see the other crash, repeat "b" case.
Comment 2 Ralf Habacker 2013-11-19 20:44:08 UTC
also with git master
Comment 3 Ralf Habacker 2013-11-19 20:50:09 UTC
The problem is a heap overflow caused by a recursive loop as shown below: 
..
10059	RefactoringAssistant::addClassifier	refactoringassistant.cpp	695	0x48c4f2	
10060	RefactoringAssistant::addClassifier	refactoringassistant.cpp	695	0x48c4f2	
10061	RefactoringAssistant::addClassifier	refactoringassistant.cpp	695	0x48c4f2	
10062	RefactoringAssistant::addClassifier	refactoringassistant.cpp	695	0x48c4f2	
10063	RefactoringAssistant::refactor	refactoringassistant.cpp	88	0x48e6f6	
10064	UMLApp::refactor	uml.cpp	2093	0x67d3c3	
10065	WidgetBase::slotMenuSelection	widgetbase.cpp	829	0x62d978	
10066	ClassifierWidget::slotMenuSelection	classifierwidget.cpp	1018	0x5fe08b	
10067	WidgetBase::contextMenuEvent	widgetbase.cpp	669	0x62dbe7	
10068	QGraphicsItem::sceneEvent	qgraphicsitem.cpp	6720	0x7ffff4f6184d	
10069	QGraphicsScene::contextMenuEvent	qgraphicsscene.cpp	3617	0x7ffff4f8a73e	
10070	UMLScene::contextMenuEvent	umlscene.cpp	2961	0x6ca86e	
10071	QGraphicsScene::event	qgraphicsscene.cpp	3412	0x7ffff4f9e2b0	
10072	QApplicationPrivate::notify_helper	qapplication.cpp	4562	0x7ffff49a491c	
10073	QApplication::notify	qapplication.cpp	4423	0x7ffff49a8d9a	
10074	KApplication::notify	kapplication.cpp	311	0x7ffff6750e16	
10075	QCoreApplication::notifyInternal	qcoreapplication.cpp	949	0x7ffff5817e7e	
10076	sendEvent	qcoreapplication.h	231	0x7ffff4faf652	
10077	QGraphicsView::contextMenuEvent	qgraphicsview.cpp	2892	0x7ffff4faf652	
10078	QWidget::event	qwidget.cpp	8554	0x7ffff49f412e	
10079	QFrame::event	qframe.cpp	557	0x7ffff4d9fa86	
10080	QGraphicsView::viewportEvent	qgraphicsview.cpp	2866	0x7ffff4fb7aab	
10081	QCoreApplicationPrivate::sendThroughObjectEventFilters	qcoreapplication.cpp	1059	0x7ffff5817fe6	
10082	QApplicationPrivate::notify_helper	qapplication.cpp	4558	0x7ffff49a48ec	
10083	QApplication::notify	qapplication.cpp	4184	0x7ffff49a9305	
10084	KApplication::notify	kapplication.cpp	311	0x7ffff6750e16	
10085	QCoreApplication::notifyInternal	qcoreapplication.cpp	949	0x7ffff5817e7e	
10086	sendSpontaneousEvent	qcoreapplication.h	234	0x7ffff4a20091	
10087	QETWidget::translateMouseEvent	qapplication_x11.cpp	4533	0x7ffff4a20091	
10088	QApplication::x11ProcessEvent	qapplication_x11.cpp	3651	0x7ffff4a1edc1	
10089	x11EventSourceDispatch	qguieventdispatcher_glib.cpp	146	0x7ffff4a45162	
10090	g_main_context_dispatch	/usr/lib64/libglib-2.0.so.0		0x7fffeff3f3b5	
10091	??	/usr/lib64/libglib-2.0.so.0		0x7fffeff3f6e8	
10092	g_main_context_iteration	/usr/lib64/libglib-2.0.so.0		0x7fffeff3f7a4	
10093	QEventDispatcherGlib::processEvents	qeventdispatcher_glib.cpp	425	0x7ffff58464d6	
10094	QGuiEventDispatcherGlib::processEvents	qguieventdispatcher_glib.cpp	204	0x7ffff4a44dde	
10095	QEventLoop::processEvents	qeventloop.cpp	149	0x7ffff5816b2f	
10096	QEventLoop::exec	qeventloop.cpp	204	0x7ffff5816db8	
10097	QCoreApplication::exec	qcoreapplication.cpp	1221	0x7ffff581baf8	
10098	main	main.cpp	113	0x437f92
Comment 4 Ralf Habacker 2013-11-19 21:17:59 UTC
Git commit 0d413fa8cb578e8cfa4a38f2caaa61532d592d46 by Ralf Habacker.
Committed on 19/11/2013 at 21:15.
Pushed by habacker into branch 'master'.

Recursive crash fix opening refactoring assistant.

M  +10   -0    umbrello/refactoring/refactoringassistant.cpp
M  +1    -0    umbrello/refactoring/refactoringassistant.h

http://commits.kde.org/umbrello/0d413fa8cb578e8cfa4a38f2caaa61532d592d46
Comment 5 Ralf Habacker 2013-11-19 21:19:11 UTC
Git commit 415d33db7fe27730bb97987e95a4ce606fd6aba3 by Ralf Habacker.
Committed on 19/11/2013 at 21:15.
Pushed by habacker into branch 'KDE/4.12'.

Recursive crash fix opening refactoring assistant.
(cherry picked from commit 0d413fa8cb578e8cfa4a38f2caaa61532d592d46)

M  +10   -0    umbrello/refactoring/refactoringassistant.cpp
M  +1    -0    umbrello/refactoring/refactoringassistant.h

http://commits.kde.org/umbrello/415d33db7fe27730bb97987e95a4ce606fd6aba3
Comment 6 Ralf Habacker 2013-11-19 21:21:39 UTC
Git commit 1cce00cc98c0c5adfc356f97010ff0800d18a438 by Ralf Habacker.
Committed on 19/11/2013 at 21:15.
Pushed by habacker into branch 'KDE/4.11'.

Recursive crash fix opening refactoring assistant.
(cherry picked from commit 415d33db7fe27730bb97987e95a4ce606fd6aba3)

M  +10   -0    umbrello/refactoring/refactoringassistant.cpp
M  +1    -0    umbrello/refactoring/refactoringassistant.h

http://commits.kde.org/umbrello/1cce00cc98c0c5adfc356f97010ff0800d18a438
Comment 7 Ralf Habacker 2013-11-19 21:32:35 UTC
part b moved to #327834
Comment 8 Joris Steyn 2013-11-20 19:31:37 UTC
Part B is fixed in 4.12 (not backported to 4.11).