Bug 148938 - Segmentation fault in system sequence diagram view when creating an Asynchronous message
Summary: Segmentation fault in system sequence diagram view when creating an Asynchron...
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords:
: 186059 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-08-17 18:32 UTC by Donal Morrissey
Modified: 2013-11-12 22:58 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 4.11.2


Attachments
Crashing xmi file (29.26 KB, text/plain)
2007-08-29 10:41 UTC, Donal Morrissey
Details
XMI of attachment 21501, cleaned (26.02 KB, application/octet-stream)
2007-08-29 15:15 UTC, Oliver Kellogg
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Donal Morrissey 2007-08-17 18:32:10 UTC
Version:           1.5.71 (using KDE KDE 3.5.6)
Installed from:    Ubuntu Packages

Hello,
I think I have found a bug with 1.5.7 of Umbrello.

When connecting an Asynchronous message between two classes the application crashes (see the gdb output below).
It seems the application is entering an infinite recursive loop in the UMLClassifier::getOpList() method.

Note that I can only re-produce the bug in a particular project design I am working on.
Here is an overview of part of the project:

So part of my design contains 3 classes; classA classB and classX.
classB inherits from classA.

In a sequence diagram, when I create an asynchronous message from classX to classB, I get the segmentation fault.
If I create the message from classB to classX, it creates the message fine.
If I break the inheritance between classB and classA I can create and the message from classB to classX, it creates the message fine.

I hope this can be sorted soon as Umbrello really is a great application!

Cheers,
Donal


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1235466544 (LWP 26146)]
0xb665c8d0 in ?? () from /lib/tls/i686/cmov/libc.so.6
(gdb) bt
#0  0xb665c8d0 in ?? () from /lib/tls/i686/cmov/libc.so.6
#1  0xb665e60e in malloc () from /lib/tls/i686/cmov/libc.so.6
#2  0xb6820207 in operator new () from /usr/lib/libstdc++.so.6
#3  0xb7155c1b in QGList::append () from /usr/lib/libqt-mt.so.3
#4  0x0815bca0 in QPtrList<UMLAssociation>::append (this=0xbf5270f8, d=0x868eba0) at /usr/share/qt3/include/qptrlist.h:82
#5  0x081cfab3 in UMLCanvasObject::getAssociations (this=0x868dfc0) at umlcanvasobject.cpp:249
#6  0x081cfd77 in UMLCanvasObject::getSuperClasses (this=0x868dfc0) at umlcanvasobject.cpp:256
#7  0x08158532 in UMLClassifier::findSuperClassConcepts (this=0x868dfc0, type=UMLClassifier::ALL) at classifier.cpp:392
#8  0x08158845 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:634
#9  0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#10 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#11 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#12 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#13 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#14 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#15 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#16 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#17 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#18 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#19 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#20 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#21 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#22 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#23 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#24 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#25 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#26 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#27 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#28 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#29 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#30 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#31 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#32 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#33 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#34 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#35 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#36 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#37 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#38 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#39 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#40 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#41 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#42 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#43 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#44 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#45 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#46 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#47 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#48 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#49 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#50 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#51 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#52 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#53 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#54 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#55 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#56 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#57 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#58 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#59 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#60 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#61 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#62 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
#63 0x08158912 in UMLClassifier::getOpList (this=0x868d818, includeInherited=true) at classifier.cpp:643
#64 0x08158912 in UMLClassifier::getOpList (this=0x868dfc0, includeInherited=true) at classifier.cpp:643
---Type <return> to continue, or q <return> to quit---q
Quit
Comment 1 Oliver Kellogg 2007-08-29 09:45:27 UTC
Please attach a sample XMI for which this happens.
Comment 2 Donal Morrissey 2007-08-29 10:41:24 UTC
Created attachment 21501 [details]
Crashing xmi file

Hi Oliver,
Attached is the xmi file (I've stripped out most of the classes and renamed a
few of the remaining).
If you go to the "Crashing Sequence Diagram" and create an Asynchronous message
between Green and Persian, the application will crash.
Best Regards,
Donal
Comment 3 Oliver Kellogg 2007-08-29 15:15:40 UTC
Created attachment 21502 [details]
XMI of attachment 21501 [details], cleaned

Your sample file contains a few interesting artefacts, for example

 <UML:Generalization child="5cB8TE9iXLdo" parent="UyrjFGfLV68n" />
 <UML:Generalization child="UyrjFGfLV68n" parent="5cB8TE9iXLdo" />

This is a mutual generalization between "ParameterEvent" and "Apple".

 <UML:Generalization child="2JxEkrznGR6J" parent="2JxEkrznGR6J" />

This is a self generalization of the datatype "undef".

 <UML:Generalization child="UyrjFGfLV68n" parent="10Cc6dIdQ49e" />
 <UML:Generalization child="10Cc6dIdQ49e" parent="UyrjFGfLV68n" />

This is a mutual generalization between "Apple" and "Red".

 <UML:Generalization child="2JxEkrznGR6J" parent="LyFnlB9wULG9" />
 <UML:Generalization child="LyFnlB9wULG9" parent="2JxEkrznGR6J" />

This is a mutual generalization between "undef" and "PeriodicEvent".

Also the "Crashing Sequence Diagram" would not display when clicked,
therefore I made a new sequence diagram.

Those leftover generalizations smell of a problem in an earlier version of
Umbrello.
Was the file originally created with version 1.5.71?
If it was created with an earlier version then I suggest you clean up
the XMI by hand.
Comment 4 Dario Andres 2009-09-28 02:31:38 UTC
*** Bug 186059 has been marked as a duplicate of this bug. ***
Comment 5 Christoph Feck 2013-09-12 21:45:47 UTC
This crash report is at least 3 years old and there were no further comments or status updates since then.

Therefore we believe that this crash is already fixed in recent KDE 4 versions or the backtrace is no longer applicable to the current KDE 4 sources.

If the crash still happens with a recent KDE version (4.10.5 or 4.11), please add an updated backtrace or provide steps to reproduce. For more information, see http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports

(To prevent automatic closing of this bug in the future, please set the bug status to ASSIGNED or CONFIRMED)
Comment 6 Ralf Habacker 2013-11-12 22:58:54 UTC
could not be reproduced with 2.11.2