Summary: | crash when closing with (+)/(-) in filebrowsing mode when directory is not completed with reading content. | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Edwin Schepers <yez> |
Component: | general | Assignee: | Konqueror Developers <konq-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | bastian |
Priority: | NOR | ||
Version: | 3.3 | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Edwin Schepers
2004-08-14 16:00:44 UTC
It's somewhat hard to reproduce (need to get the timing right), but I can reproduce it here indeed: konqueror: [virtual void KonqTreeViewWidget::slotClear(const KURL&)] fish://bastian@localhost/home/bastian/cvs_83/kcontrol.backup1 kio (KDirWatch): WARNING: KDirWatch::removeDir can't handle '/home/bastian/cvs_83/kcontrol.backup1' kio (KDirListerCache): listDir: Entry not in cache or reloaded: fish://bastian@localhost/home/bastian/cvs_83/kcontrol.backup1 KCrash: crashing... crashRecursionCounter = 2 KCrash: Application Name = konqueror path = <unknown> pid = 6250 #4 KFileItem::pixmap(int, int) const (this=0x869c3a8, _size=16, _state=1) at qstring.h:880 #5 0x4220093f in KonqListViewItem::setActive(bool) (this=0x86adf48) at konq_listviewitems.h:54 #6 0x421fa11c in KonqBaseListViewWidget::contentsMouseMoveEvent(QMouseEvent*) (this=0x836b828, e=0xbfffe4e0) at listview/konq_listviewwidget.cc:473 #7 0x40f76a27 in QScrollView::viewportMouseMoveEvent(QMouseEvent*) ( this=0x836b828, e=0xbfffea00) at widgets/qscrollview.cpp:1782 Valgrind: ==19887== Invalid read of size 4 ==19887== at 0x405FCAAB: KFileItem::pixmap(int, int) const (kfileitem.cpp:461) ==19887== by 0x4E04793E: KonqListViewItem::setActive(bool) (konq_listviewitems.h:54) ==19887== by 0x4E04111B: KonqBaseListViewWidget::contentsMouseMoveEvent(QMouseEvent*) (konq_listviewwidget.cc: ==19887== by 0x41191A26: QScrollView::viewportMouseMoveEvent(QMouseEvent*) (qscrollview.cpp:1782) ==19887== by 0x41190FA9: QScrollView::eventFilter(QObject*, QEvent*) (qscrollview.cpp:1512) ==19887== by 0x4115B424: QListView::eventFilter(QObject*, QEvent*) (qlistview.cpp:3833) ==19887== by 0x4106AD2F: QObject::activate_filters(QEvent*) (qobject.cpp:902) ==19887== by 0x4106ABA1: QObject::event(QEvent*) (qobject.cpp:735) ==19887== by 0x410A53FE: QWidget::event(QEvent*) (qwidget.cpp:4653) ==19887== by 0x4100A7BA: QApplication::internalNotify(QObject*, QEvent*) (qapplication.cpp:2620) ==19887== by 0x41009F70: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:2406) ==19887== by 0x40B11E06: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:495) ==19887== by 0x40FA08FC: QApplication::sendSpontaneousEvent(QObject*, QEvent*) (qapplication.h:494) ==19887== by 0x40F998FE: QETWidget::translateMouseEvent(_XEvent const*) (qapplication_x11.cpp:4257) ==19887== by 0x40F9755E: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3408) ==19887== by 0x40FB1B7B: QEventLoop::processEvents(unsigned) (qeventloop_x11.cpp:192) ==19887== by 0x4101E981: QEventLoop::enterLoop() (qeventloop.cpp:198) ==19887== by 0x4101E89D: QEventLoop::exec() (qeventloop.cpp:145) ==19887== by 0x4100A93A: QApplication::exec() (qapplication.cpp:2743) ==19887== by 0x4028315B: kdemain (konq_main.cc:204) ==19887== by 0x80486A6: main (kdeinit_konqueror.cpp:2) ==19887== by 0x418FFD3D: __libc_start_main (in /lib/libc.so.6) ==19887== by 0x80485F0: ??? (start.S:102) ==19887== Address 0x4B639BF8 is 120 bytes inside a block of size 124 free'd ==19887== at 0x4002A0B3: __builtin_delete (vg_replace_malloc.c:244) ==19887== by 0x4002A0D1: operator delete(void*) (vg_replace_malloc.c:253) ==19887== by 0x405FB93E: KFileItem::~KFileItem() (kfileitem.cpp:169) ==19887== by 0x4029EF8D: QPtrList<KFileItem>::deleteItem(void*) (qptrlist.h:150) ==19887== by 0x4133E05E: QGList::clear() (qglist.cpp:701) ==19887== by 0x4029EEA7: QPtrList<KFileItem>::~QPtrList() (qptrlist.h:93) ==19887== by 0x4060413E: KDirListerCache::forgetDirs(KDirLister*, KURL const&, bool) (kdebug.h:231) ==19887== by 0x40601078: KDirListerCache::listDir(KDirLister*, KURL const&, bool, bool) (kdirlister.cpp:123) ==19887== by 0x4060F407: KDirLister::openURL(KURL const&, bool, bool) (kdirlister.cpp:1588) ==19887== by 0x4E04B2C7: KonqTreeViewWidget::openSubFolder(KonqListViewDir*, bool) (kfileitem.h:46) ==19887== by 0x4E04C1B0: KonqListViewDir::open(bool, bool) (konq_treeviewitem.cc:66) ==19887== by 0x4E04C132: KonqListViewDir::setOpen(bool) (konq_treeviewitem.cc:54) ==19887== by 0x4116515D: QListView::setOpen(QListViewItem*, bool) (qlistview.cpp:6834) ==19887== by 0x4115BDD7: QListView::contentsMousePressEventEx(QMouseEvent*) (qlistview.cpp:4270) ==19887== by 0x4115B7D2: QListView::contentsMousePressEvent(QMouseEvent*) (qlistview.cpp:4201) ==19887== by 0x408B6424: KListView::contentsMousePressEvent(QMouseEvent*) (klistview.cpp:778) ==19887== by 0x4E040E58: KonqBaseListViewWidget::contentsMousePressEvent(QMouseEvent*) (konq_listviewwidget.cc ==19887== by 0x411917B0: QScrollView::viewportMousePressEvent(QMouseEvent*) (qscrollview.cpp:1731) ==19887== by 0x41190EF5: QScrollView::eventFilter(QObject*, QEvent*) (qscrollview.cpp:1497) ==19887== by 0x4115B424: QListView::eventFilter(QObject*, QEvent*) (qlistview.cpp:3833) ==19887== by 0x4106AD2F: QObject::activate_filters(QEvent*) (qobject.cpp:902) ==19887== by 0x4106ABA1: QObject::event(QEvent*) (qobject.cpp:735) ==19887== by 0x410A53FE: QWidget::event(QEvent*) (qwidget.cpp:4653) CVS commit by waba: Don't keep listview items around that are no longer valid. (BR87204) CCMAIL: 87204-done@bugs.kde.org M +5 -0 konq_treeviewwidget.cc 1.55 --- kdebase/konqueror/listview/konq_treeviewwidget.cc #1.54:1.55 @@ -140,4 +140,9 @@ void KonqTreeViewWidget::clearSubDir( co } } + + // Delete all child items, their file-items are no longer valid + QListViewItem* child; + while((child = item->firstChild())) + delete child; } } this patch isnt applyed in cvs 3_4_BRANCH, why? |