Bug 158861 - crash on renaming open folder in imap
Summary: crash on renaming open folder in imap
Status: RESOLVED FIXED
Alias: None
Product: kmail
Classification: Applications
Component: IMAP (show other bugs)
Version: SVN trunk (KDE 4)
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: kdepim bugs
URL:
Keywords:
: 166121 (view as bug list)
Depends on:
Blocks:
 
Reported: 2008-03-06 18:10 UTC by Alex Merry
Modified: 2008-07-09 12:55 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Backtrace for the crash described above (7.45 KB, text/plain)
2008-03-06 18:11 UTC, Alex Merry
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alex Merry 2008-03-06 18:10:53 UTC
Version:           r782494 (using Devel)
Installed from:    Compiled sources
Compiler:          gcc 4.2.3 
OS:                Linux

I have a local (Dovecot) imap server.

I select a folder, so that it is opened in the folder contents pane.

I right-click that folder, and select properties.

I change the folder name.

I click OK.

KMail crashes, with the attached backtrace.

Console output:

kmail(7284) KMail::RenameJob::execute: RenameJob::rename - "imap://alex@localhost:143/uni.rev.wiM-2007/" |=> "imap://alex@localhost:143/uni.rev.wi-2007/"
kmail(7284)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::KCoreConfigSkeleton: Creating KCoreConfigSkeleton ( 0xbfd8d924 )
kmail(7284) KMail::FolderDialogTemplatesTab::save: use custom templates for folder ".1775941173.directory/.uni.directory/.rev.directory/wiM-2007" : false
kmail(7284)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig: KCoreConfigSkeleton::writeConfig()
kmail(7284)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::readConfig: KCoreConfigSkeleton::readConfig()
kmail(7284)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::KCoreConfigSkeleton: Creating KCoreConfigSkeleton ( 0xbfd8d87c )
kmail(7284)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig: KCoreConfigSkeleton::writeConfig()
kmail(7284)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::readConfig: KCoreConfigSkeleton::readConfig()
kmail(7284) KMFolderImap::close: Trying to close the selected folder "wi-2007" - ignoring!
*** KMail got signal 6 (Crashing)
KCrash: crashing... crashRecursionCounter = 2
KCrash: Application Name = kmail path = <unknown> pid = 7284
sock_file=/home/alex/.kde4/socket-glitch/kdeinit4__0
Comment 1 Alex Merry 2008-03-06 18:11:27 UTC
Created attachment 23809 [details]
Backtrace for the crash described above
Comment 2 Alex Merry 2008-03-06 18:12:49 UTC
Actually, right-clicking the folder selects the folder, so the first step isn't necessary.
Comment 3 Alex Merry 2008-03-06 18:14:02 UTC
This also happens on another (non-local) imap server.  I don't know the server software.
Comment 4 Thomas McGuire 2008-03-10 12:43:49 UTC
OK, I could reproduce it, will take a look soon.

Pasting backtrace for easier duplicate searching:

#8  0xb4cf36a1 in abort () from /lib/libc.so.6
#9  0xb75ddbd0 in KMFolderImap::close (this=0x841a0f0, 
    owner=0xb786eb40 "countunread", aForced=false)
    at /home/kde-devel/src/KDE/kdepim/kmail/kmfolderimap.cpp:118
#10 0xb75280f7 in FolderStorage::countUnread (this=0x841a0f0)
    at /home/kde-devel/src/KDE/kdepim/kmail/folderstorage.cpp:840
#11 0xb750197c in KMFolder::countUnread (this=0x8419fb0)
    at /home/kde-devel/src/KDE/kdepim/kmail/kmfolder.cpp:463
#12 0xb7485355 in KMFolderTree::slotUpdateCounts (this=0x850f120, 
    folder=0x8419fb0)
    at /home/kde-devel/src/KDE/kdepim/kmail/kmfoldertree.cpp:1668
#13 0xb748b84d in KMFolderTree::reload (this=0x850f120, openFolders=false)
    at /home/kde-devel/src/KDE/kdepim/kmail/kmfoldertree.cpp:627
#14 0xb747e284 in KMFolderTree::doFolderListChanged (this=0x850f120)
    at /home/kde-devel/src/KDE/kdepim/kmail/kmfoldertree.cpp:794
#15 0xb7489f1a in KMFolderTree::qt_metacall (this=0x850f120, 
    _c=QMetaObject::InvokeMetaMethod, _id=23, _a=0xbfe51844)
    at /home/kde-devel/build/KDE/kdepim/kmail/kmfoldertree.moc:261
#16 0xb7ecb56b in QMetaObject::activate (sender=0x81e1200, 
    from_signal_index=4, to_signal_index=4, argv=0x0)
    at kernel/qobject.cpp:2992
#17 0xb7ecb9e7 in QMetaObject::activate (sender=0x81e1200, m=0xb79a97c8, 
    local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3065
#18 0xb754ff73 in KMFolderMgr::changed (this=0x81e1200)
    at /home/kde-devel/build/KDE/kdepim/kmail/kmfoldermgr.moc:112
#19 0xb7550004 in KMFolderMgr::contentsChanged (this=0x81e1200)
    at /home/kde-devel/src/KDE/kdepim/kmail/kmfoldermgr.cpp:436
#20 0xb752d4bb in FolderStorage::rename (this=0x841a0f0, newName=@0x91ce58c, 
    newParent=0x0)
    at /home/kde-devel/src/KDE/kdepim/kmail/folderstorage.cpp:735
#21 0xb75dbe84 in KMFolderImap::rename (this=0x841a0f0, newName=@0x91ce58c, 
    aParent=0x0) at /home/kde-devel/src/KDE/kdepim/kmail/kmfolderimap.cpp:336
#22 0xb7797b34 in KMail::RenameJob::slotRenameResult (this=0x91ce558, 
    job=0x8555c68) at /home/kde-devel/src/KDE/kdepim/kmail/renamejob.cpp:182
#23 0xb7797c12 in KMail::RenameJob::qt_metacall (this=0x91ce558, 
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0xbfe51b6c)
    at /home/kde-devel/build/KDE/kdepim/kmail/renamejob.moc:73
#24 0xb7ecb56b in QMetaObject::activate (sender=0x8555c68, 
    from_signal_index=7, to_signal_index=7, argv=0xbfe51b6c)
    at kernel/qobject.cpp:2992
#25 0xb7ecb9e7 in QMetaObject::activate (sender=0x8555c68, m=0xb7b9e848, 
    local_signal_index=3, argv=0xbfe51b6c) at kernel/qobject.cpp:3065
#26 0xb7a93aa0 in KJob::result (this=0x8555c68, _t1=0x8555c68)
    at /home/kde-devel/build/KDE/kdelibs/kdecore/kjob.moc:186
#27 0xb7a93fe4 in KJob::emitResult (this=0x8555c68)
    at /home/kde-devel/src/KDE/kdelibs/kdecore/jobs/kjob.cpp:290
#28 0xb604b5ef in KIO::SimpleJob::slotFinished (this=0x8555c68)
    at /home/kde-devel/src/KDE/kdelibs/kio/kio/job.cpp:491
#29 0xb604ae41 in KIO::SimpleJob::qt_metacall (this=0x8555c68, 
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0xbfe51ca4)
    at /home/kde-devel/build/KDE/kdelibs/kio/jobclasses.moc:156
#30 0xb7ecb56b in QMetaObject::activate (sender=0x85841d0, 
    from_signal_index=8, to_signal_index=8, argv=0x0)
    at kernel/qobject.cpp:2992
#31 0xb7ecb9e7 in QMetaObject::activate (sender=0x85841d0, m=0xb61c43a4, 
    local_signal_index=4, argv=0x0) at kernel/qobject.cpp:3065
#32 0xb60f4155 in KIO::SlaveInterface::finished (this=0x85841d0)
    at /home/kde-devel/build/KDE/kdelibs/kio/slaveinterface.moc:161
#33 0xb60f5fa2 in KIO::SlaveInterface::dispatch (this=0x85841d0, _cmd=104, 
    rawdata=@0xbfe51ea4)
    at /home/kde-devel/src/KDE/kdelibs/kio/kio/slaveinterface.cpp:176
#34 0xb60f5e8b in KIO::SlaveInterface::dispatch (this=0x85841d0)
    at /home/kde-devel/src/KDE/kdelibs/kio/kio/slaveinterface.cpp:90
#35 0xb60e90d4 in KIO::Slave::gotInput (this=0x85841d0)
    at /home/kde-devel/src/KDE/kdelibs/kio/kio/slave.cpp:319
#36 0xb60ea51c in KIO::Slave::qt_metacall (this=0x85841d0, 
    _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfe51f94)
    at /home/kde-devel/build/KDE/kdelibs/kio/slave.moc:75
#37 0xb7ecb56b in QMetaObject::activate (sender=0x8585800, 
    from_signal_index=4, to_signal_index=4, argv=0x0)
    at kernel/qobject.cpp:2992
#38 0xb7ecb9e7 in QMetaObject::activate (sender=0x8585800, m=0xb61c12a0, 
    local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3065
#39 0xb602201b in KIO::Connection::readyRead (this=0x8585800)
    at /home/kde-devel/build/KDE/kdelibs/kio/connection.moc:84
#40 0xb6022f47 in KIO::ConnectionPrivate::dequeue (this=0x8583280)
    at /home/kde-devel/src/KDE/kdelibs/kio/kio/connection.cpp:82
#41 0xb6023e81 in KIO::Connection::qt_metacall (this=0x8585800, 
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x8559bc0)
    at /home/kde-devel/build/KDE/kdelibs/kio/connection.moc:72
#42 0xb7ec5572 in QMetaCallEvent::placeMetaCall (this=0x8721468, 
    object=0x8585800) at kernel/qobject.cpp:535
#43 0xb7ec98b4 in QObject::event (this=0x8585800, e=0x8721468)
    at kernel/qobject.cpp:1128
#44 0xb538ca31 in QApplicationPrivate::notify_helper (this=0x8080608, 
    receiver=0x8585800, e=0x8721468) at kernel/qapplication.cpp:3757
#45 0xb538cd4a in QApplication::notify (this=0xbfe52940, receiver=0x8585800, 
    e=0x8721468) at kernel/qapplication.cpp:3351
#46 0xb68403ad in KApplication::notify (this=0xbfe52940, receiver=0x8585800, 
    event=0x8721468)
    at /home/kde-devel/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:311
#47 0xb7eb6cb4 in QCoreApplication::notifyInternal (this=0xbfe52940, 
    receiver=0x8585800, event=0x8721468) at kernel/qcoreapplication.cpp:582
#48 0xb7eba52d in QCoreApplication::sendEvent (receiver=0x8585800, 
    event=0x8721468)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#49 0xb7eb71c8 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, 
    event_type=0, data=0x80501f0) at kernel/qcoreapplication.cpp:1188
#50 0xb7eb7373 in QCoreApplication::sendPostedEvents (receiver=0x0, 
    event_type=0) at kernel/qcoreapplication.cpp:1084
#51 0xb7ee73cc in QCoreApplication::sendPostedEvents ()
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#52 0xb7ee6591 in postEventSourceDispatch (s=0x80828e0)
    at kernel/qeventdispatcher_glib.cpp:211
#53 0xb4c4b346 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#54 0xb4c4e6d2 in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0
#55 0xb4c4ec8e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#56 0xb7ee59bc in QEventDispatcherGlib::processEvents (this=0x807a648, 
    flags=@0xbfe52798) at kernel/qeventdispatcher_glib.cpp:325
#57 0xb5432448 in QGuiEventDispatcherGlib::processEvents (this=0x807a648, 
    flags=@0xbfe527cc) at kernel/qguieventdispatcher_glib.cpp:204
#58 0xb7eb3b5a in QEventLoop::processEvents (this=0xbfe52840, 
    flags=@0xbfe52804) at kernel/qeventloop.cpp:146
#59 0xb7eb3d07 in QEventLoop::exec (this=0xbfe52840, flags=@0xbfe52848)
    at kernel/qeventloop.cpp:193
#60 0xb7eb7493 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:838
#61 0xb538c74a in QApplication::exec () at kernel/qapplication.cpp:3289
#62 0x0804b33d in main (argc=3, argv=0xbfe52a24)
    at /home/kde-devel/src/KDE/kdepim/kmail/main.cpp:132
#0  0xb7f6a410 in __kernel_vsyscall ()
Comment 5 Thomas McGuire 2008-04-14 20:49:10 UTC
SVN commit 797025 by tmcguire:

Fix totally broken renaming of online IMAP folders:

- emit the closed() signal before calling folderMgr()->contentsChanged()
  This fixes an refcount assert when calculating the unread count.
  The assert would trigger there because the folder is closed with refcount 0
  but still selected. Now, the headerview will open the folder before that, making
  the refount 1.

- Don't show an error message when the old folder couldn't be unsubscribed. That error
  message doesn't make sense, since the old folder does not exist anymore, and therefore
  can't be unsubscribed anyway.

- Let the mainwidget re-open the folder after it is renamed. This fixes an assert when 
  switching away from an renamed folder, which would close it despite not having called open()
  before.

- Also change the objectname when renaming, now renaming the same folder more than once works.

- tabs--

BUG: 158861


 M  +1 -1      folderstorage.cpp  
 M  +1 -1      imapaccountbase.cpp  
 M  +1 -1      kmfoldermgr.cpp  
 M  +18 -0     kmmainwidget.cpp  
 M  +5 -0      kmmainwidget.h  
 M  +1 -0      renamejob.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=797025
Comment 6 Christophe Marin 2008-07-09 12:53:40 UTC
*** Bug 166121 has been marked as a duplicate of this bug. ***
Comment 7 Christophe Marin 2008-07-09 12:55:24 UTC
Niels : Please install the debug symbols and provide a complete backtrace. (details here : http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports )