Bug 108100

Summary: crashes on folder refresh
Product: [Unmaintained] kmail Reporter: Grzegorz Jaskiewicz <gj>
Component: generalAssignee: kdepim bugs <kdepim-bugs>
Status: RESOLVED DUPLICATE    
Severity: crash    
Priority: NOR    
Version: 1.8.50   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Grzegorz Jaskiewicz 2005-06-25 10:19:52 UTC
Version:           1.8.50 (using KDE 3.4.89 (>= 20050615), compiled sources)
Compiler:          gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-12)
OS:                Linux (i686) release 2.6.11.7

Oh, I got some new emails in INBOX. Click. Crash. Bug report.

Using host libthread_db library "/lib/tls/libthread_db.so.1".
`system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols.
[Thread debugging using libthread_db enabled]
[New Thread -1243511104 (LWP 3592)]
[KCrash handler]
#3  0x00000000 in ?? ()
#4  0xb551b455 in KMFolderImap::flagsToStatus (msg=0x91174d8, flags=32, 
    newMsg=true) at /home/gj/kde-sources/kdepim/kmail/kmfolderimap.cpp:1367
#5  0xb5529824 in KMFolderImap::slotGetMessagesData (this=0x8535c80, 
    job=0x8e35ec0, data=@0x91174d8)
    at /home/gj/kde-sources/kdepim/kmail/kmfolderimap.cpp:1499
#6  0xb552e080 in KMFolderImap::qt_invoke (this=0x8535c80, _id=139680896, 
    _o=0x93b6638) at qucom_p.h:312
#7  0xb66f1e7b in QObject::activate_signal (this=0x93b6638, clist=0x8ee0c88, 
    o=0xbfffece0) at kernel/qobject.cpp:2355
#8  0xb730ecd5 in KIO::TransferJob::data (this=0x93b6638, t0=0x93b6638, 
    t1=@0xbffff120) at jobclasses.moc:972
#9  0xb730ed3d in KIO::TransferJob::slotData (this=0x93b6638, 
    _data=@0xbffff120) at /home/gj/kde-sources/kdelibs/kio/kio/job.cpp:880
#10 0xb730ee13 in KIO::TransferJob::qt_invoke (this=0x93b6638, 
    _id=-1073745632, _o=0xbfffee10) at qucom_p.h:312
#11 0xb66f1e7b in QObject::activate_signal (this=0x86005a8, clist=0x8933558, 
    o=0xbfffee10) at kernel/qobject.cpp:2355
#12 0xb72f791f in KIO::SlaveInterface::data (this=0x86005a8, t0=@0xbffff120)
    at slaveinterface.moc:194
#13 0xb72fba75 in KIO::SlaveInterface::dispatch (this=0x86005a8, _cmd=100, 
    rawdata=@0xbffff120)
    at /home/gj/kde-sources/kdelibs/kio/kio/slaveinterface.cpp:234
#14 0xb72f9e11 in KIO::SlaveInterface::dispatch (this=0x86005a8)
    at /home/gj/kde-sources/kdelibs/kio/kio/slaveinterface.cpp:173
#15 0xb72f3c97 in KIO::Slave::gotInput (this=0x86005a8)
    at /home/gj/kde-sources/kdelibs/kio/kio/slave.cpp:300
#16 0xb72f4ba9 in KIO::Slave::qt_invoke (this=0x86005a8, _id=4, _o=0xbffff2b0)
    at slave.moc:113
#17 0xb66f1e7b in QObject::activate_signal (this=0x85ffeb0, clist=0x8600810, 
    o=0xbffff2b0) at kernel/qobject.cpp:2355
#18 0xb66f21d4 in QObject::activate_signal (this=0x85ffeb0, signal=2, 
    param=20) at kernel/qobject.cpp:2448
#19 0xb6a57fcd in QSocketNotifier::activated (this=0x85ffeb0, t0=20)
    at .moc/debug-shared-mt/moc_qsocketnotifier.cpp:85
#20 0xb6712c98 in QSocketNotifier::event (this=0x85ffeb0, e=0xbffff5b0)
    at kernel/qsocketnotifier.cpp:258
#21 0xb668d4fd in QApplication::internalNotify (this=0xbffff830, 
    receiver=0x85ffeb0, e=0xbffff5b0) at kernel/qapplication.cpp:2635
#22 0xb668c9c1 in QApplication::notify (this=0xbffff830, receiver=0x85ffeb0, 
    e=0xbffff5b0) at kernel/qapplication.cpp:2358
#23 0xb6d160a3 in KApplication::notify (this=0xbffff830, receiver=0x85ffeb0, 
    event=0xbffff5b0)
    at /home/gj/kde-sources/kdelibs/kdecore/kapplication.cpp:549
#24 0xb661e945 in QApplication::sendEvent (receiver=0x85ffeb0, 
    event=0xbffff5b0) at qapplication.h:491
#25 0xb667b3f7 in QEventLoop::activateSocketNotifiers (this=0x80a4dc0)
    at kernel/qeventloop_unix.cpp:578
#26 0xb66325e4 in QEventLoop::processEvents (this=0x80a4dc0, flags=4)
    at kernel/qeventloop_x11.cpp:383
#27 0xb66a2588 in QEventLoop::enterLoop (this=0x80a4dc0)
    at kernel/qeventloop.cpp:198
#28 0xb66a24a6 in QEventLoop::exec (this=0x80a4dc0)
    at kernel/qeventloop.cpp:145
#29 0xb668d67d in QApplication::exec (this=0xbffff830)
    at kernel/qapplication.cpp:2758
#30 0x08059591 in main (argc=1, argv=0xbffffab4)
    at /home/gj/kde-sources/kdepim/kontact/src/main.cpp:177
Comment 1 Till Adam 2005-06-25 10:23:15 UTC
On Saturday 25 June 2005 10:19, Grzegorz Jaskiewicz wrote:

> Oh, I got some new emails in INBOX. Click. Crash. Bug report.
>
> Using host libthread_db library "/lib/tls/libthread_db.so.1".
> `system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols.
> [Thread debugging using libthread_db enabled]
> [New Thread -1243511104 (LWP 3592)]
> [KCrash handler]
> #3  0x00000000 in ?? ()
> #4  0xb551b455 in KMFolderImap::flagsToStatus (msg=0x91174d8, flags=32,
>     newMsg=true) at /home/gj/kde-sources/kdepim/kmail/kmfolderimap.cpp:1367
> #5  0xb5529824 in KMFolderImap::slotGetMessagesData (this=0x8535c80,
>     job=0x8e35ec0, data= 0x91174d8)
>     at /home/gj/kde-sources/kdepim/kmail/kmfolderimap.cpp:1499
> #6  0xb552e080 in KMFolderImap::qt_invoke (this=0x8535c80, _id=139680896,
>     _o=0x93b6638) at qucom_p.h:312
> #7  0xb66f1e7b in QObject::activate_signal (this=0x93b6638,
> clist=0x8ee0c88, o=0xbfffece0) at kernel/qobject.cpp:2355


Carsten, another indication that folder refcounting is broken?
Comment 2 Carsten Burghardt 2005-06-26 11:55:12 UTC
SVN commit 429050 by burghard:

Make getFolder handle it's own open/close sequence. That should fix current imap crashes.
CCMAIL:108100@bugs.kde.org
CCMAIL:107914@bugs.kde.org


 M  +10 -8     kmfolderimap.cpp  


--- trunk/KDE/kdepim/kmail/kmfolderimap.cpp #429049:429050
@@ -984,6 +984,7 @@
 {
   if (!mAccount) {
     emit folderComplete(this, false);
+    close();
     return;
   }
   KURL url = mAccount->getUrl();
@@ -999,6 +1000,7 @@
     kdDebug(5006) << "KMFolderImap::checkValidity - got no connection" << endl;
     emit folderComplete(this, FALSE);
     mContentState = imapNoInformation;
+    close();
     return;
   } else if ( connectionState == ImapAccountBase::Connecting ) {
     // We'll wait for the connectionResult signal from the account. If it
@@ -1011,6 +1013,7 @@
   // Only check once at a time.
   if (mCheckingValidity) {
     kdDebug(5006) << "KMFolderImap::checkValidity - already checking" << endl;
+    close();
     return;
   }
   // otherwise we already are inside a mailcheck
@@ -1074,6 +1077,7 @@
     }
     mContentState = imapNoInformation;
     emit folderComplete(this, FALSE);
+    close();
   } else {
     QCString cstr((*it).data.data(), (*it).data.size() + 1);
     int a = cstr.find("X-uidValidity: ");
@@ -1151,6 +1155,7 @@
     emit folderComplete(this, true);
     return;
   }
+  open();
   mContentState = imapInProgress;
   if (force) {
     // force an update
@@ -1168,6 +1173,7 @@
   {
     mContentState = imapNoInformation;
     emit folderComplete(this, FALSE);
+    close();
     return;
   }
   quiet(true);
@@ -1218,6 +1224,7 @@
     mContentState = imapNoInformation;
     emit folderComplete(this, FALSE);
     mAccount->removeJob(it);
+    close();
     return;
   }
   mCheckFlags = FALSE;
@@ -1274,6 +1281,7 @@
     mContentState = imapFinished;
     emit folderComplete(this, TRUE);
     mAccount->removeJob(it);
+    close();
     return;
   }
   if ( mMailCheckProgressItem )
@@ -1291,14 +1299,6 @@
   else sets = makeSets( (*it).items );
   mAccount->removeJob(it); // don't use *it below
 
-  // make sure we have a connection
-  if ( mAccount->makeConnection() != ImapAccountBase::Connected )
-  {
-    quiet(false);
-    emit folderComplete(this, FALSE);
-    return;
-  }
-
   // Now kick off the getting of envelopes for the new mails in the folder
   for (QStringList::Iterator i = sets.begin(); i != sets.end(); ++i)
   {
@@ -1580,6 +1580,7 @@
     mContentState = imapNoInformation;
     quiet( false );
     emit folderComplete(this, false);
+    close();
   }
   else
   {
@@ -1588,6 +1589,7 @@
       mContentState = imapFinished;
       quiet(false);
       emit folderComplete(this, true);
+      close();
     }
     mAccount->removeJob(it);
   }
Comment 3 Stephan Kulow 2005-10-20 09:40:53 UTC
fixing database
Comment 4 Stephan Kulow 2005-10-20 09:41:23 UTC

*** This bug has been marked as a duplicate of 107914 ***