Bug 391727 - Trojita crashed when idling in INBOX
Summary: Trojita crashed when idling in INBOX
Status: RESOLVED WORKSFORME
Alias: None
Product: trojita
Classification: Applications
Component: Other (show other bugs)
Version: git
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Trojita default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-03-11 19:45 UTC by Pali Rohár
Modified: 2022-12-18 05:15 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
Output from massif (149.32 KB, text/plain)
2018-03-25 13:31 UTC, Pali Rohár
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Pali Rohár 2018-03-11 19:45:06 UTC
Trojita crashed when was minimized, idling in INBOX. Another IMAP client was heavily loading new messages (more 20 000) into same INBOX which had Trojita opened.

Trojita crashed with std::bad_alloc when it had allocated more then 2.1 GB. So it looks like a memory leak for a newly received messages when IDLE is active.

Here is gdb backtrace:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Thread 1 "trojita" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      ../sysdeps/unix/sysv/linux/raise.c: Adresár alebo súbor neexistuje.
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff273342a in __GI_abort () at abort.c:89
#2  0x00007ffff304a0ad in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff3048066 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff30480b1 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff30482c9 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007ffff33cb9b2 in qBadAlloc() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff3449c9a in QListData::realloc_grow(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff3449d0f in QListData::append(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x0000555555654880 in QList<QString>::operator+= (this=0x7fffffffa790, l=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:942
#10 0x000055555573c104 in std::function<void (Imap::Mailbox::TreeItemMessage const&)>::operator()(Imap::Mailbox::TreeItemMessage const&) const (__args#0=..., this=0x7fffffffa6d0) at /usr/include/c++/6/functional:2127
#11 Imap::Mailbox::threadForeachCallback<void>(std::function<void (Imap::Mailbox::TreeItemMessage const&)>, Imap::Mailbox::TreeItemMessage const&) (message=..., callback=...)
    at trojita/src/Imap/Model/ThreadingMsgListModel.cpp:1222
#12 Imap::Mailbox::ThreadingMsgListModel::threadForeach<void>(unsigned int const&, std::function<void (Imap::Mailbox::TreeItemMessage const&)>) const (this=this@entry=0x555555dbb560, root=@0x7fffffffa73c: 14175, 
    root@entry=@0x7fffffffa73c: <optimized out>, callback=...) at trojita/src/Imap/Model/ThreadingMsgListModel.cpp:1248
#13 0x0000555555730fcb in Imap::Mailbox::ThreadingMsgListModel::threadAggregatedFlags (this=this@entry=0x555555dbb560, root=<optimized out>) at trojita/src/Imap/Model/ThreadingMsgListModel.cpp:1271
#14 0x000055555573a78c in Imap::Mailbox::ThreadingMsgListModel::data (this=0x555555dbb560, proxyIndex=..., role=963) at trojita/src/Imap/Model/ThreadingMsgListModel.cpp:307
#15 0x00007ffff357dba9 in QSortFilterProxyModel::data(QModelIndex const&, int) const () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x0000555555723d39 in Imap::Mailbox::PrettyMsgListModel::data (this=<optimized out>, index=..., role=963) at trojita/src/Imap/Model/PrettyMsgListModel.cpp:175
#17 0x000055555562786f in QModelIndex::data (arole=963, this=0x7fffffffac80) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractitemmodel.h:426
#18 Gui::MsgItemDelegate::itemColor (this=this@entry=0x555555c47580, index=...) at trojita/src/Gui/MsgItemDelegate.cpp:47
#19 0x0000555555627b5d in Gui::MsgItemDelegate::paint (this=0x555555c47580, painter=0x7fffffffaff0, option=..., index=...) at trojita/src/Gui/MsgItemDelegate.cpp:89
#20 0x00007ffff4127b10 in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff412d597 in QTreeView::drawTree(QPainter*, QRegion const&) const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff41320b6 in QTreeView::paintEvent(QPaintEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff3ee4278 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff3fcca0e in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff40f3503 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff4132f6c in QTreeView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff35b9741 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x00007ffff3e9cb65 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff3ea4341 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff35b99e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#31 0x00007ffff3edcfda in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff3edd646 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#42 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
---Type <return> to continue, or q <return> to quit---
#43 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#45 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#46 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#48 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#49 0x00007ffff3eacf8a in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#50 0x00007ffff3ead147 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#51 0x00007ffff3ecbf8f in QWidgetPrivate::syncBackingStore() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#52 0x00007ffff3ee4348 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#53 0x00007ffff3fe392b in QMainWindow::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#54 0x00007ffff3e9cb8c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#55 0x00007ffff3ea4341 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#56 0x00007ffff35b99e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#57 0x00007ffff35bc16d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#58 0x00007ffff360dc43 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#59 0x00007ffff0b3d7f7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#60 0x00007ffff0b3da60 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#61 0x00007ffff0b3db0c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#62 0x00007ffff360e04f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#63 0x00007ffff35b79ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#64 0x00007ffff35c013c in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#65 0x00005555555c5ce5 in main (argc=<optimized out>, argv=<optimized out>) at trojita/src/Gui/main.cpp:218
Comment 1 Pali Rohár 2018-03-11 21:36:29 UTC
Same situation, memory usage about 2.7 GB and crash again with following, but different backtrace:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Thread 1 "trojita" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      ../sysdeps/unix/sysv/linux/raise.c: Adresár alebo súbor neexistuje.
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff273342a in __GI_abort () at abort.c:89
#2  0x00007ffff304a0ad in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff3048066 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff30480b1 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff30482c9 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007ffff33cb9b2 in qBadAlloc() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff3449c9a in QListData::realloc_grow(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff3449d0f in QListData::append(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x000055555573bb10 in QList<unsigned int>::operator+= (this=this@entry=0x7fffffffa6c8, l=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:942
#10 0x000055555573c127 in QList<unsigned int>::append (t=..., this=0x7fffffffa6c8) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:960
#11 Imap::Mailbox::ThreadingMsgListModel::threadForeach<void>(unsigned int const&, std::function<void (Imap::Mailbox::TreeItemMessage const&)>) const (this=this@entry=0x555555dbb590, root=@0x7fffffffa73c: 6899, 
    root@entry=@0x7fffffffa73c: <optimized out>, callback=...) at trojita/src/Imap/Model/ThreadingMsgListModel.cpp:1251
#12 0x0000555555730fcb in Imap::Mailbox::ThreadingMsgListModel::threadAggregatedFlags (this=this@entry=0x555555dbb590, root=<optimized out>) at trojita/src/Imap/Model/ThreadingMsgListModel.cpp:1271
#13 0x000055555573a78c in Imap::Mailbox::ThreadingMsgListModel::data (this=0x555555dbb590, proxyIndex=..., role=963) at trojita/src/Imap/Model/ThreadingMsgListModel.cpp:307
#14 0x00007ffff357dba9 in QSortFilterProxyModel::data(QModelIndex const&, int) const () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x0000555555723d39 in Imap::Mailbox::PrettyMsgListModel::data (this=<optimized out>, index=..., role=963) at trojita/src/Imap/Model/PrettyMsgListModel.cpp:175
#16 0x000055555562786f in QModelIndex::data (arole=963, this=0x7fffffffac80) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractitemmodel.h:426
#17 Gui::MsgItemDelegate::itemColor (this=this@entry=0x555555c476a0, index=...) at trojita/src/Gui/MsgItemDelegate.cpp:47
#18 0x0000555555627b5d in Gui::MsgItemDelegate::paint (this=0x555555c476a0, painter=0x7fffffffaff0, option=..., index=...) at trojita/src/Gui/MsgItemDelegate.cpp:89
#19 0x00007ffff4127b10 in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff412d597 in QTreeView::drawTree(QPainter*, QRegion const&) const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff41320b6 in QTreeView::paintEvent(QPaintEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff3ee4278 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff3fcca0e in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff40f3503 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff4132f6c in QTreeView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff35b9741 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#27 0x00007ffff3e9cb65 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff3ea4341 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff35b99e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007ffff3edcfda in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#31 0x00007ffff3edd646 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff3ede239 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#42 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
---Type <return> to continue, or q <return> to quit---
#43 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#45 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#46 0x00007ffff3ede34c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007ffff3edd1a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#48 0x00007ffff3eacf8a in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#49 0x00007ffff3ead147 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#50 0x00007ffff3ecbf8f in QWidgetPrivate::syncBackingStore() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#51 0x00007ffff3ee4348 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#52 0x00007ffff3fe392b in QMainWindow::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#53 0x00007ffff3e9cb8c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#54 0x00007ffff3ea4341 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#55 0x00007ffff35b99e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#56 0x00007ffff35bc16d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#57 0x00007ffff360dc43 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#58 0x00007ffff0b3d7f7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#59 0x00007ffff0b3da60 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#60 0x00007ffff0b3db0c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#61 0x00007ffff360e04f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#62 0x00007ffff35b79ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#63 0x00007ffff35c013c in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#64 0x00005555555c5ce5 in main (argc=<optimized out>, argv=<optimized out>) at trojita/src/Gui/main.cpp:218
Comment 2 Jan Kundrát 2018-03-11 23:15:56 UTC
Can you please measure this with some heap profiler so that we know where the leak is?
Comment 3 Pali Rohár 2018-03-25 13:31:10 UTC
Created attachment 111632 [details]
Output from massif

In attachment is output from massif. I killed trojita when it consumed more then 1GB of memory. Output on stdout was:

$ valgrind --tool=massif trojita
==14521== Massif, a heap profiler
==14521== Copyright (C) 2003-2015, and GNU GPL'd, by Nicholas Nethercote
==14521== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info
==14521== Command: trojita
==14521== 
^C==14521== 
==14521== Process terminating with default action of signal 2 (SIGINT)
==14521==    at 0x995A96B: __dynamic_cast (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22)
==14521==    by 0x2F00B6: void Imap::Mailbox::ThreadingMsgListModel::threadForeach<void>(unsigned int const&, std::function<void (Imap::Mailbox::TreeItemMessage const&)>) const (ThreadingMsgListModel.cpp:1246)
==14521==    by 0x2E4FCA: Imap::Mailbox::ThreadingMsgListModel::threadAggregatedFlags(unsigned int) const (ThreadingMsgListModel.cpp:1271)
==14521==    by 0x2EE78B: Imap::Mailbox::ThreadingMsgListModel::data(QModelIndex const&, int) const (ThreadingMsgListModel.cpp:307)
==14521==    by 0x9640BA8: QSortFilterProxyModel::data(QModelIndex const&, int) const (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.7.1)
==14521==    by 0x2D7D38: Imap::Mailbox::PrettyMsgListModel::data(QModelIndex const&, int) const (PrettyMsgListModel.cpp:175)
==14521==    by 0x1DB86E: Gui::MsgItemDelegate::itemColor(QModelIndex const&) const (qabstractitemmodel.h:426)
==14521==    by 0x1DBB5C: Gui::MsgItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const (MsgItemDelegate.cpp:89)
==14521==    by 0x8C46B0F: QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.7.1)
==14521==    by 0x8C4C596: QTreeView::drawTree(QPainter*, QRegion const&) const (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.7.1)
==14521==    by 0x8C510B5: QTreeView::paintEvent(QPaintEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.7.1)
==14521==    by 0x8A03277: QWidget::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.7.1)
==14521== 
Zabitý

Memory leak probably occured in snapshot=46 which contains trace:

n2: 1103927816 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
 n2: 1074037664 0x950CC6F: QListData::realloc_grow(int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.7.1)
  n2: 1074029280 0x950CD0D: QListData::append(int) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.7.1)
   n1: 1073741824 0x20887E: QList<QString>::operator+=(QList<QString> const&) (qlist.h:942)
    n1: 1073741824 0x2F0102: void Imap::Mailbox::ThreadingMsgListModel::threadForeach<void>(unsigned int const&, std::function<void (Imap::Mailbox::TreeItemMessage const&)>) const (functional:2127)
     n1: 1073741824 0x2E4FC9: Imap::Mailbox::ThreadingMsgListModel::threadAggregatedFlags(unsigned int) const (ThreadingMsgListModel.cpp:1271)
      n1: 1073741824 0x2EE78A: Imap::Mailbox::ThreadingMsgListModel::data(QModelIndex const&, int) const (ThreadingMsgListModel.cpp:307)
       n1: 1073741824 0x9640BA7: QSortFilterProxyModel::data(QModelIndex const&, int) const (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.7.1)
        n1: 1073741824 0x2D7D37: Imap::Mailbox::PrettyMsgListModel::data(QModelIndex const&, int) const (PrettyMsgListModel.cpp:175)
         n1: 1073741824 0x1DB86D: Gui::MsgItemDelegate::itemColor(QModelIndex const&) const (qabstractitemmodel.h:426)
          n1: 1073741824 0x1DBB5B: Gui::MsgItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const (MsgItemDelegate.cpp:89)
Comment 4 Justin Zobel 2022-11-18 04:30:14 UTC
Thank you for reporting this issue in KDE software. As it has been a while since this issue was reported, can we please ask you to see if you can reproduce the issue with a recent software version?

If you can reproduce the issue, please change the status to "REPORTED" when replying. Thank you!
Comment 5 Bug Janitor Service 2022-12-03 05:17:39 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 6 Bug Janitor Service 2022-12-18 05:15:43 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!