Bug 260751 - Kmail was in the background when crash occured
Summary: Kmail was in the background when crash occured
Status: RESOLVED FIXED
Alias: None
Product: kmail2
Classification: Applications
Component: general (show other bugs)
Version: 2.0.89
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: kdepim bugs
URL:
Keywords:
: 261487 281425 281477 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-12-20 00:56 UTC by m.wege
Modified: 2011-09-06 13:49 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
New crash information added by DrKonqi (7.04 KB, text/plain)
2010-12-31 11:44 UTC, omega
Details
New crash information added by DrKonqi (5.66 KB, text/plain)
2011-07-25 15:18 UTC, S. Burmeister
Details

Note You need to log in before you can comment on or make changes to this bug.
Description m.wege 2010-12-20 00:56:22 UTC
Application: kmail (2.0.89)
KDE Platform Version: 4.5.85 (4.6 Beta2)
Qt Version: 4.7.0
Operating System: Linux 2.6.37-7-generic-pae i686
Distribution: Ubuntu 10.10

-- Information about the crash:
- What I was doing when the application crashed: Kmail was in the background when crash occured. Kmail was in the background when crash occured.

- Unusual behavior I noticed:

-- Backtrace:
Application: KMail (kmail), signal: Segmentation fault
[Current thread is 1 (Thread 0xb2348730 (LWP 2917))]

Thread 3 (Thread 0xaf715b70 (LWP 3064)):
#0  0xb788e424 in __kernel_vsyscall ()
#1  0xb5ae04dc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb606ad9d in pthread_cond_wait () from /lib/libc.so.6
#3  0xb3ecd3a5 in WTF::TCMalloc_PageHeap::scavengerThread (this=0xb43d0680) at wtf/FastMalloc.cpp:2378
#4  0xb3ecd481 in WTF::TCMalloc_PageHeap::runScavengerThread (context=0xb43d0680) at wtf/FastMalloc.cpp:1497
#5  0xb5adbcc9 in start_thread () from /lib/libpthread.so.0
#6  0xb605d69e in clone () from /lib/libc.so.6

Thread 2 (Thread 0xaca40b70 (LWP 3176)):
#0  0xb606af3b in pthread_mutex_lock () from /lib/libc.so.6
#1  0xb49155f8 in g_main_context_acquire () from /lib/libglib-2.0.so.0
#2  0xb49171ee in ?? () from /lib/libglib-2.0.so.0
#3  0xb4917848 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#4  0xb638459f in QEventDispatcherGlib::processEvents (this=0xa86a210, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#5  0xb6354609 in QEventLoop::processEvents (this=0xaca40270, flags=) at kernel/qeventloop.cpp:149
#6  0xb6354a8a in QEventLoop::exec (this=0xaca40270, flags=...) at kernel/qeventloop.cpp:201
#7  0xb6250b7e in QThread::exec (this=0xa5d89b8) at thread/qthread.cpp:490
#8  0xb633335b in QInotifyFileSystemWatcherEngine::run (this=0xa5d89b8) at io/qfilesystemwatcher_inotify.cpp:248
#9  0xb6253df9 in QThreadPrivate::start (arg=0xa5d89b8) at thread/qthread_unix.cpp:266
#10 0xb5adbcc9 in start_thread () from /lib/libpthread.so.0
#11 0xb605d69e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb2348730 (LWP 2917)):
[KCrash Handler]
#7  QCoreApplication::postEvent (receiver=0xaebc2d8, event=0xa35ff50, priority=0) at kernel/qcoreapplication.cpp:1133
#8  0xb6358aac in QCoreApplication::postEvent (receiver=0xaebc2d8, event=0xa35ff50) at kernel/qcoreapplication.cpp:1094
#9  0xb63672c4 in QObject::deleteLater (this=0xaebc2d8) at kernel/qobject.cpp:2131
#10 0xb4ee0341 in KPIM::ProgressItem::setComplete (this=0xaebc2d8) at ../../libkdepim/progressmanager.cpp:60
#11 0xb4ee221b in KPIM::AgentProgressMonitor::Private::instanceStatusChanged (this=0xb7ae120, instance=...) at ../../libkdepim/agentprogressmonitor.cpp:85
#12 0xb4ee2390 in KPIM::AgentProgressMonitor::qt_metacall (this=0xb759ec8, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0xbfd2aed8) at ./agentprogressmonitor.moc:78
#13 0xb635b8ca in QMetaObject::metacall (object=0xb759ec8, cl=183223000, idx=6, argv=0xbfd2aed8) at kernel/qmetaobject.cpp:237
#14 0xb636e6ad in QMetaObject::activate (sender=0x9e55530, m=0xb57765ac, local_signal_index=4, argv=0x1) at kernel/qobject.cpp:3280
#15 0xb55d3053 in Akonadi::AgentManager::instanceStatusChanged (this=0x9e55530, _t1=...) at ./agentmanager.moc:177
#16 0xb55d34ef in Akonadi::AgentManagerPrivate::agentInstanceStatusChanged (this=0xa0ea728, identifier=..., status=0, msg=...) at ../../akonadi/agentmanager.cpp:129
#17 0xb55d9f53 in Akonadi::AgentManager::qt_metacall (this=0x9e55530, _c=QMetaObject::InvokeMetaMethod, _id=18, _a=0xbfd2b030) at ./agentmanager.moc:131
#18 0xb635b8ca in QMetaObject::metacall (object=0x9e55530, cl=183223000, idx=18, argv=0xbfd2b030) at kernel/qmetaobject.cpp:237
#19 0xb636e6ad in QMetaObject::activate (sender=0xa1bd650, m=0xb577b724, local_signal_index=7, argv=0x1) at kernel/qobject.cpp:3280
#20 0xb570574f in OrgFreedesktopAkonadiAgentManagerInterface::agentInstanceStatusChanged (this=0xa1bd650, _t1=..., _t2=0, _t3=...) at agentmanagerinterface.moc:280
#21 0xb5706004 in OrgFreedesktopAkonadiAgentManagerInterface::qt_metacall (this=0xa1bd650, _c=QMetaObject::InvokeMetaMethod, _id=7, _a=0xbfd2b40c) at agentmanagerinterface.moc:164
#22 0xb5b809dc in QDBusConnectionPrivate::deliverCall (this=0x9dd20a8, object=0xa1bd650, msg=..., metaTypes=..., slotIdx=12) at qdbusintegrator.cpp:919
#23 0xb5b8c1f7 in QDBusCallDeliveryEvent::placeMetaCall (this=0xb7a8760, object=0xa1bd650) at qdbusintegrator_p.h:103
#24 0xb63686a2 in QObject::event (this=0xa1bd650, e=0x4) at kernel/qobject.cpp:1219
#25 0xb65b5fdc in QApplicationPrivate::notify_helper (this=0x9ddfec0, receiver=0xa1bd650, e=0xb7a8760) at kernel/qapplication.cpp:4396
#26 0xb65bc04e in QApplication::notify (this=0xbfd2bd1c, receiver=0xa1bd650, e=0xb7a8760) at kernel/qapplication.cpp:3798
#27 0xb767e39a in KApplication::notify (this=0xbfd2bd1c, receiver=0xa1bd650, event=0xb7a8760) at ../../kdeui/kernel/kapplication.cpp:311
#28 0xb6355b3b in QCoreApplication::notifyInternal (this=0xbfd2bd1c, receiver=0xa1bd650, event=0xb7a8760) at kernel/qcoreapplication.cpp:732
#29 0xb6358d8b in sendEvent (receiver=0x0, event_type=0, data=0x9dab3c0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#30 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x9dab3c0) at kernel/qcoreapplication.cpp:1373
#31 0xb6358f4d in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1266
#32 0xb6384a74 in sendPostedEvents (s=0x9de2120) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#33 postEventSourceDispatch (s=0x9de2120) at kernel/qeventdispatcher_glib.cpp:277
#34 0xb4913855 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#35 0xb4917668 in ?? () from /lib/libglib-2.0.so.0
#36 0xb4917848 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#37 0xb6384565 in QEventDispatcherGlib::processEvents (this=0x9dd2f48, flags=...) at kernel/qeventdispatcher_glib.cpp:415
#38 0xb6677be5 in QGuiEventDispatcherGlib::processEvents (this=0x9dd2f48, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#39 0xb6354609 in QEventLoop::processEvents (this=0xbfd2bc34, flags=) at kernel/qeventloop.cpp:149
#40 0xb6354a8a in QEventLoop::exec (this=0xbfd2bc34, flags=...) at kernel/qeventloop.cpp:201
#41 0xb635900f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
#42 0xb65b4e07 in QApplication::exec () at kernel/qapplication.cpp:3672
#43 0x0804a4e6 in main (argc=3, argv=0xbfd2bed4) at ../../kmail/main.cpp:145

Reported using DrKonqi
Comment 1 Laurent Montel 2010-12-20 09:59:28 UTC
Ok I can't see in code why it crashs, but perhaps a deleteLater() is calling by an other function.
Comment 2 omega 2010-12-31 11:44:03 UTC
Created attachment 55409 [details]
New crash information added by DrKonqi

kmail (2.0.89) on KDE Platform 4.5.90 (4.6 RC1) using Qt 4.7.1

- What I was doing when the application crashed:

i had this crash when i had a kmail conflit (maybe header of message)

-- Backtrace (Reduced):
#6  QCoreApplication::postEvent (receiver=0x14fc280, event=0x13ab3d0, priority=0) at kernel/qcoreapplication.cpp:1133
#7  0x00007fd3847576bc in KPIM::AgentProgressMonitor::Private::instanceStatusChanged (this=0x15c16c0, instance=...) at ../../libkdepim/agentprogressmonitor.cpp:85
#8  0x00007fd38475775a in KPIM::AgentProgressMonitor::qt_metacall (this=0x15c1590, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff94f4ec10) at ./agentprogressmonitor.moc:78
[...]
#10 0x00007fd386cab435 in Akonadi::AgentManager::instanceStatusChanged (this=<value optimized out>, _t1=<value optimized out>) at ./agentmanager.moc:177
#11 0x00007fd386cafb6a in Akonadi::AgentManagerPrivate::agentInstanceStatusChanged (this=0xbb50b0, identifier=<value optimized out>, status=0, msg=...) at ../../akonadi/agentmanager.cpp:129
Comment 3 Tobias Koenig 2011-01-02 16:47:01 UTC
commit e2af53f0794533454a372db970e5d8587294f084
branch master
Author: Tobias Koenig <tokoe@kde.org>
Date:   Sun Jan 2 16:33:39 2011 +0100

    Do not crash on invalid progress item
    
    A KPIM::ProgressItem can be deleted at any time, so keep
    a QPointer on it and check for validity before accessing it.
    
    BUG: 260751

diff --git a/libkdepim/agentprogressmonitor.cpp b/libkdepim/agentprogressmonitor.cpp
index 320586a..afb6977 100644
--- a/libkdepim/agentprogressmonitor.cpp
+++ b/libkdepim/agentprogressmonitor.cpp
@@ -19,9 +19,11 @@
 
 #include "agentprogressmonitor.h"
 
+#include <Akonadi/AgentManager>
+
 #include <KDebug>
 
-#include <Akonadi/AgentManager>
+#include <QtCore/QPointer>
 
 using namespace Akonadi;
 using namespace KPIM;
@@ -43,7 +45,7 @@ class AgentProgressMonitor::Private
 
     AgentProgressMonitor *const q;
     AgentInstance agent;
-    ProgressItem *const item;
+    QPointer<ProgressItem> const item;
 };
 
 void AgentProgressMonitor::Private::abort()
@@ -53,10 +55,12 @@ void AgentProgressMonitor::Private::abort()
 
 void AgentProgressMonitor::Private::instanceProgressChanged( const AgentInstance &instance )
 {
-  if( agent == instance ) {
+  if ( !item )
+    return;
+
+  if ( agent == instance ) {
     agent = instance;
-//     kDebug() << "Progress changed to" << agent.progress();
-    if( agent.progress() >= 0 ) {
+    if ( agent.progress() >= 0 ) {
       item->setProgress( agent.progress() );
     }
   }
@@ -64,28 +68,25 @@ void AgentProgressMonitor::Private::instanceProgressChanged( const AgentInstance
 
 void AgentProgressMonitor::Private::instanceStatusChanged( const AgentInstance &instance )
 {
-  if( agent == instance ) {
+  if ( !item )
+    return;
+
+  if ( agent == instance ) {
     agent = instance;
-//     kDebug() << "Status changed to" << agent.status() << "message" << agent.statusMessage();
     item->setStatus( agent.statusMessage() );
-    switch( agent.status() ) {
+    switch ( agent.status() ) {
       case AgentInstance::Idle:
-      {
         item->setComplete();
         break;
-      }
       case AgentInstance::Running:
-      {
         break;
-      }
       case AgentInstance::Broken: 
-      {
         item->disconnect( q ); // avoid abort call
         item->cancel();
         item->setComplete();
         break;
-      }
-      default: Q_ASSERT( false );
+      default:
+        Q_ASSERT( false );
     }
   }
 }
diff --git a/libkdepim/agentprogressmonitor.h b/libkdepim/agentprogressmonitor.h
index 30403d2..da3b252 100644
--- a/libkdepim/agentprogressmonitor.h
+++ b/libkdepim/agentprogressmonitor.h
@@ -40,8 +40,7 @@ class AgentProgressMonitor : public QObject
 
   protected:
     // used by our friend ProgressManager
-    AgentProgressMonitor( const Akonadi::AgentInstance &agent,
-        ProgressItem *item );
+    AgentProgressMonitor( const Akonadi::AgentInstance &agent, ProgressItem *item );
     ~AgentProgressMonitor();
 
   private:
@@ -51,7 +50,6 @@ class AgentProgressMonitor : public QObject
     Q_PRIVATE_SLOT( d, void abort() )
     Q_PRIVATE_SLOT( d, void instanceProgressChanged( const Akonadi::AgentInstance& ) )
     Q_PRIVATE_SLOT( d, void instanceStatusChanged( const Akonadi::AgentInstance& ) )
-
 };
 
 }
Comment 4 Tobias Koenig 2011-01-02 17:03:09 UTC
*** Bug 261487 has been marked as a duplicate of this bug. ***
Comment 5 S. Burmeister 2011-07-25 15:18:41 UTC
Created attachment 62185 [details]
New crash information added by DrKonqi

kmail (2.1.96) on KDE Platform 4.6.95 (4.7 RC2) "release 2" using Qt 4.7.3

- What I was doing when the application crashed:

Kmail was running in the background after I resumed from suspend. Since this is KDe 4.7 RC2, it seems this bug is not fixed.

-- Backtrace (Reduced):
#6  0x00007fa47f489417 in QCoreApplication::postEvent (receiver=0x44c7500, event=0x4d225f0, priority=0) at kernel/qcoreapplication.cpp:1173
#7  0x00007fa477e6a949 in KPIM::AgentProgressMonitor::Private::instanceStatusChanged (this=0x51549a0, instance=...) at /usr/src/debug/kdepim-4.6.95/libkdepim/agentprogressmonitor.cpp:87
#8  0x00007fa477e6aaba in KPIM::AgentProgressMonitor::qt_metacall (this=0x49f55f0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff79b0ffb0) at /usr/src/debug/kdepim-4.6.95/build/libkdepim/agentprogressmonitor.moc:78
[...]
#10 0x00007fa47a3b28b5 in Akonadi::AgentManager::instanceStatusChanged (this=<value optimized out>, _t1=<value optimized out>) at /usr/src/debug/kdepimlibs-4.6.95/build/akonadi/agentmanager.moc:177
#11 0x00007fa47a3e9121 in Akonadi::AgentManagerPrivate::agentInstanceStatusChanged (this=0x6d14c0, identifier=<value optimized out>, status=0, msg=...) at /usr/src/debug/kdepimlibs-4.6.95/akonadi/agentmanager.cpp:129
Comment 6 Christophe Marin 2011-09-05 22:43:34 UTC
*** Bug 281425 has been marked as a duplicate of this bug. ***
Comment 7 Christophe Marin 2011-09-06 13:49:48 UTC
*** Bug 281477 has been marked as a duplicate of this bug. ***