Bug 103328 - Crash after refreshing a folder where a file was renamed/copied/deleted..
Summary: Crash after refreshing a folder where a file was renamed/copied/deleted..
Status: RESOLVED WORKSFORME
Alias: None
Product: konqueror
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Konqueror Developers
URL:
Keywords:
: 112763 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-04-06 00:05 UTC by Mário Lopes
Modified: 2005-09-22 05:53 UTC (History)
2 users (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 Mário Lopes 2005-04-06 00:05:05 UTC
Version:            (using KDE KDE 3.4.0)
Installed from:    SuSE RPMs
OS:                Linux

When I copy/delete/whatever a file on a mounted fat32 folder, after hitting refresh (F5), it crashes. This didn't happen in Kde 3.3.2 that I've used previously.
Comment 1 Thiago Macieira 2005-04-06 02:48:17 UTC
Do you have a backtrace of when this happens?
Comment 2 Mário Lopes 2005-04-07 12:04:36 UTC
I do, I'll post it as soon as I get home.
Comment 3 Mário Lopes 2005-04-20 01:28:07 UTC
Using host libthread_db library "/lib/tls/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread 1096010304 (LWP 5662)]
[KCrash handler]
#7  0x4021948d in KFileMetaInfo::ref () from /opt/kde3/lib/libkio.so.4
#8  0x4022bf5a in KFileMetaInfo::operator= () from /opt/kde3/lib/libkio.so.4
#9  0x40230970 in KFileMetaInfo::KFileMetaInfo ()
   from /opt/kde3/lib/libkio.so.4
#10 0x4028966f in KFileItem::getToolTipText () from /opt/kde3/lib/libkio.so.4
#11 0x415713ac in KonqFileTip::showTip () from /opt/kde3/lib/libkonq.so.4
#12 0x4157152d in KonqFileTip::qt_invoke () from /opt/kde3/lib/libkonq.so.4
#13 0x40c3b31e in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#14 0x40c3bac6 in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#15 0x40f8f359 in QTimer::timeout () from /usr/lib/qt3/lib/libqt-mt.so.3
#16 0x40c6054f in QTimer::event () from /usr/lib/qt3/lib/libqt-mt.so.3
#17 0x40bd8baf in QApplication::internalNotify ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#18 0x40bda773 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3
#19 0x408646d1 in KApplication::notify () from /opt/kde3/lib/libkdecore.so.4
#20 0x40bcd35c in QEventLoop::activateTimers ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#21 0x40b86156 in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#22 0x40bf0b41 in QEventLoop::enterLoop () from /usr/lib/qt3/lib/libqt-mt.so.3
#23 0x40bf0986 in QEventLoop::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#24 0x40bda63f in QApplication::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#25 0x416f2cec in kdemain () from /opt/kde3/lib/libkdeinit_konqueror.so
#26 0x40018764 in kdeinitmain () from /opt/kde3/lib/kde3/konqueror.so
#27 0x0804e892 in launch ()
#28 0x0804ef9c in handle_launcher_request ()
#29 0x0804f559 in handle_requests ()
#30 0x0804fd2a in main ()
Comment 4 Carlos Roberto 2005-05-01 21:49:46 UTC
Crash too when I try to rename folder in FAT32 partation.

Backtrace:

[KCrash handler]
#5  0x00000000 in ?? ()
#6  0x428254cf in KonqSidebarDirTreeModule::followURL ()
   from /opt/kde/lib/kde3/konq_sidebartree_dirtree.so
#7  0x428251b5 in KonqSidebarDirTreeModule::slotListingStopped ()
   from /opt/kde/lib/kde3/konq_sidebartree_dirtree.so
#8  0x42825942 in KonqSidebarDirTreeModule::qt_invoke ()
   from /opt/kde/lib/kde3/konq_sidebartree_dirtree.so
#9  0x40c1f1ec in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#10 0x4025611d in KDirLister::completed () from /opt/kde/lib/libkio.so.4
#11 0x40252cf6 in KDirListerCache::slotUpdateResult ()
   from /opt/kde/lib/libkio.so.4
#12 0x40257304 in KDirListerCache::qt_invoke () from /opt/kde/lib/libkio.so.4
#13 0x40c1f1ec in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#14 0x4019ffda in KIO::Job::result () from /opt/kde/lib/libkio.so.4
#15 0x4018835c in KIO::Job::emitResult () from /opt/kde/lib/libkio.so.4
#16 0x4018984c in KIO::SimpleJob::slotFinished () from /opt/kde/lib/libkio.so.4
#17 0x4019287e in KIO::ListJob::slotFinished () from /opt/kde/lib/libkio.so.4
#18 0x401a3433 in KIO::ListJob::qt_invoke () from /opt/kde/lib/libkio.so.4
#19 0x40c1f1ec in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#20 0x40c1f014 in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#21 0x4017c40e in KIO::SlaveInterface::finished ()
   from /opt/kde/lib/libkio.so.4
#22 0x4017af71 in KIO::SlaveInterface::dispatch ()
   from /opt/kde/lib/libkio.so.4
#23 0x4017a479 in KIO::SlaveInterface::dispatch ()
   from /opt/kde/lib/libkio.so.4
#24 0x40177ccb in KIO::Slave::gotInput () from /opt/kde/lib/libkio.so.4
#25 0x401799e8 in KIO::Slave::qt_invoke () from /opt/kde/lib/libkio.so.4
#26 0x40c1f1ec in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#27 0x40c1f34d in QObject::activate_signal ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#28 0x40f42f92 in QSocketNotifier::activated ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#29 0x40c3b9b0 in QSocketNotifier::event () from /usr/lib/qt/lib/libqt-mt.so.3
#30 0x40bc294f in QApplication::internalNotify ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#31 0x40bc1f4e in QApplication::notify () from /usr/lib/qt/lib/libqt-mt.so.3
#32 0x407494f5 in KApplication::notify () from /opt/kde/lib/libkdecore.so.4
#33 0x40bb235a in QEventLoop::activateSocketNotifiers ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#34 0x40b6c8a3 in QEventLoop::processEvents ()
   from /usr/lib/qt/lib/libqt-mt.so.3
#35 0x40bd4d08 in QEventLoop::enterLoop () from /usr/lib/qt/lib/libqt-mt.so.3
#36 0x40bd4bb8 in QEventLoop::exec () from /usr/lib/qt/lib/libqt-mt.so.3
#37 0x40bc2ba1 in QApplication::exec () from /usr/lib/qt/lib/libqt-mt.so.3
#38 0x41f4022c in kdemain () from /opt/kde/lib/libkdeinit_konqueror.so
#39 0x4091f7b6 in kdeinitmain () from /opt/kde/lib/kde3/konqueror.so
#73 0x41060cc0 in vtable for QGArray () from /usr/lib/qt/lib/libqt-mt.so.3
#80 0x4138aff4 in ?? () from /lib/libpthread.so.0
#118 0x080525f8 in vtable for QCString ()
#121 0x4138551b in thread_self () from /lib/libpthread.so.0
#130 0x4147547d in operator delete () from /usr/lib/./libstdc++.so.5
#141 0x08050656 in _IO_stdin_used ()
#142 0xbffff774 in ?? ()
#143 0xbffff6a8 in ?? ()
#144 0x414f7624 in __cxa_atexit_internal () from /lib/libc.so.6
#145 0x414e1469 in __libc_start_main () from /lib/libc.so.6
#81 0x415e69c0 in __libc_tsd_MALLOC_data () from /lib/libc.so.6
#82 0x0805b2c8 in ?? ()
#83 0xbffff258 in ?? ()
#84 0x41382c6a in pthread_mutex_unlock () from /lib/libpthread.so.0
Comment 5 Carlos Roberto 2005-05-01 21:52:17 UTC
KDE 3.4 Slackware Pack
Comment 6 Mário Lopes 2005-05-02 11:44:40 UTC
This is still happening on kde 3.4
Comment 7 Michael Brade 2005-05-18 16:33:00 UTC
SVN commit 415405 by brade:

Whoa! DictIterators are updated when deleting items and
we were using a for-loop :( Fixes a lot of crashes when
deleting items with the treeview.

BUG: 105304, 102331

I didn't close #103328: please tell me if you were using
the treeview, and if so, check if this fixes your crashes.

CCBUGS: 103328


 M  +11 -8     trunk/KDE/kdebase/konqueror/listview/konq_treeviewwidget.cc  


--- trunk/KDE/kdebase/konqueror/listview/konq_treeviewwidget.cc #415404:415405
@@ -80,7 +80,8 @@
     QStringList openDirList;
 
     QDictIterator<KonqListViewDir> it( m_dictSubDirs );
-    for (; it.current(); ++it ) {
+    for (; it.current(); ++it )
+    {
         if ( it.current()->isOpen() )
             openDirList.append( it.current()->url( -1 ) );
     }
@@ -142,21 +143,23 @@
    // its children will be deleted by Qt immediately!
 
    kdDebug(1202) << k_funcinfo << _url << endl;
-
-   QListViewItem *item = m_dictSubDirs[_url.url(-1)];
+   
+   KonqListViewDir *item = m_dictSubDirs[_url.url(-1)];
    if ( item )
    {
       // search all subdirs of _url (item)
       QDictIterator<KonqListViewDir> it( m_dictSubDirs );
-      for ( ; it.current(); ++it )
+      while ( it.current() )
       {
-         if ( !_url.equals( it.current()->item()->url(), true )
-              && _url.isParentOf( it.current()->item()->url() ) )
+         if ( !_url.equals( it.currentKey(), true )
+              && _url.isParentOf( it.currentKey() ) )
          {
-            m_dictSubDirs.remove( it.currentKey() );
             m_urlsToOpen.remove( it.currentKey() );
             m_urlsToReload.remove( it.currentKey() );
+            m_dictSubDirs.remove( it.currentKey() );  // do last, it changes it.currentKey()!!
          }
+         else
+            ++it;
       }
       
       // Remark: This code works only if we have exactly one tree which is the
@@ -278,7 +281,7 @@
     QString url = _fileItem->url().url(-1);
 
     // Check if this item is in m_dictSubDirs, and if yes, then remove it
-    slotClear( KURL( url ) );
+    slotClear( _fileItem->url() );
    
     m_dictSubDirs.remove( url );
     m_urlsToOpen.remove( url );
Comment 8 Thiago Macieira 2005-09-17 02:01:43 UTC
*** Bug 112763 has been marked as a duplicate of this bug. ***
Comment 9 Matt Rogers 2005-09-22 05:53:02 UTC
Tried to reproduce with the treeview and couldn't (KDE 3.4.2). Closing.