Bug 103170

Summary: program crashes when closeing a tab
Product: [Applications] umbrello Reporter: Radek Kiczko <samael>
Component: generalAssignee: Umbrello Development Group <umbrello-devel>
Status: RESOLVED FIXED    
Severity: crash CC: aacid, neoneurone, sibskull, umbrello-devel
Priority: NOR    
Version: 1.4   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Radek Kiczko 2005-04-03 23:11:52 UTC
Version:           1.4 (using KDE 3.4.0, compiled sources)
Compiler:          gcc version 3.3.4
OS:                Linux (i686) release 2.6.4

(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 23215)]
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[KCrash handler]
#5  0x4112a158 in typeinfo for QObject () from /usr/lib/qt/lib/libqt-mt.so.3
#6  0x081cc9c3 in WorkToolBar::slotResetToolBar ()
#7  0x081cf438 in WorkToolBar::qt_invoke ()
#8  0x40cfd11c in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#9  0x40cfcf44 in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#10 0x081c37ed in UMLView::sigResetToolBar ()
#11 0x081b17e6 in UMLView::showEvent ()
#12 0x40d333ca in QWidget::event () from /usr/lib/qt/lib/libqt-mt.so.3
#13 0x40ca07df in QApplication::internalNotify ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#14 0x40c9fdde in QApplication::notify () from /usr/lib/qt/lib/libqt-mt.so.3
#15 0x408294f5 in KApplication::notify () from /opt/kde/lib/libkdecore.so.4
#16 0x40d3226a in QWidget::show () from /usr/lib/qt/lib/libqt-mt.so.3
#17 0x081bd844 in UMLView::show ()
#18 0x40e3e8ca in QWidgetStack::raiseWidget ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#19 0x40e3e660 in QWidgetStack::raiseWidget ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#20 0x40e28845 in QTabWidget::showTab () from /usr/lib/qt/lib/libqt-mt.so.3
#21 0x4103a5e0 in QTabWidget::qt_invoke () from /usr/lib/qt/lib/libqt-mt.so.3
#22 0x406f5774 in KTabWidget::qt_invoke () from /opt/kde/lib/libkdeui.so.4
#23 0x40cfd11c in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#24 0x40cfd27d in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#25 0x41039dc2 in QTabBar::selected () from /usr/lib/qt/lib/libqt-mt.so.3
#26 0x406f0092 in KTabBar::setTabEnabled () from /opt/kde/lib/libkdeui.so.4
#27 0x40e28398 in QTabWidget::removePage () from /usr/lib/qt/lib/libqt-mt.so.3
#28 0x406f4644 in KTabWidget::removePage () from /opt/kde/lib/libkdeui.so.4
#29 0x40e29ab6 in QTabWidget::eventFilter ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#30 0x40cfaa4e in QObject::activate_filters ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#31 0x40cfa97c in QObject::event () from /usr/lib/qt/lib/libqt-mt.so.3
#32 0x40d331df in QWidget::event () from /usr/lib/qt/lib/libqt-mt.so.3
#33 0x40ca07df in QApplication::internalNotify ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#34 0x40c9fdde in QApplication::notify () from /usr/lib/qt/lib/libqt-mt.so.3
#35 0x408294f5 in KApplication::notify () from /opt/kde/lib/libkdecore.so.4
#36 0x40cfb321 in QObject::removeChild () from /usr/lib/qt/lib/libqt-mt.so.3
#37 0x40cf9fba in QObject::~QObject () from /usr/lib/qt/lib/libqt-mt.so.3
#38 0x40d2d7a1 in QWidget::~QWidget () from /usr/lib/qt/lib/libqt-mt.so.3
#39 0x40e100f5 in QScrollView::~QScrollView ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#40 0x40f03c3f in QCanvasView::~QCanvasView ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#41 0x081b0ee2 in UMLView::~UMLView ()
#42 0x0817e75e in QPtrList<UMLView>::deleteItem ()
#43 0x40fb648c in QGList::remove () from /usr/lib/qt/lib/libqt-mt.so.3
#44 0x08181531 in UMLDoc::removeView ()
#45 0x0819202a in UMLDoc::removeAllViews ()
#46 0x08181a33 in UMLDoc::closeDocument ()
#47 0x081951de in UMLDoc::loadUndoData ()
#48 0x0817a010 in UMLApp::slotEditUndo ()
#49 0x0817e237 in UMLApp::qt_invoke ()
#50 0x40cfd11c in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#51 0x40cfcf44 in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#52 0x4059dc0b in KAction::activated () from /opt/kde/lib/libkdeui.so.4
#53 0x4059d37a in KAction::slotActivated () from /opt/kde/lib/libkdeui.so.4
#54 0x4059def1 in KAction::qt_invoke () from /opt/kde/lib/libkdeui.so.4
#55 0x40cfd11c in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#56 0x40cfcf44 in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#57 0x408bebbb in KAccelPrivate::menuItemActivated ()
   from /opt/kde/lib/libkdecore.so.4
#58 0x408bd3d8 in KAccelPrivate::eventFilter ()
   from /opt/kde/lib/libkdecore.so.4
#59 0x40cfaa4e in QObject::activate_filters ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#60 0x40cfa97c in QObject::event () from /usr/lib/qt/lib/libqt-mt.so.3
#61 0x40d331df in QWidget::event () from /usr/lib/qt/lib/libqt-mt.so.3
#62 0x40df1972 in QMainWindow::event () from /usr/lib/qt/lib/libqt-mt.so.3
#63 0x40ca07df in QApplication::internalNotify ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#64 0x40ca02d4 in QApplication::notify () from /usr/lib/qt/lib/libqt-mt.so.3
#65 0x408294f5 in KApplication::notify () from /opt/kde/lib/libkdecore.so.4
#66 0x408bc33b in KAccelEventHandler::x11Event ()
   from /opt/kde/lib/libkdecore.so.4
#67 0x4082f5ef in KApplication::x11EventFilter ()
   from /opt/kde/lib/libkdecore.so.4
#68 0x40c2a168 in qt_set_x11_event_filter ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#69 0x40c33e0b in QApplication::x11ProcessEvent ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#70 0x40c4ae64 in QEventLoop::processEvents ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#71 0x40cb2b38 in QEventLoop::enterLoop () from /usr/lib/qt/lib/libqt-mt.so.3
#72 0x40cb29e8 in QEventLoop::exec () from /usr/lib/qt/lib/libqt-mt.so.3
#73 0x40ca0a31 in QApplication::exec () from /usr/lib/qt/lib/libqt-mt.so.3
#74 0x08152bd4 in main ()
Comment 1 ivi 2005-04-22 08:46:35 UTC
Umbrello crases... 1.4, 1.4.1 and 1.5 from 2005-04-22 (CVS)

Flash video screen captures with vnc2swf.
http://documents.dhs.net.ru/Umbrello_crashes.htm

OS: FreeBSD 5.4-RC2
X.Org 6.8.2
KDE 3.4.0
Comment 2 Oliver Kellogg 2005-04-22 21:45:37 UTC
It doesn't crash for me.
Could you try again with "Settings"->"Configure Umbrello"->
"use tabbed diagrams" disabled? (Remember to exit and restart
Umbrello after that else the change doesn't take effect)
Thanks.
Comment 3 ivi 2005-04-26 03:38:07 UTC
Oliver Kellogg wrote:

[bugs.kde.org quoted mail]

Ok! Look here - http://documents.dhs.net.ru/umbrello.htm
(Flash video screen captures with vnc2swf, umbrello.swf - 4.6 MB)
Comment 4 Oliver Kellogg 2005-04-27 23:33:06 UTC
CVS commit by okellogg: 

{set,get}Name(): Revert the change of umlview.h:1.66 and umlview.cpp:1.198,
it spoiled non-latin1 diagram names.
Thanks to Andre Woebbeking <Woebbeking_AT_onlinehome.de> for spotting the
problem.
CCBUG:103170


  M +2 -2      umlview.cpp   1.217
  M +5 -0      umlview.h   1.77


--- kdesdk/umbrello/umbrello/umlview.h  #1.76:1.77
@@ -996,4 +996,9 @@ protected:
 
         /**
+         * The name of the diagram.
+         */
+        QString m_Name;
+
+        /**
          * The documentation of the diagram.
          */

--- kdesdk/umbrello/umbrello/umlview.cpp  #1.216:1.217
@@ -215,9 +215,9 @@ UMLView::~UMLView() {
 
 QString UMLView::getName() const {
-        return QString( QObject::name() );
+        return m_Name;
 }
 
 void UMLView::setName(const QString &name) {
-        QObject::setName( name.latin1() );
+        m_Name = name;
 }
 
Comment 5 ivi 2005-04-28 05:42:36 UTC
I have updated umbrello from CVS. Non-latin1 names of diagrams now are displayed normally. But it doesn't solve a problem with crash umbrello if enabled "use tabbed diagrams". :-(

http://documents.dhs.net.ru/umbrello-2.htm   (umbrello.swf - 1.7 MB)
Comment 6 Jonathan Riddell 2005-05-15 15:51:40 UTC
Undo doesn't crash for me, could you list the steps needed to make it crash from a new file?
Comment 7 ivi 2005-05-15 17:45:36 UTC
The sequence of actions isn't important...
Step by step look at http://documents.dhs.net.ru/Umbrello_crashes.htm and http://documents.dhs.net.ru/umbrello-2.htm
Comment 8 Jonathan Riddell 2005-05-16 14:04:22 UTC
I'm afraid I don't have flash.  Undo does work for me without crashing.  Have you tried with current development version from subversion?
Comment 9 Oliver Kellogg 2005-05-16 15:05:47 UTC
In the "Use tabbed diagrams" config, press the small red "x"
at the right of the diagram tab bar. Crashes every time for me.
Comment 10 Oliver Kellogg 2005-05-16 15:10:20 UTC
The backtrace is slightly different for me though:

[KCrash handler]
#4  0x4065dfb6 in KToolBarButton::slotClicked() ()
   from /opt/kde3/lib/libkdeui.so.4
#5  0x4065e9b9 in KToolBarButton::qt_invoke(int, QUObject*) ()
   from /opt/kde3/lib/libkdeui.so.4
#6  0x40ce0b46 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#7  0x40ce09e7 in QObject::activate_signal(int) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#8  0x410337cc in QButton::clicked() () from /usr/lib/qt3/lib/libqt-mt.so.3
#9  0x40d75676 in QButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#10 0x4065cf33 in KToolBarButton::mouseReleaseEvent(QMouseEvent*) ()
   from /opt/kde3/lib/libkdeui.so.4
#11 0x40d17bce in QWidget::event(QEvent*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#12 0x40c81f5f in QApplication::internalNotify(QObject*, QEvent*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#13 0x40c81313 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#14 0x408429d2 in KApplication::notify(QObject*, QEvent*) ()
   from /opt/kde3/lib/libkdecore.so.4
#15 0x40c11c58 in QETWidget::translateMouseEvent(_XEvent const*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#16 0x40c0feab in QApplication::x11ProcessEvent(_XEvent*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#17 0x40c26f9d in QEventLoop::processEvents(unsigned) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#18 0x40c94683 in QEventLoop::enterLoop() ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#19 0x40c94576 in QEventLoop::exec() () from /usr/lib/qt3/lib/libqt-mt.so.3
#20 0x40c8217f in QApplication::exec() () from /usr/lib/qt3/lib/libqt-mt.so.3
#21 0x0816dcff in main (argc=1, argv=0xbffff304) at main.cpp:95
#22 0x414b68ae in __libc_start_main () from /lib/libc.so.6
Comment 11 Jonathan Riddell 2005-05-16 15:27:45 UTC
Yes, I can see that.
Comment 12 Jonathan Riddell 2005-05-16 19:26:19 UTC
*** Bug 105464 has been marked as a duplicate of this bug. ***
Comment 13 Jonathan Riddell 2005-05-17 13:15:34 UTC
*** Bug 105807 has been marked as a duplicate of this bug. ***
Comment 14 David Cuadrado 2005-06-06 05:53:08 UTC
Hi,

when I click in the top left icon (close tab) umbrello crashes,

I fix this problem:

in uml.cpp

KToolBar *m_buttonContainer = new KToolBar(m_tabWidget);
KAction *m_closeDiagramButton = new KAction(m_buttonContainer);
m_closeDiagramButton->plug(m_bar);
...

connect(m_closeDiagramButton, SIGNAL(activated()), SLOT(slotDeleteDiagram()));
...

m_tabWidget->setCornerWidget( m_buttonContainer, TopRight );
Comment 15 Oliver Kellogg 2005-06-06 07:58:06 UTC
I'm not quite sure how to integrate that change (for example,
what is m_bar ?)
If you could attach a diff against uml.cpp from svn main trunk
that would help a lot.
Comment 16 David Cuadrado 2005-06-06 18:03:00 UTC
sorry, is my error: m_bar is m_buttonContainer, but I have a best solution

don't use KToolBarButton, use QToolButton instead

diff:

437c437
<               KToolBarButton* m_closeDiagramButton = new KToolBarButton("tab_remove", 0, m_tabWidget);
---
>               QToolButton* m_closeDiagramButton = new QToolButton(m_tabWidget);
Comment 17 Oliver Kellogg 2005-06-06 19:15:16 UTC
SVN commit 422845 by okellogg:

Use QToolButton instead of KToolBarButton for m_closeDiagramButton.
Thanks to David Cuadrado <krawek_AT_gmail.com> for the fix.
BUG:103170


 M  +1 -1      ChangeLog  
 M  +8 -3      umbrello/uml.cpp  
 M  +8 -3      umbrello/uml.h  


--- trunk/KDE/kdesdk/umbrello/ChangeLog #422844:422845
@@ -10,7 +10,7 @@
 Version 1.4.2 (maintenance release)
 
 * Bugs fixed from http://bugs.kde.org :
-106632 106673
+103170 106632 106673
 
 Version 1.4.1 (maintenance release)
 
--- trunk/KDE/kdesdk/umbrello/umbrello/uml.cpp #422844:422845
@@ -22,6 +22,7 @@
 #include <qwidgetstack.h>
 #include <qslider.h>
 #include <qregexp.h>
+#include <qtoolbutton.h>
 
 // kde includes
 #include <kaction.h>
@@ -407,6 +408,9 @@
 
 	m_mainDock = createDockWidget("maindock", 0L, 0L, "main dock");
 #if KDE_IS_VERSION(3,1,90)
+	m_newSessionButton = NULL;
+	m_diagramMenu = NULL;
+	m_closeDiagramButton = NULL;
 	if (m_optionState.generalState.tabdiagrams) {
 		m_viewStack = NULL;
 		m_tabWidget = new KTabWidget(m_mainDock, "tab_widget");
@@ -415,11 +419,11 @@
 		m_tabWidget->setAutomaticResizeTabs( true );
 #endif
 
-		KToolBarButton* m_newSessionButton = new KToolBarButton("tab_new", 0, m_tabWidget);
+		m_newSessionButton = new KToolBarButton("tab_new", 0, m_tabWidget);
 		m_newSessionButton->setIconSet( SmallIcon( "tab_new" ) );
 		m_newSessionButton->adjustSize();
 		m_newSessionButton->setAutoRaise(true);
-		KPopupMenu* m_diagramMenu = new KPopupMenu(m_newSessionButton);
+		m_diagramMenu = new KPopupMenu(m_newSessionButton);
 
 		m_diagramMenu->insertItem(Umbrello::iconSet(Uml::dt_Class), i18n("Class Diagram..."), this, SLOT(slotClassDiagram()) );
 		m_diagramMenu->insertItem(Umbrello::iconSet(Uml::dt_Sequence), i18n("Sequence Diagram..."), this, SLOT(slotSequenceDiagram()) );
@@ -434,7 +438,8 @@
 		//FIXME why doesn't this work?
 		//m_newSessionButton->setPopup(newDiagram->popupMenu());
 
-		KToolBarButton* m_closeDiagramButton = new KToolBarButton("tab_remove", 0, m_tabWidget);
+		//m_closeDiagramButton = new KToolBarButton("tab_remove", 0, m_tabWidget);
+		m_closeDiagramButton = new QToolButton(m_tabWidget);
 		m_closeDiagramButton->setIconSet( SmallIcon("tab_remove") );
 		m_closeDiagramButton->adjustSize();
 
--- trunk/KDE/kdesdk/umbrello/umbrello/uml.h #422844:422845
@@ -54,11 +54,14 @@
 class KToggleAction;
 class KDockWidget;
 class KTabWidget;
+class KToolBarButton;
+class KPopupMenu;
 
 // Qt forward declarations
 class QWidgetStack;
 class QMenuData;
 class QClipboard;
+class QToolButton;
 
 class RefactoringAssistant;
 
@@ -880,11 +883,13 @@
 	KAction* changeTabRight;
 	KAction* moveTabLeft;
 	KAction* moveTabRight;
-//Remove these once we stop supporting KDE 3.1
-// #if !KDE_IS_VERSION(3,1,90)
+#if KDE_IS_VERSION(3,1,90)
+	KToolBarButton* m_newSessionButton;
+	KPopupMenu* m_diagramMenu;
+	QToolButton* m_closeDiagramButton;
+#endif
 	KToggleAction* viewToolBar;
 	KToggleAction* viewStatusBar;
-// #endif
 	WorkToolBar* toolsbar;
 	QTimer* m_clipTimer;
 	QTimer* m_copyTimer;
Comment 18 Albert Astals Cid 2005-06-06 19:21:35 UTC
Hi guys, sorry to be late, but this was a bug in kdelibs 3.4.0 that i fixed for kde 3.4.1, not sure if needs to be fixed on umbrello too.
More info at http://websvn.kde.org/trunk/KDE/kdelibs/kdeui/ktoolbarbutton.cpp Revision 401674