Bug 64881 - consistent crash opening a file created with umbrello
Summary: consistent crash opening a file created with umbrello
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-09-24 23:36 UTC by umbrello
Modified: 2003-10-05 23:31 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 umbrello 2003-09-24 23:36:03 UTC
Version:           1.2-alpha (using KDE 3.1.9)
Compiler:          gcc version 3.2.1 (Mandrake Linux 9.1 3.2.1-7mdk)
OS:          Linux (i686) release 2.4.21-0.1mdk

I get a reproducable crash trying to load a file that has been created with this same version (1.2-alpha, KDE 3.1.91, CVS >=20030907) of umbrello.

I have included a backtrace below.

Deleting the tag included below from the xmi fixes the problem, I don't know if it is enough information in isolation, I can provide the complete file if needed.

Hope this helps,
Rob


==============Offending XML==============
<UML:Association
abstract="0"
assoctype="502"
changeabilitya="900"
changeabilityb="900"
doca=""
docb=""
documentation=""
multia=""
multib=""
name=""
namea=""
nameb=""
package=""
rolea="34"
roleb="27"
scope="200"
static="0"
stereotype=""
visibilitya="200"
visibilityb="200"
xmi.id="39"
></UML:Association>
============End Offending XML================


=================Backtrace=================
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 5134)]
0x412664bf in operator new(unsigned) () from /usr/lib/libstdc++.so.5
(gdb) bt
#0  0x412664bf in operator new(unsigned) () from /usr/lib/libstdc++.so.5
#1  0x40e9c7c2 in QValueListPrivate<QGListIterator*>::insert(QValueListIterator<QGListIterator*>, QGListIterator* const&) () from /opt/kde3.2-alpha1/lib/libqt-mt.so.3
#2  0x40e9bf10 in QGListIterator::QGListIterator(QGList const&) ()
   from /opt/kde3.2-alpha1/lib/libqt-mt.so.3
#3  0x0815ffe0 in UMLWidget::operator==(UMLWidget const&) ()
#4  0x080d3a84 in AssociationWidget::operator==(AssociationWidget&) ()
#5  0x08160029 in UMLWidget::operator==(UMLWidget const&) ()
#6  0x080d3a84 in AssociationWidget::operator==(AssociationWidget&) ()
etc....
===============End Backtrace===================
Comment 1 Jonathan Riddell 2003-09-25 02:16:02 UTC
Looks like the same issue reported by David Faure earlier on.. 
 
-- 
 
The exact lines are: 
 
#19 0x080d412f in AssociationWidget::operator==(AssociationWidget&) 
(this=0x8475b60, Other=@0x8474ae8) 
    at /mnt/devel/kde/kdecvs/kdesdk/umbrello/umbrello/
associationwidget.cpp:171 
171             } else if ( !(*m_pName == *(Other.m_pName)) ) 
 
#18 0x08163b23 in UMLWidget::operator==(UMLWidget const&) 
(this=0x8476250, other=@0x84755d0) 
    at /mnt/devel/kde/kdecvs/kdesdk/umbrello/umbrello/umlwidget.cpp:169 
169                     if(!(*assoc == *assoc2)) { 
 
That one is inside a loop that looks at all associations. This feels wrong to me. 
If you imagine your classes like a tree, equality comparison should only 
go "down" the tree, never up. Here it looks like it goes down in 
AssociationWidget, 
but it goes up in UMLWidget, so it loops forever, going from one to the other. 
 
(To reproduce: well, I'm simply loading a .xmi file with a collaboration diagram in 
it, 
it crashes before anything appears) 
 
Comment 2 umbrello 2003-09-25 02:23:37 UTC
I'm not sure, my xmi had only a use case diagram and was otherwise empty.
But if there is a way to trigger this in a Use Case digram it could be. 
Comment 3 Oliver Kellogg 2003-09-27 16:37:25 UTC
Fixed in CVS.
Please verify.
Comment 4 umbrello 2003-09-27 20:57:03 UTC
Yup, code in CVS works for me. 
kde-3.2-alpha1 + CVS kdesdk on Mandrake 9.1 
 
I'm wondering for a next time: should I be the one to mark the bug as resolved? 
 
Thanks for the fix, and good luck, 
Rob 
 
PS: I had to add a couple of missing headers to umbrello/dialogs/
codevieweroptionspage.cpp 
and manually make the dialogs directory earlier in the build cycle to get it to compile. 
 
 
Comment 5 Oliver Kellogg 2003-10-05 23:31:41 UTC
*** Bug has been marked as fixed ***.