Bug 72971 - Two associations between states causes crash
Summary: Two associations between states causes crash
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-01-19 18:53 UTC by Jonathan Riddell
Modified: 2004-04-14 14:30 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Riddell 2004-01-19 18:53:04 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources

Adding two state transition associations between the same two states gives the following error as output 
umbrello: ERROR: cannot addAssocInViewAndDoc()

and causes a crash when it is loaded (undo/redo):

#0  0x00000049 in ?? ()
#1  0x40efa5ce in QGList::clear() () from /usr/lib/libqt-mt.so.3
#2  0x08123deb in LinePath::cleanup() (this=0x856dfcc) at qptrlist.h:93
#3  0x080e203a in ~AssociationWidget (this=0x856df08) at associationwidget.cpp:96
#4  0x40c881ed in QWidget::~QWidget() () from /usr/lib/libqt-mt.so.3
#5  0x40d6495f in QScrollView::~QScrollView() () from /usr/lib/libqt-mt.so.3
#6  0x40e50d6f in QCanvasView::~QCanvasView() () from /usr/lib/libqt-mt.so.3
#7  0x08174ff8 in ~UMLView (this=0x854a318) at qstring.h:848
#8  0x08152cfe in QPtrList<UMLView>::deleteItem(void*) (this=0x8549c78, d=0x85c5100) at qptrlist.h:150
#9  0x40efa5ce in QGList::clear() () from /usr/lib/libqt-mt.so.3
#10 0x0815f5d4 in UMLDoc::removeAllViews() (this=0x83e6688) at qptrlist.h:93
#11 0x0815626d in UMLDoc::deleteContents() (this=0x83e66d8) at umldoc.cpp:383
#12 0x081614ea in UMLDoc::loadUndoData() (this=0x83e6688) at umldoc.cpp:2285
#13 0x0814e9e0 in UMLApp::slotEditUndo() (this=0x8331ed8) at uml.cpp:721
#14 0x0815290d in UMLApp::qt_invoke(int, QUObject*) (this=0x8331ed8, _id=123, _o=0xbfffed40) at uml.moc:284
#15 0x40c588bc in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/libqt-mt.so.3
#16 0x40c586f4 in QObject::activate_signal(int) () from /usr/lib/libqt-mt.so.3
#17 0x4058864b in KAction::activated() () from /usr/lib/libkdeui.so.4
#18 0x40587bef in KAction::slotActivated() () from /usr/lib/libkdeui.so.4
#19 0x40588851 in KAction::qt_invoke(int, QUObject*) () from /usr/lib/libkdeui.so.4
#20 0x40c58836 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/libqt-mt.so.3
#21 0x40c586f4 in QObject::activate_signal(int) () from /usr/lib/libqt-mt.so.3
#22 0x40f7c20e in QButton::clicked() () from /usr/lib/libqt-mt.so.3
#23 0x40ce714a in QButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libqt-mt.so.3
#24 0x40c8d917 in QWidget::event(QEvent*) () from /usr/lib/libqt-mt.so.3
#25 0x40bfd2df in QApplication::internalNotify(QObject*, QEvent*) () from /usr/lib/libqt-mt.so.3
#26 0x40bfc9e1 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libqt-mt.so.3
#27 0x407d07ed in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdecore.so.4
#28 0x40b96148 in QETWidget::translateMouseEvent(_XEvent const*) () from /usr/lib/libqt-mt.so.3
#29 0x40b93a5e in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libqt-mt.so.3
#30 0x40ba9d91 in QEventLoop::processEvents(unsigned) () from /usr/lib/libqt-mt.so.3
#31 0x40c10ac8 in QEventLoop::enterLoop() () from /usr/lib/libqt-mt.so.3
#32 0x40c10978 in QEventLoop::exec() () from /usr/lib/libqt-mt.so.3
#33 0x40bfd531 in QApplication::exec() () from /usr/lib/libqt-mt.so.3
#34 0x08132f2e in main (argc=139762808, argv=0x8549c78) at main.cpp:86
Comment 1 Robert Lemmen 2004-01-24 17:35:09 UTC
this can also be triggered by a CTRL-Z: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=229101

Comment 2 Jonathan Riddell 2004-01-31 22:41:54 UTC
Confirm the problem with undo on adding two associations in opposite directions between two classes.
Comment 3 Jörg Gottschlich 2004-04-03 12:51:32 UTC
I made two associations in the wrong direction. After deleting one, the other wasn't selectable any more. I deleted the two objects, but the association stayed there blankly.
Finally I got both associations removed, but wasn't able to create an association in the other direction. A look in the xmi-file showed that all trials where still in the file without being showed in the editor. I deleted the following snippet:

   <UML:Association visibility="public" xmi.id="263" >
    <UML:Association.connection>
     <UML:AssociationEnd visibility="public" aggregation="composite" type="233" />
     <UML:AssociationEnd visibility="public" type="233" />
    </UML:Association.connection>
   </UML:Association>
   <UML:Association visibility="public" xmi.id="264" >
    <UML:Association.connection>
     <UML:AssociationEnd visibility="public" aggregation="composite" type="233" multiplicity="1" />
     <UML:AssociationEnd visibility="public" type="242" multiplicity="*" />
    </UML:Association.connection>
   </UML:Association>
   <UML:Association visibility="public" xmi.id="265" >
    <UML:Association.connection>
     <UML:AssociationEnd visibility="public" aggregation="none" type="242" />
     <UML:AssociationEnd visibility="public" isNavigable="true" type="233" />
    </UML:Association.connection>
   </UML:Association>
   <UML:Association visibility="public" xmi.id="266" >
    <UML:Association.connection>
     <UML:AssociationEnd visibility="public" aggregation="composite" type="242" />
     <UML:AssociationEnd visibility="public" type="242" />
    </UML:Association.connection>
   </UML:Association>
   <UML:Association visibility="public" xmi.id="267" >
    <UML:Association.connection>
     <UML:AssociationEnd visibility="public" aggregation="shared" type="233" />
     <UML:AssociationEnd visibility="public" type="242" />
    </UML:Association.connection>
   </UML:Association>

an was be able to create the association in the correct direction.
Comment 4 Jonathan Riddell 2004-04-14 14:30:07 UTC
This seems to have been fixed in CVS, it is no longer possible to make two associations between two states in the same direction.