Summary: | Kmail was in the background when crash occured | ||
---|---|---|---|
Product: | [Applications] kmail2 | Reporter: | m.wege |
Component: | general | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | biasquez, montel, otters73, robby.engelmann, sven.burmeister |
Priority: | NOR | ||
Version: | 2.0.89 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
New crash information added by DrKonqi
New crash information added by DrKonqi |
Description
m.wege
2010-12-20 00:56:22 UTC
Ok I can't see in code why it crashs, but perhaps a deleteLater() is calling by an other function. 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
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& ) ) - }; } *** Bug 261487 has been marked as a duplicate of this bug. *** 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
*** Bug 281425 has been marked as a duplicate of this bug. *** *** Bug 281477 has been marked as a duplicate of this bug. *** |