Bug 133082

Summary: Closing window with ctrl-W crashes Quanta -- Backtrace included
Product: [Unmaintained] quanta Reporter: tilleyrw
Component: generalAssignee: András Manţia <amantia>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description tilleyrw 2006-08-27 18:53:05 UTC
Version:            (using KDE KDE 3.5.4)
Installed from:    Ubuntu Packages

After pressing ctrl-W to close a tab, Quanta crashed with the following backtrace:

Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread -1242576160 (LWP 9665)]
[KCrash handler]
#6  0xb630ed96 in KHTMLPart::view (this=0x0) at qguardedptr.h:117
#7  0x08345352 in KafkaDocument::reloadDocument (this=0x857f368)
    at wkafkapart.cpp:281
#8  0x08345599 in undoRedo::reloadKafkaEditor (this=0x97ff078, force=true, 
    selection=0x0) at undoredo.cpp:903
#9  0x0808c355 in QuantaView::reloadVPLView (this=0x8f739c8, force=true)
    at quantaview.cpp:638
#10 0x08188e08 in Parser::parse (this=0x851d2b0, w=0x97ca860, force=true)
    at parser.cpp:561
#11 0x080ad8ba in QuantaApp::reparse (this=0x84a1968, force=true)
    at quanta.cpp:1609
#12 0x080e377c in ViewManager::slotViewActivated (this=0x8564ed8, 
    view=0x984cae8) at viewmanager.cpp:225
#13 0x080f20a6 in ViewManager::qt_invoke (this=0x8564ed8, _id=2, 
    _o=0xbfd0aa84) at viewmanager.moc:234
#14 0xb6e0eeb9 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#15 0xb6821523 in KMdiMainFrm::viewActivated (this=0x84a1968, t0=0x0)
    at kmdimainfrm.moc:494
#16 0xb68216e1 in KMdiMainFrm::qt_emit (this=0x84a1968, _id=13, _o=0xbfd0ab74)
    at kmdimainfrm.moc:626
#17 0x0809c970 in QuantaApp::qt_emit (this=0x84a1968, _id=13, _o=0xbfd0ab74)
    at quanta.moc:863
#18 0xb6e0ee8d in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#19 0xb6820ee5 in KMdiChildView::activated (this=0x984cae8, t0=0x0)
    at kmdichildview.moc:270
#20 0xb6832d66 in KMdiChildView::activate (this=0x984cae8)
    at kmdichildview.cpp:442
#21 0xb68330d1 in KMdiChildView::eventFilter (this=0x984cae8, obj=0x97fb4f8, 
    e=0xbfd0b054) at kmdichildview.cpp:560
#22 0xb6e0c002 in QObject::activate_filters () from /usr/lib/libqt-mt.so.3
#23 0xb6e0c080 in QObject::event () from /usr/lib/libqt-mt.so.3
#24 0xb6e495aa in QWidget::event () from /usr/lib/libqt-mt.so.3
#25 0xb6da4e56 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#26 0xb6da5bd6 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#27 0xb753a7ab in KApplication::notify (this=0x83d8650, receiver=0x97fb4f8, 
    event=0xbfd0b054) at kapplication.cpp:550
#28 0xb6d36157 in QApplication::sendEvent () from /usr/lib/libqt-mt.so.3
#29 0xb6e489db in QWidget::setFocus () from /usr/lib/libqt-mt.so.3
#30 0xb6f79670 in QWidgetStack::raiseWidget () from /usr/lib/libqt-mt.so.3
#31 0xb6f798e1 in QWidgetStack::raiseWidget () from /usr/lib/libqt-mt.so.3
#32 0xb6f5ecbf in QTabWidget::showTab () from /usr/lib/libqt-mt.so.3
#33 0xb71c442a in QTabWidget::qt_invoke () from /usr/lib/libqt-mt.so.3
#34 0xb78076e7 in KTabWidget::qt_invoke (this=0x84e7e50, _id=49, 
    _o=0xbfd0b2a8) at ktabwidget.moc:388
#35 0xb6830c81 in KMdiDocumentViewTabWidget::qt_invoke (this=0x84e7e50, 
    _id=49, _o=0xbfd0b2a8) at kmdidocumentviewtabwidget.moc:136
#36 0xb6e0eeb9 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#37 0xb6e0f7c8 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#38 0xb71c3a59 in QTabBar::selected () from /usr/lib/libqt-mt.so.3
#39 0xb777d790 in KTabBar::setTabEnabled (this=0x84ea110, id=17, 
    enabled=false) at ktabbar.cpp:80
#40 0xb6f5fd2a in QTabWidget::removePage () from /usr/lib/libqt-mt.so.3
#41 0xb7804e00 in KTabWidget::removePage (this=0x84e7e50, w=0x9886b98)
    at ktabwidget.cpp:446
#42 0xb681c16f in KMdiDocumentViewTabWidget::removePage (this=0x84e7e50, 
    w=0x0) at kmdidocumentviewtabwidget.cpp:78
#43 0xb6f61145 in QTabWidget::eventFilter () from /usr/lib/libqt-mt.so.3
#44 0xb6e0c002 in QObject::activate_filters () from /usr/lib/libqt-mt.so.3
#45 0xb6e0c080 in QObject::event () from /usr/lib/libqt-mt.so.3
#46 0xb6e495aa in QWidget::event () from /usr/lib/libqt-mt.so.3
#47 0xb6da4e56 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#48 0xb6da5bd6 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#49 0xb753a7ab in KApplication::notify (this=0x83d8650, receiver=0x84e8560, 
    event=0xbfd0b824) at kapplication.cpp:550
#50 0xb6d36157 in QApplication::sendEvent () from /usr/lib/libqt-mt.so.3
#51 0xb6e0c789 in QObject::removeChild () from /usr/lib/libqt-mt.so.3
#52 0xb6d73b94 in QWidget::reparentSys () from /usr/lib/libqt-mt.so.3
#53 0xb6e44ff3 in QWidget::reparent () from /usr/lib/libqt-mt.so.3
#54 0xb6e4510e in QWidget::reparent () from /usr/lib/libqt-mt.so.3
#55 0xb683a4cd in KMdiMainFrm::closeWindow (this=0x84a1968, pWnd=0x9886b98, 
    layoutTaskBar=true) at kmdimainfrm.cpp:848
#56 0x080f13fd in ViewManager::removeView (this=0x8564ed8, view=0x9886b98, 
    force=false, createNew=true) at viewmanager.cpp:183
#57 0x080f201f in QuantaApp::closeActiveView (this=0x84a1968)
    at viewmanager.h:85
#58 0xb684e744 in KMdiMainFrm::qt_invoke (this=0x84a1968, _id=105, 
    _o=0xbfd0bc4c) at kmdimainfrm.moc:566
#59 0x080f2253 in QuantaApp::qt_invoke (this=0x84a1968, _id=105, 
    _o=0xbfd0bc4c) at quanta.moc:848
#60 0xb6e0eeb9 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#61 0xb6e0f954 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#62 0xb77553e7 in KAction::activated (this=0x0) at kaction.moc:176
#63 0xb77884d2 in KAction::slotActivated (this=0x84df0d0) at kaction.cpp:1102
#64 0xb7837683 in KAction::qt_invoke (this=0x84df0d0, _id=15, _o=0xbfd0bd5c)
    at kaction.moc:218
#65 0xb6e0eeb9 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#66 0xb6e0f954 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#67 0xb746fe8b in KAccelPrivate::menuItemActivated (this=0x0)
    at kaccelprivate.moc:110
#68 0xb74a2224 in KAccelPrivate::emitActivatedSignal (this=0x84b5c48, 
    pAction=0x84df8a8) at kaccel.cpp:403
#69 0xb75352a3 in KAccelPrivate::eventFilter (this=0x84b5c48, 
    pEvent=0xbfd0c2ac) at kaccel.cpp:373
#70 0xb6e0c002 in QObject::activate_filters () from /usr/lib/libqt-mt.so.3
#71 0xb6e0c080 in QObject::event () from /usr/lib/libqt-mt.so.3
#72 0xb6e495aa in QWidget::event () from /usr/lib/libqt-mt.so.3
#73 0xb6f1b762 in QMainWindow::event () from /usr/lib/libqt-mt.so.3
#74 0xb6824200 in KMdiMainFrm::event (this=0x84a1968, e=0xbfd0c2ac)
    at kmdimainfrm.cpp:1162
#75 0xb6da4e56 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#76 0xb6da51ee in QApplication::notify () from /usr/lib/libqt-mt.so.3
#77 0xb753a7ab in KApplication::notify (this=0x83d8650, receiver=0x988a3b0, 
    event=0xbfd0c2ac) at kapplication.cpp:550
#78 0xb7529387 in KAccelEventHandler::x11Event (this=0x84b5df8, 
    pEvent=0xbfd0c5e8) at qapplication.h:520
#79 0xb753d9da in KApplication::x11EventFilter (this=0x83d8650, 
    _event=0xbfd0c5e8) at kapplication.cpp:1659
#80 0xb6d22457 in qt_set_x11_event_filter () from /usr/lib/libqt-mt.so.3
#81 0xb6d2f74c in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
#82 0xb6d494db in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#83 0xb6dbd947 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#84 0xb6dbd86a in QEventLoop::exec () from /usr/lib/libqt-mt.so.3
#85 0xb6da3965 in QApplication::exec () from /usr/lib/libqt-mt.so.3
#86 0x080f890a in main (argc=1, argv=0xbfd0c974) at main.cpp:216
#87 0xb601bea2 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
#88 0x0808bc11 in _start () at ../sysdeps/i386/elf/start.S:119

Hope this helps, Bob
Comment 1 András Manţia 2006-09-02 01:05:06 UTC
SVN commit 579903 by amantia:

Don't crash when closing a document in VPL mode.
Should fix the following bugs:

BUGS: 133082, 126585, 125153

 M  +1 -0      ChangeLog  
 M  +7 -9      src/quantaview.cpp  
 M  +8 -8      src/viewmanager.cpp  


--- branches/KDE/3.5/kdewebdev/quanta/ChangeLog #579902:579903
@@ -7,6 +7,7 @@
       - fix Save As problems, possibly #131728
       - add some more special characters to the list [#130513, #124628]
       - crash fix in CSS editor [#131849]
+      - don't crash when closing a document in VPL mode [#133082, #126585, #125153]
 
 Version 3.5.4 (Release date: 02-08-2006; Started 24-06-2005):
  - bugfixes:
--- branches/KDE/3.5/kdewebdev/quanta/src/quantaview.cpp #579902:579903
@@ -136,6 +136,7 @@
         m_customWidget->reparent(0L, 0, QPoint(), false);
     if (!saveModified())
           return false;
+    slotSetSourceLayout();
     if (static_cast<QuantaView *>(quantaApp->activeWindow()) == this)
     {
         parser->setSAParserEnabled(false);
@@ -143,8 +144,6 @@
         delete baseNode;
         baseNode = 0L;
         kdDebug(24000) << "Node objects after delete :" << NN << " baseNode= " << baseNode << endl;
-        if (m_kafkaDocument && m_kafkaDocument->getKafkaWidget() && m_kafkaDocument->getKafkaWidget()->view())
-          m_kafkaDocument->getKafkaWidget()->view()->reparent(0, 0, QPoint(), false);
     }
     if (m_document)
     {
@@ -152,8 +151,6 @@
       Project::ref()->saveBookmarks(url, dynamic_cast<KTextEditor::MarkInterface*>(m_document->doc()));
       emit eventHappened("before_close", url.url(), QString::null);
       m_currentViewsLayout = -1;
-      //slotSetSourceLayout(); //set the layout to source only, otherwise it crashes...
-     // m_kafkaDocument->getKafkaWidget()->view()->reparent(0, 0, QPoint(), false);
 //      m_document->closeTempFile();
       if (!m_document->isUntitled() && url.isLocalFile())
       {
@@ -161,7 +158,7 @@
 //        kdDebug(24000) << "removeFile[mayRemove]: " << url.path() << endl;
       }
       Project::ref()->saveCursorPosition(url, dynamic_cast<KTextEditor::ViewCursorInterface*>(m_document->view()));
-    
+
       quantaApp->menuBar()->activateItemAt(-1);
       quantaApp->guiFactory()->removeClient(m_document->view());
       emit eventHappened("after_close", url.url(), QString::null);
@@ -372,6 +369,7 @@
 
 //show the document if full size
    m_splitter->hide();
+   m_kafkaDocument->getKafkaWidget()->view()->reparent(0, 0, QPoint(), false);
    m_document->view()->reparent(m_documentArea, 0, QPoint(), true);
    m_document->view()->resize(m_documentArea->size());
    m_viewLayout->addWidget(m_documentArea, 1, 0);
@@ -751,20 +749,20 @@
 {
   if (m_document)
   {
-    if (m_currentFocus == QuantaView::VPLFocus || 
+    if (m_currentFocus == QuantaView::VPLFocus ||
         (m_currentFocus == QuantaView::SourceFocus && qConfig.smartTagInsertion))
       insertOutputInTheNodeTree("", "", quantaApp->showTagDialogAndReturnNode(tag, attr));
     else
     {
       QString selection;
-      if (m_document->selectionIf)  
+      if (m_document->selectionIf)
         selection = m_document->selectionIf->selection();
       TagDialog *dlg = new TagDialog(QuantaCommon::tagFromDTD(m_document->getDTDIdentifier(), tag), selection, attr, baseURL());
       if (dlg->exec())
       {
         dlg->insertTag(m_document, insertInLine);
       }
-  
+
       delete dlg;
     }
   }
@@ -996,7 +994,7 @@
        resize(width(), height());
   } else
   {
-/*    
+/*
     kdDebug(24000) << "m_documentArea->height(): " << m_documentArea->height() << endl;
     kdDebug(24000) << "ToolbarTabWidget::ref()->height(): " << ToolbarTabWidget::ref()->height() << " hidden: " << ToolbarTabWidget::ref()->isHidden() << " visible: " << ToolbarTabWidget::ref()->isVisible() << endl;
     kdDebug(24000) <<"sum: " << m_documentArea->height() + ToolbarTabWidget::ref()->height() << endl;
--- branches/KDE/3.5/kdewebdev/quanta/src/viewmanager.cpp #579902:579903
@@ -235,7 +235,7 @@
   if (w && !w->isUntitled())
   {
     emit viewActivated(w->url());
-    
+
     bool flag = TagActionManager::canIndentDTD(w->defaultDTD()->name);
     quantaApp->actionCollection()->action("apply_source_indentation")->setEnabled(flag);
   }
@@ -304,7 +304,7 @@
       return;  //save aborted
     }
   }
-  
+
   for (childIt = children.begin(); childIt != children.end(); ++childIt)
   {
       view = *childIt;
@@ -477,7 +477,7 @@
   disconnect(quantaApp, SIGNAL(viewActivated (KMdiChildView *)), this, SLOT(slotViewActivated(KMdiChildView*)));
   disconnect(quantaApp, SIGNAL(lastChildViewClosed()), this, SLOT(slotLastViewClosed()));
   ToolbarTabWidget::ref()->reparent(0L, 0, QPoint(), false);
-  
+
   for (childIt = children.begin(); childIt != children.end(); ++childIt)
   {
       view = dynamic_cast<QuantaView*>(*childIt);
@@ -525,7 +525,7 @@
       quantaApp->slotNewStatus();
   }
   emit filesClosed(true);
-  return true; 
+  return true;
 }
 
 bool ViewManager::isOneModified()
@@ -587,10 +587,10 @@
    if (m_separatorVisible)
        m_tabPopup->removeItemAt(SEPARATOR_INDEX);
    m_separatorVisible = false;
-   m_contextView = dynamic_cast<QuantaView*>(widget);   
+   m_contextView = dynamic_cast<QuantaView*>(widget);
    Document *w = 0L;
    if (m_contextView)
-    w = m_contextView->document();       
+    w = m_contextView->document();
    if (w)
    {
        if (!w->isUntitled())
@@ -620,7 +620,7 @@
    bool bookmarksFound = false;
    if (w && w->markIf)
    {
-     m_bookmarks->setDocument(w);           
+     m_bookmarks->setDocument(w);
      QPtrList<KTextEditor::Mark> m = w->markIf->marks();
      QPtrListIterator<KTextEditor::Mark> it(m);
      for(; *it; ++it)
@@ -631,7 +631,7 @@
          break;
        }
      }
-   }  
+   }
    m_tabPopup->setItemVisible(m_bookmarksMenuId, bookmarksFound);
 #ifdef ENABLE_CVSSERVICE
    if (w && w->url().isLocalFile() && !w->isUntitled() && CVSService::ref()->exists())