[Bug 289693] Kmail crash on exit

David Faure faure at kde.org
Wed Jan 4 22:19:21 UTC 2012


https://bugs.kde.org/show_bug.cgi?id=289693


David Faure <faure at kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |faure at kde.org




--- Comment #25 from David Faure <faure kde org>  2012-01-04 22:19:20 ---
This is the relevant portion of the valgrind log:


==6000== Invalid read of size 4
==6000==    at 0x39B0CFE8DD: Akonadi::EntityTreeModel::data(QModelIndex const&,
int) const (entitytreemodel.cpp:237)
==6000==    by 0x3C23033EEA: KSelectionProxyModel::data(QModelIndex const&,
int) const (qabstractitemmodel.h:402)
==6000==    by 0x3C21D6A40B: QSortFilterProxyModel::data(QModelIndex const&,
int) const (qsortfilterproxymodel.cpp:1718)
==6000==    by 0x39B50974DA: MessageList::StorageModel::itemForRow(int) const
(storagemodel.cpp:475)
==6000==    by 0x39B509B807: MessageList::Widget::Private::itemForRow(int)
const (widget.cpp:495)
==6000==    by 0x39B509B89C: MessageList::Widget::currentItem() const
(widget.cpp:511)
==6000==    by 0x39B50931DB: MessageList::Pane::currentItem() const
(pane.cpp:709)
==6000==    by 0x39B4B12B93: KMMainWidget::itemsReceived(QList<Akonadi::Item>
const&) (kmmainwidget.cpp:4369)
==6000==    by 0x39B4B2DF5D: KMMainWidget::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) (kmmainwidget.moc:481)
==6000==    by 0x3C2058CCD0: QMetaObject::activate(QObject*, QMetaObject
const*, int, void**) (qobject.cpp:3547)
==6000==    by 0x39B0D30561:
Akonadi::ItemFetchJob::itemsReceived(QList<Akonadi::Item> const&)
(itemfetchjob.moc:106)
==6000==    by 0x39B0D31623:
Akonadi::ItemFetchJob::qt_static_metacall(QObject*, QMetaObject::Call, int,
void**) (itemfetchjob.cpp:71)
==6000==  Address 0xbba0430 is 16 bytes inside a block of size 24 free'd
==6000==    at 0x4A062BC: operator delete(void*) (vg_replace_malloc.c:387)
==6000==    by 0x39B0D09589:
Akonadi::EntityTreeModelPrivate::monitoredItemRemoved(Akonadi::Item const&)
(entitytreemodel_p.cpp:1056)
==6000==    by 0x3C2058CCD0: QMetaObject::activate(QObject*, QMetaObject
const*, int, void**) (qobject.cpp:3547)
==6000==    by 0x39B0D467D4: Akonadi::Monitor::itemRemoved(Akonadi::Item
const&) (monitor.moc:210)
==6000==    by 0x39B0D4AB3B:
Akonadi::MonitorPrivate::emitItemNotification(Akonadi::NotificationMessage
const&, Akonadi::Item const&, Akonadi::Collection const&, Akonadi::Collection
const&) (monitor_p.cpp:535)
==6000==    by 0x39B0D4C2E1:
Akonadi::MonitorPrivate::emitNotification(Akonadi::NotificationMessage const&)
(monitor_p.cpp:288)
==6000==    by 0x39B0CAED60:
Akonadi::ChangeRecorderPrivate::emitNotification(Akonadi::NotificationMessage
const&) (changerecorder_p.h:60)
==6000==    by 0x39B0D4C44C: Akonadi::MonitorPrivate::dispatchNotifications()
(monitor_p.cpp:447)
==6000==    by 0x39B0D4CAD3:
Akonadi::MonitorPrivate::slotNotify(QList<Akonadi::NotificationMessage> const&)
(monitor_p.cpp:418)
==6000==    by 0x39B0CAF029:
Akonadi::ChangeRecorderPrivate::slotNotify(QList<Akonadi::NotificationMessage>
const&) (changerecorder_p.h:51)
==6000==    by 0x3C2058CCD0: QMetaObject::activate(QObject*, QMetaObject
const*, int, void**) (qobject.cpp:3547)
==6000==    by 0x39B0DCD8D1:
OrgFreedesktopAkonadiNotificationSourceInterface::notify(QList<Akonadi::NotificationMessage>
const&) (notificationsourceinterface.moc:105)

The deletion line is this one I think:
  delete m_childEntities[ collection.id() ].takeAt( row );
(in EntityTreeModelPrivate::monitoredItemRemoved)

And despite the beginRemoveRows/endRemoveRows, somehow this index is still used
later on in EntityTreeModel::data. Some intermediate proxy not reacting to row
removal correctly?

-- 
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the Kdepim-bugs mailing list