Bug 148486 - Umbrello crashes when deleting connection between two classes
Summary: Umbrello crashes when deleting connection between two classes
Status: RESOLVED WORKSFORME
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:
: 148704 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-08-03 16:03 UTC by M. Braun
Modified: 2007-08-13 21:38 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
A test file (77.90 KB, text/x-xmi)
2007-08-03 16:04 UTC, M. Braun
Details
XMI of attachment 21323, fixed (76.50 KB, application/x-uml)
2007-08-03 20:28 UTC, Oliver Kellogg
Details

Note You need to log in before you can comment on or make changes to this bug.
Description M. Braun 2007-08-03 16:03:09 UTC
Version:           1.5.7 (using KDE KDE 3.5.7)
Installed from:    Fedora RPMs
OS:                Linux

I've got an uml file (for sql) containing some classes and connections between them.
Umbrello crashed quited often when trying to delete a connection, be in most cases I got the connection removed after I first deleted the comment and changed the data type of the attributes referencing.
Now I've got two classes and a connection between them left where there is no attribute requiring this connection but I still cannot delete it.
Comment 1 M. Braun 2007-08-03 16:04:34 UTC
Created attachment 21323 [details]
A test file

Please try to delete the association between "Dienste" and "Personen".
Comment 2 M. Braun 2007-08-03 16:09:52 UTC
This is what gdb tells me after installing all required -debuginfo packages (e.g. kdesdk-debuginfo, fontconfig-debuginfo, gdb-debuginfo).

gdb:

GNU gdb Red Hat Linux (6.6-15.fc7rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /usr/bin/umbrello 
[Thread debugging using libthread_db enabled]
[New Thread -1208673600 (LWP 10753)]
[Detaching after fork from child process 10758. (Try `set detach-on-fork off'.)]
[Detaching after fork from child process 10759.]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208673600 (LWP 10753)]
0x0810fef4 in AssociationWidget::saveToXMI (this=0x97a22d8, qDoc=@0xbff41d24, 
    qElement=@0xbff41900) at associationwidget.cpp:3305
3305            m_role[A].m_pMulti -> saveToXMI( qDoc, assocElement );
(gdb) backtrace
#0  0x0810fef4 in AssociationWidget::saveToXMI (this=0x97a22d8, 
    qDoc=@0xbff41d24, qElement=@0xbff41900) at associationwidget.cpp:3305
#1  0x081d4bed in UMLView::saveToXMI (this=0x973e0e8, qDoc=@0xbff41d24, 
    qElement=@0xbff41a28) at umlview.cpp:2957
#2  0x0814c8ed in UMLFolder::saveContents (this=0x9469c50, qDoc=@0xbff41d24, 
    qElement=@0xbff41aa8) at folder.cpp:192
#3  0x0814cac2 in UMLFolder::save (this=0x9469c50, qDoc=@0xbff41d24, 
    qElement=@0xbff41cbc) at folder.cpp:208
#4  0x0814d8c0 in UMLFolder::saveToXMI (this=0x9469c50, qDoc=@0xbff41d24, 
    qElement=@0xbff41cbc) at folder.cpp:214
#5  0x081a3058 in UMLDoc::saveToXMI (this=0x94699b0, file=@0x962e6f8)
    at umldoc.cpp:1307
#6  0x081a3e17 in UMLDoc::addToUndoStack (this=0x94699b0) at umldoc.cpp:2149
#7  0x081a3ebe in UMLDoc::setModified (this=0x94699b0, modified=true, 
    addToUndo=true) at umldoc.cpp:1941
#8  0x081d0713 in UMLView::removeWidget (this=0x973e0e8, o=0x97a3348)
    at umlview.cpp:828
#9  0x08111811 in AssociationWidget::cleanup (this=0x97a22d8)
    at associationwidget.cpp:730
#10 0x081d02ba in UMLView::removeAssoc (this=0x973e0e8, pAssoc=0x97a22d8)
    at umlview.cpp:1756
#11 0x081d093d in UMLView::deleteSelection (this=0x973e0e8) at umlview.cpp:1104
#12 0x0819bc23 in UMLApp::slotDeleteSelectedWidget (this=0x940bcf8)
---Type <return> to continue, or q <return> to quit---
    at uml.cpp:1455
#13 0x0819d005 in UMLApp::qt_invoke (this=0x940bcf8, _id=128, _o=0xbff42178)
    at uml.moc:328
#14 0x07877d1a in QObject::activate_signal ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#15 0x0787870d in QObject::activate_signal ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#16 0x023ca429 in KAction::activated () from /usr/lib/libkdeui.so.4
#17 0x02403b52 in KAction::slotActivated () from /usr/lib/libkdeui.so.4
#18 0x024cc2af in KAction::qt_invoke () from /usr/lib/libkdeui.so.4
#19 0x07877d1a in QObject::activate_signal ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#20 0x0787870d in QObject::activate_signal ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#21 0x020d1ba9 in KAccelPrivate::menuItemActivated ()
   from /usr/lib/libkdecore.so.4
#22 0x02122207 in KAccelPrivate::emitActivatedSignal ()
   from /usr/lib/libkdecore.so.4
#23 0x021b136e in KAccelPrivate::eventFilter () from /usr/lib/libkdecore.so.4
#24 0x078770cc in QObject::activate_filters ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#25 0x0787714b in QObject::event () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#26 0x078b401c in QWidget::event () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
---Type <return> to continue, or q <return> to quit---
#27 0x07983482 in QMainWindow::event () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#28 0x0780e53b in QApplication::internalNotify ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#29 0x07810141 in QApplication::notify ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#30 0x021b6f22 in KApplication::notify () from /usr/lib/libkdecore.so.4
#31 0x0780af5e in QAccelManager::tryAccelEvent ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#32 0x0780b3cc in qt_tryAccelEvent () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#33 0x077a3741 in QETWidget::translateKeyEvent ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#34 0x077a4633 in QApplication::x11ProcessEvent ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#35 0x077b638b in QEventLoop::processEvents ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#36 0x07827e30 in QEventLoop::enterLoop ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#37 0x07827ce6 in QEventLoop::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#38 0x0780e17f in QApplication::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#39 0x08167657 in main (argc=132215272, argv=0x95fe2b0) at main.cpp:137

(gdb) info frame
Stack level 0, frame at 0xbff418e0:
 eip = 0x810fef4 in AssociationWidget::saveToXMI(QDomDocument&, QDomElement&)
    (associationwidget.cpp:3305); saved eip 0x81d4bed
 called by frame at 0xbff419f0
 source language c++.
 Arglist at 0xbff418d8, args: this=0x97a22d8, qDoc=@0xbff41d24, 
    qElement=@0xbff41900
 Locals at 0xbff418d8, Previous frame's sp is 0xbff418e0
 Saved registers:
  ebx at 0xbff418cc, ebp at 0xbff418d8, esi at 0xbff418d0, edi at 0xbff418d4,
  eip at 0xbff418dc

Comment 3 Oliver Kellogg 2007-08-03 20:28:17 UTC
Created attachment 21324 [details]
XMI of attachment 21323 [details], fixed

Very strange, that file contained an
 <assocwidget widgetbid="YPALSJkqXLyt" widgetaid="s7EEhxOFMWZp" type="509">
which is a Containment association from "Dienste" to "Personen" meaning that
Personen would be a nested class in Dienste which of course was not the case.
Hmm. I wonder how that association came about.
Comment 4 Oliver Kellogg 2007-08-03 20:29:28 UTC
Please update to 1.5.71 where deleting the bogus association does not crash.
(BTW if you disable Undo/Redo then the thing will probably not crash even with 1.5.7.)
Comment 5 Bram Schoenmakers 2007-08-10 18:55:18 UTC
*** Bug 148704 has been marked as a duplicate of this bug. ***
Comment 6 Michael Braun 2007-08-13 21:36:47 UTC
Thanks, I'll try as soon as I get some fc7 packages of umbrello.
Comment 7 Michael Braun 2007-08-13 21:38:12 UTC
Well, I meant 
... I'll try as soon as I get some *1.5.71* fc7 packages of umbrello.