Bug 146367 - crash when creating a class that refers to more than one other classes/datatypes
Summary: crash when creating a class that refers to more than one other classes/datatypes
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Gentoo Packages Linux
: NOR crash
Target Milestone: ---
Assignee: Oliver Kellogg
URL:
Keywords:
: 150637 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-06-04 21:12 UTC by Anton Kazennikov
Modified: 2007-10-10 07:02 UTC (History)
1 user (show)

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 Anton Kazennikov 2007-06-04 21:12:47 UTC
Version:            (using KDE KDE 3.5.7)
Installed from:    Gentoo Packages
Compiler:          gcc 4.1.2 -O2
OS:                Linux

This bug can be reproduced as: 
1. create new datatype(e.g "byte").
2. create class "test"
3. add attribute of type byte.
4. create second attribute of type byte. 
after creating Umbrello crashes.

Same is with 2 attributes of same class type
Comment 1 Bram Schoenmakers 2007-06-04 22:11:54 UTC
Please provide a backtrace ( http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports )
Comment 2 Oliver Kellogg 2007-06-04 22:40:26 UTC
> Please provide a backtrace [...]

I eagerly second that request as I cannot confirm the reported behavior
with current SVN branches/KDE/3.5/kdesdk.
Comment 3 Anton Kazennikov 2007-06-05 07:35:05 UTC
Backtrace: 

Using host libthread_db library "/lib/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread -1236638032 (LWP 21366)]
[KCrash handler]
#6  0xb65c7558 in ?? () from /lib/libc.so.6
#7  0x0816532c in AssociationWidget::calculateTextPosition (this=0x85c9f40, 
    role=Uml::tr_Name) at associationwidget.cpp:1798
#8  0x08165c40 in AssociationWidget::saveIdealTextPositions (this=0x85c9f40)
    at associationwidget.cpp:1268
#9  0x08194c8d in UMLWidget::adjustAssocs (this=0x84c26f8, x=52, y=110)
    at umlwidget.cpp:570
#10 0x08194e2c in ClassifierWidget::adjustAssocs (this=0x84c26f8, x=52, y=110)
    at classifierwidget.cpp:748
#11 0x08199721 in UMLWidget::updateWidget (this=0x84c26f8)
    at umlwidget.cpp:181
#12 0x0813170f in UMLWidget::qt_invoke (this=0x84c26f8, _id=3, _o=0xbfbc405c)
    at umlwidget.moc:134
#13 0xb6dea9f8 in QObject::activate_signal (this=0x84e4c98, clist=0x84c40d8, 
    o=0xbfbc405c) at kernel/qobject.cpp:2380
#14 0xb6deb664 in QObject::activate_signal (this=0x84e4c98, signal=2)
    at kernel/qobject.cpp:2325
#15 0x081479b4 in UMLObject::modified (this=0x84e4c98) at umlobject.moc:86
#16 0x08270445 in ClassGenPage::updateObject (this=0x84e2cb8)
    at classgenpage.cpp:402
#17 0x082709f0 in ClassPropDlg::slotApply (this=0x84c1eb8)
    at classpropdlg.cpp:141
#18 0x0823761b in ClassPropDlg::slotOk (this=0x84c1eb8)
    at classpropdlg.cpp:135
#19 0xb79c4ec2 in KDialogBase::qt_invoke (this=0x84c1eb8, _id=73, 
    _o=0xbfbc426c) at kdialogbase.moc:359
#20 0x0824c6bf in ClassPropDlg::qt_invoke (this=0x84c1eb8, _id=73, 
    _o=0xbfbc426c) at classpropdlg.moc:87
#21 0xb6dea8cb in QObject::activate_signal (this=0x8521b08, clist=0x8521ae0, 
    o=0xbfbc426c) at kernel/qobject.cpp:2356
#22 0xb6deb664 in QObject::activate_signal (this=0x8521b08, signal=4)
    at kernel/qobject.cpp:2325
#23 0xb71f41db in QButton::clicked (this=0x8521b08)
    at .moc/debug-shared-mt/moc_qbutton.cpp:152
#24 0xb6ea0054 in QButton::mouseReleaseEvent (this=0x8521b08, e=0xbfbc46d4)
    at widgets/qbutton.cpp:836
#25 0xb6e2b63b in QWidget::event (this=0x8521b08, e=0xbfbc46d4)
    at kernel/qwidget.cpp:4677
#26 0xb6d75fe7 in QApplication::internalNotify (this=0xbfbc5944, 
    receiver=0x8521b08, e=0xbfbc46d4) at kernel/qapplication.cpp:2635
#27 0xb6d782e5 in QApplication::notify (this=0xbfbc5944, receiver=0x8521b08, 
    e=0xbfbc46d4) at kernel/qapplication.cpp:2421
#28 0xb76c9f71 in KApplication::notify (this=0xbfbc5944, receiver=0x8521b08, 
    event=0xbfbc46d4) at kapplication.cpp:550
#29 0xb6cffc2d in QApplication::sendSpontaneousEvent (receiver=0x8521b08, 
    event=0xbfbc46d4) at kernel/qapplication.h:499
#30 0xb6cfe88e in QETWidget::translateMouseEvent (this=0x8521b08, 
    event=0xbfbc4b78) at kernel/qapplication_x11.cpp:4298
#31 0xb6cfca24 in QApplication::x11ProcessEvent (this=0xbfbc5944, 
    event=0xbfbc4b78) at kernel/qapplication_x11.cpp:3449
#32 0xb6d156b2 in QEventLoop::processEvents (this=0x83a1f40, flags=4)
    at kernel/qeventloop_x11.cpp:192
#33 0xb6d94001 in QEventLoop::enterLoop (this=0x83a1f40)
    at kernel/qeventloop.cpp:198
#34 0xb6d77c29 in QApplication::enter_loop (this=0xbfbc5944)
    at kernel/qapplication.cpp:2793
#35 0xb6fd591b in QDialog::exec (this=0x84c1eb8) at dialogs/qdialog.cpp:432
#36 0x081a7087 in UMLWidget::showProperties (this=0x84c26f8)
    at umlwidget.cpp:603
#37 0x081ac92c in UMLWidget::slotMenuSelection (this=0x84c26f8, sel=85)
    at umlwidget.cpp:273
#38 0x08122b06 in ToolBarStateArrow::mouseDoubleClickWidget (this=0x84f8580)
    at toolbarstatearrow.cpp:89
#39 0x0818f702 in ToolBarState::mouseDoubleClick (this=0x84f8580, 
    ome=0xbfbc4dfc) at toolbarstate.cpp:105
#40 0xb6f43f0d in QScrollView::viewportMouseDoubleClickEvent (this=0x84b1128, 
    e=0xbfbc52f4) at widgets/qscrollview.cpp:1767
#41 0xb6f456c2 in QScrollView::eventFilter (this=0x84b1128, obj=0x84b4fc0, 
    e=0xbfbc52f4) at widgets/qscrollview.cpp:1506
#42 0xb6de9d23 in QObject::activate_filters (this=0x84b4fc0, e=0xbfbc52f4)
    at kernel/qobject.cpp:903
#43 0xb6de9dc4 in QObject::event (this=0x84b4fc0, e=0xbfbc52f4)
    at kernel/qobject.cpp:735
#44 0xb6e2b552 in QWidget::event (this=0x84b4fc0, e=0xbfbc52f4)
    at kernel/qwidget.cpp:4659
#45 0xb6d75fe7 in QApplication::internalNotify (this=0xbfbc5944, 
    receiver=0x84b4fc0, e=0xbfbc52f4) at kernel/qapplication.cpp:2635
#46 0xb6d782e5 in QApplication::notify (this=0xbfbc5944, receiver=0x84b4fc0, 
    e=0xbfbc52f4) at kernel/qapplication.cpp:2421
#47 0xb76c9f71 in KApplication::notify (this=0xbfbc5944, receiver=0x84b4fc0, 
    event=0xbfbc52f4) at kapplication.cpp:550
#48 0xb6cffc2d in QApplication::sendSpontaneousEvent (receiver=0x84b4fc0, 
    event=0xbfbc52f4) at kernel/qapplication.h:499
#49 0xb6cfe88e in QETWidget::translateMouseEvent (this=0x84b4fc0, 
    event=0xbfbc5798) at kernel/qapplication_x11.cpp:4298
#50 0xb6cfca24 in QApplication::x11ProcessEvent (this=0xbfbc5944, 
    event=0xbfbc5798) at kernel/qapplication_x11.cpp:3449
#51 0xb6d156b2 in QEventLoop::processEvents (this=0x83a1f40, flags=4)
    at kernel/qeventloop_x11.cpp:192
#52 0xb6d94001 in QEventLoop::enterLoop (this=0x83a1f40)
    at kernel/qeventloop.cpp:198
#53 0xb6d93e22 in QEventLoop::exec (this=0x83a1f40)
    at kernel/qeventloop.cpp:145
#54 0xb6d77cab in QApplication::exec (this=0xbfbc5944)
    at kernel/qapplication.cpp:2758
#55 0x081c1bbe in main (argc=-1235454888, argv=0xb65c7458) at main.cpp:137
Comment 4 Oliver Kellogg 2007-06-05 21:25:16 UTC
Ah, now I see it too. (The problem, not yet the fix :)
Comment 5 Oliver Kellogg 2007-06-06 00:21:11 UTC
SVN commit 671969 by okellogg:

Emit addition signal before calling UMLObject::emitModified() (cf. r669599)
BUG:146367


 M  +1 -0      ChangeLog  
 M  +7 -7      umbrello/classifier.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #671968:671969
@@ -10,6 +10,7 @@
 * Attribute documentation not generated for 'Export to XHTML' (145972)
 * Crash when moving a class in a Java UML diagram (146058)
 * Arrowheads are not shown (146064)
+* Crash when creating a class that refers to more than one other classes/datatypes (146367)
 
 Version 1.5.7
 
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/classifier.cpp #671968:671969
@@ -243,8 +243,8 @@
         kDebug() << "  UMLClassifier::addOperation list after change: " << buf << endl;
      } else
         m_List.append( op );
+    emit operationAdded(op);
     UMLObject::emitModified();
-    emit operationAdded(op);
     connect(op,SIGNAL(modified()),this,SIGNAL(modified()));
     return true;
 }
@@ -547,8 +547,8 @@
     Uml::Visibility scope = Settings::getOptionState().classState.defaultAttributeScope;
     UMLAttribute *a = new UMLAttribute(this, name, id, scope);
     m_List.append(a);
+    emit attributeAdded(a);
     UMLObject::emitModified();
-    emit attributeAdded(a);
     connect(a,SIGNAL(modified()),this,SIGNAL(modified()));
     return a;
 }
@@ -561,8 +561,8 @@
     if (type)
         a->setType(type);
     m_List.append(a);
+    emit attributeAdded(a);
     UMLObject::emitModified();
-    emit attributeAdded(a);
     connect(a,SIGNAL(modified()),this,SIGNAL(modified()));
     return a;
 }
@@ -576,8 +576,8 @@
             m_List.insert(position, att);
         else
             m_List.append(att);
+        emit attributeAdded(att);
         UMLObject::emitModified();
-        emit attributeAdded(att);
         connect(att, SIGNAL(modified()), this, SIGNAL(modified()));
         return true;
     } else if (Log) {
@@ -674,8 +674,8 @@
         return t;
     t = new UMLTemplate(this, name, id);
     m_List.append(t);
+    emit templateAdded(t);
     UMLObject::emitModified();
-    emit templateAdded(t);
     connect(t, SIGNAL(modified()), this, SIGNAL(modified()));
     return t;
 }
@@ -686,8 +686,8 @@
         newTemplate->parent()->removeChild(newTemplate);
         this->insertChild(newTemplate);
         m_List.append(newTemplate);
+        emit templateAdded(newTemplate);
         UMLObject::emitModified();
-        emit templateAdded(newTemplate);
         connect(newTemplate,SIGNAL(modified()),this,SIGNAL(modified()));
         return true;
     } else if (log) {
@@ -707,8 +707,8 @@
             m_List.insert(position,Template);
         else
             m_List.append(Template);
+        emit templateAdded(Template);
         UMLObject::emitModified();
-        emit templateAdded(Template);
         connect(Template,SIGNAL(modified()),this,SIGNAL(modified()));
         return true;
     }
Comment 6 Oliver Kellogg 2007-10-10 07:02:18 UTC
*** Bug 150637 has been marked as a duplicate of this bug. ***