Bug 286049

Summary: conflict dialog blocks UI for too long
Product: [Frameworks and Libraries] Akonadi Reporter: Milian Wolff <mail>
Component: Mail Filter AgentAssignee: kdepim bugs <kdepim-bugs>
Status: RESOLVED WORKSFORME    
Severity: normal CC: amantia
Priority: NOR    
Version: GIT (master)   
Target Milestone: ---   
Platform: Unlisted Binaries   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Milian Wolff 2011-11-07 21:46:48 UTC
Version:           Git (master)
OS:                Linux

when ever I get a conflict like e.g. in bug 286048 kmail2 gets completely blocked by the dialog. if possible, this should not happen and the dialog only block the further processing of the one mail that triggered the conflict

furthermore I just had a dialog that blocked kmail2 for ~10-20 seconds before it even showed up. I attached gdb and it gave me these two backtraces, both roughly 5 seconds in between:

(gdb) thread apply all bt

Thread 6 (Thread 0x7f54bc110700 (LWP 28490)):
#0  0x00007f54d028ab54 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007f54cafd35ba in ?? () from /usr/lib/libQtWebKit.so.4
#2  0x00007f54cafd36a9 in ?? () from /usr/lib/libQtWebKit.so.4
#3  0x00007f54d0286df0 in start_thread () from /lib/libpthread.so.0
#4  0x00007f54cf82939d in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f54bb7f7700 (LWP 28491)):
#0  0x00007f54cf821123 in poll () from /lib/libc.so.6
#1  0x00007f54c776ad08 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f54c776b1c9 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f54d0622606 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007f54d05f6a92 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007f54d05f6c97 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007f54d050e13f in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007f54d0510bc5 in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007f54d0286df0 in start_thread () from /lib/libpthread.so.0
#9  0x00007f54cf82939d in clone () from /lib/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f54b2609700 (LWP 25867)):
---Type <return> to continue, or q <return> to quit---
#0  0x00007f54cf8231d3 in select () from /lib/libc.so.6
#1  0x00007f54d05d94a1 in ?? () from /usr/lib/libQtCore.so.4
#2  0x00007f54d0510bc5 in ?? () from /usr/lib/libQtCore.so.4
#3  0x00007f54d0286df0 in start_thread () from /lib/libpthread.so.0
#4  0x00007f54cf82939d in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f54b1488700 (LWP 26354)):
#0  0x00007f54d028aecb in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007f54d0510fde in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007f54d050597f in ?? () from /usr/lib/libQtCore.so.4
#3  0x00007f54d0510bc5 in ?? () from /usr/lib/libQtCore.so.4
#4  0x00007f54d0286df0 in start_thread () from /lib/libpthread.so.0
#5  0x00007f54cf82939d in clone () from /lib/libc.so.6
#6  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f54b9aff700 (LWP 26410)):
#0  0x00007f54d028aecb in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007f54d0510fde in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007f54d050597f in ?? () from /usr/lib/libQtCore.so.4
#3  0x00007f54d0510bc5 in ?? () from /usr/lib/libQtCore.so.4
#4  0x00007f54d0286df0 in start_thread () from /lib/libpthread.so.0
#5  0x00007f54cf82939d in clone () from /lib/libc.so.6
---Type <return> to continue, or q <return> to quit---
#6  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f54c13d0780 (LWP 28486)):
#0  0x00007f54d151f549 in QTextEngine::findItem(int) const () from /usr/lib/libQtGui.so.4
#1  0x00007f54d1525c6d in QTextLine::layout_helper(int) () from /usr/lib/libQtGui.so.4
#2  0x00007f54d156199d in ?? () from /usr/lib/libQtGui.so.4
#3  0x00007f54d1569da5 in ?? () from /usr/lib/libQtGui.so.4
#4  0x00007f54d1564704 in ?? () from /usr/lib/libQtGui.so.4
#5  0x00007f54d1566192 in ?? () from /usr/lib/libQtGui.so.4
#6  0x00007f54d156728f in ?? () from /usr/lib/libQtGui.so.4
#7  0x00007f54d1567a77 in ?? () from /usr/lib/libQtGui.so.4
#8  0x00007f54d156a210 in ?? () from /usr/lib/libQtGui.so.4
#9  0x00007f54d1567556 in ?? () from /usr/lib/libQtGui.so.4
#10 0x00007f54d1567a77 in ?? () from /usr/lib/libQtGui.so.4
#11 0x00007f54d1567d18 in QTextDocumentLayout::doLayout(int, int, int) () from /usr/lib/libQtGui.so.4
#12 0x00007f54d1567db9 in ?? () from /usr/lib/libQtGui.so.4
#13 0x00007f54d15683f5 in ?? () from /usr/lib/libQtGui.so.4
#14 0x00007f54d1568d4a in QTextDocumentLayout::documentChanged(int, int, int) () from /usr/lib/libQtGui.so.4
#15 0x00007f54d1733c45 in ?? () from /usr/lib/libQtGui.so.4
#16 0x00007f54d17344e9 in QTextEdit::resizeEvent(QResizeEvent*) () from /usr/lib/libQtGui.so.4
#17 0x00007f54d13240e0 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#18 0x00007f54d16c8586 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#19 0x00007f54d05f7a28 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
#20 0x00007f54d12d3aaf in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#21 0x00007f54d12d8951 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#22 0x00007f54d418fbb6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#23 0x00007f54d05f789c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#24 0x00007f54d131fd6f in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) () from /usr/lib/libQtGui.so.4
#25 0x00007f54d1327ae1 in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#26 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#27 0x00007f54d1327a76 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQtGui.so.4
#28 0x00007f54d1327afd in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#29 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#30 0x00007f54d1327a76 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQtGui.so.4
#31 0x00007f54d1327afd in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#32 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#33 0x00007f54d1327a76 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQtGui.so.4
#34 0x00007f54d1327afd in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#35 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#36 0x00007f54d1786a4c in QDialog::setVisible(bool) () from /usr/lib/libQtGui.so.4
#37 0x00007f54d17857f0 in QDialog::exec() () from /usr/lib/libQtGui.so.4
#38 0x00007f54d266cadd in Akonadi::ConflictHandler::resolve (this=0x7c72660) at /home/milian/projects/kde4/kdepimlibs/akonadi/conflicthandling/conflicthandler.cpp:80
#39 0x00007f54d266cfbb in Akonadi::ConflictHandler::qt_metacall (this=0x7c72660, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0x6afa340)
    at /home/milian/projects/.build/kde4/kdepimlibs/akonadi/conflicthandler_p.moc:91
#40 0x00007f54d060e18e in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#41 0x00007f54d12d3ae4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
---Type <return> to continue, or q <return> to quit---
#42 0x00007f54d12d8951 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#43 0x00007f54d418fbb6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#44 0x00007f54d05f789c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#45 0x00007f54d05fac2f in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#46 0x00007f54d06221a3 in ?? () from /usr/lib/libQtCore.so.4
#47 0x00007f54c776a7fd in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#48 0x00007f54c776aff8 in ?? () from /usr/lib/libglib-2.0.so.0
#49 0x00007f54c776b1c9 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#50 0x00007f54d0622606 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#51 0x00007f54d1376eee in ?? () from /usr/lib/libQtGui.so.4
#52 0x00007f54d05f6a92 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#53 0x00007f54d05f6c97 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#54 0x00007f54d05faeab in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#55 0x00000000004036a6 in main (argc=1, argv=0x7fff3cbc3bb8) at /home/milian/projects/kde4/kdepim/kmail/main.cpp:145
(gdb) cont
Continuing.
[Thread 0x7f54b1488700 (LWP 26354) exited]
[Thread 0x7f54b9aff700 (LWP 26410) exited]
^C
Program received signal SIGINT, Interrupt.
0x00007f54d057c41c in ?? () from /usr/lib/libQtCore.so.4
(gdb) thread 1
[Switching to thread 1 (Thread 0x7f54c13d0780 (LWP 28486))]
#0  0x00007f54d057c41c in ?? () from /usr/lib/libQtCore.so.4
(gdb) bt
#0  0x00007f54d057c41c in ?? () from /usr/lib/libQtCore.so.4
#1  0x00007f54d0576aae in ?? () from /usr/lib/libQtCore.so.4
#2  0x00007f54d057b908 in ?? () from /usr/lib/libQtCore.so.4
#3  0x00007f54d057c314 in ?? () from /usr/lib/libQtCore.so.4
#4  0x00007f54d151c04c in QTextEngine::shapeTextWithHarfbuzz(int) const () from /usr/lib/libQtGui.so.4
#5  0x00007f54d151c8bb in QTextEngine::shapeText(int) const () from /usr/lib/libQtGui.so.4
#6  0x00007f54d151cbe8 in QTextEngine::shape(int) const () from /usr/lib/libQtGui.so.4
#7  0x00007f54d15268cd in QTextLine::layout_helper(int) () from /usr/lib/libQtGui.so.4
#8  0x00007f54d156199d in ?? () from /usr/lib/libQtGui.so.4
#9  0x00007f54d1569da5 in ?? () from /usr/lib/libQtGui.so.4
#10 0x00007f54d1564704 in ?? () from /usr/lib/libQtGui.so.4
#11 0x00007f54d1566192 in ?? () from /usr/lib/libQtGui.so.4
#12 0x00007f54d156728f in ?? () from /usr/lib/libQtGui.so.4
#13 0x00007f54d1567a77 in ?? () from /usr/lib/libQtGui.so.4
#14 0x00007f54d156a210 in ?? () from /usr/lib/libQtGui.so.4
#15 0x00007f54d1567556 in ?? () from /usr/lib/libQtGui.so.4
#16 0x00007f54d1567a77 in ?? () from /usr/lib/libQtGui.so.4
#17 0x00007f54d1567d18 in QTextDocumentLayout::doLayout(int, int, int) () from /usr/lib/libQtGui.so.4
#18 0x00007f54d1567db9 in ?? () from /usr/lib/libQtGui.so.4
#19 0x00007f54d15683f5 in ?? () from /usr/lib/libQtGui.so.4
#20 0x00007f54d1568d4a in QTextDocumentLayout::documentChanged(int, int, int) () from /usr/lib/libQtGui.so.4
#21 0x00007f54d1733c45 in ?? () from /usr/lib/libQtGui.so.4
#22 0x00007f54d17344e9 in QTextEdit::resizeEvent(QResizeEvent*) () from /usr/lib/libQtGui.so.4
---Type <return> to continue, or q <return> to quit---
#23 0x00007f54d13240e0 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#24 0x00007f54d16c8586 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#25 0x00007f54d05f7a28 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#26 0x00007f54d12d3aaf in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#27 0x00007f54d12d8951 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#28 0x00007f54d418fbb6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#29 0x00007f54d05f789c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#30 0x00007f54d131fd6f in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) () from /usr/lib/libQtGui.so.4
#31 0x00007f54d1327ae1 in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#32 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#33 0x00007f54d1327a76 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQtGui.so.4
#34 0x00007f54d1327afd in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#35 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#36 0x00007f54d1327a76 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQtGui.so.4
#37 0x00007f54d1327afd in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#38 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#39 0x00007f54d1327a76 in QWidgetPrivate::showChildren(bool) () from /usr/lib/libQtGui.so.4
#40 0x00007f54d1327afd in QWidgetPrivate::show_helper() () from /usr/lib/libQtGui.so.4
#41 0x00007f54d1327f02 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4
#42 0x00007f54d1786a4c in QDialog::setVisible(bool) () from /usr/lib/libQtGui.so.4
#43 0x00007f54d17857f0 in QDialog::exec() () from /usr/lib/libQtGui.so.4
#44 0x00007f54d266cadd in Akonadi::ConflictHandler::resolve (this=0x7c72660) at /home/milian/projects/kde4/kdepimlibs/akonadi/conflicthandling/conflicthandler.cpp:80
#45 0x00007f54d266cfbb in Akonadi::ConflictHandler::qt_metacall (this=0x7c72660, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0x6afa340)
---Type <return> to continue, or q <return> to quit---
    at /home/milian/projects/.build/kde4/kdepimlibs/akonadi/conflicthandler_p.moc:91
#46 0x00007f54d060e18e in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#47 0x00007f54d12d3ae4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#48 0x00007f54d12d8951 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#49 0x00007f54d418fbb6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#50 0x00007f54d05f789c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#51 0x00007f54d05fac2f in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#52 0x00007f54d06221a3 in ?? () from /usr/lib/libQtCore.so.4
#53 0x00007f54c776a7fd in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#54 0x00007f54c776aff8 in ?? () from /usr/lib/libglib-2.0.so.0
#55 0x00007f54c776b1c9 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#56 0x00007f54d0622606 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#57 0x00007f54d1376eee in ?? () from /usr/lib/libQtGui.so.4
#58 0x00007f54d05f6a92 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#59 0x00007f54d05f6c97 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#60 0x00007f54d05faeab in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#61 0x00000000004036a6 in main (argc=1, argv=0x7fff3cbc3bb8) at /home/milian/projects/kde4/kdepim/kmail/main.cpp:145
(gdb) cont

Reproducible: Didn't try

Steps to Reproduce:
trigger conflict

Actual Results:  
kmail2 is blocked

Expected Results:  
kmail2 is not blocked
Comment 1 Milian Wolff 2012-02-14 09:08:15 UTC
since you asked whether this is still reproducible: Just try to resize a conflict dialog, it takes ages!
Comment 2 András Manţia 2012-10-13 19:18:25 UTC
I cannot reproduce with 4.9.2. The dialog doesn't block the ui at all.