Bug 208353 - Running and canceling parallel running jobs causes crashes
Summary: Running and canceling parallel running jobs causes crashes
Status: RESOLVED FIXED
Alias: None
Product: kdepim
Classification: Applications
Component: libkleo (show other bugs)
Version: 4.5
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: kdepim bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-09-24 08:39 UTC by András Manţia
Modified: 2010-03-02 20:04 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description András Manţia 2009-09-24 08:39:50 UTC
As I went through the unread mails in my kde-core-devel list, suddenly KMail crashed. Twice today, with the same backtrace:
Application: Kontact (kontact), signal: Aborted
[Current thread is 1 (Thread 0x7f892a3d17e0 (LWP 28768))]

Thread 3 (Thread 0x7f8906bf3950 (LWP 28826)):
#0  0x00007f8922d21662 in select () from /lib64/libc.so.6
#1  0x00007f8924f2d153 in QProcessManager::run() () from /opt/qt4/lib/libQtCore.so.4
#2  0x00007f8924e393e4 in QThreadPrivate::start(void*) () from /opt/qt4/lib/libQtCore.so.4
#3  0x00007f8924bac070 in start_thread () from /lib64/libpthread.so.0
#4  0x00007f8922d2810d in clone () from /lib64/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f890572e950 (LWP 29062)):
[KCrash Handler]
#5  0x00007f8922c87645 in raise () from /lib64/libc.so.6
#6  0x00007f8922c88c33 in abort () from /lib64/libc.so.6
#7  0x00007f8922c80329 in __assert_fail () from /lib64/libc.so.6
#8  0x00007f89119a86fa in ?? () from /usr/lib64/libgpgme-pthread.so.11
#9  0x00007f89119a374d in gpgme_op_keylist_start () from /usr/lib64/libgpgme-pthread.so.11
#10 0x00007f8911c1a5eb in GpgME::Context::startKeyListing (this=0x222cbb0, pattern=0x2521278 "D6B72EB1A7F1DB43", secretOnly=false)
    at /home/andris/development/sources/kde-trunk/kdepimlibs/gpgme++/context.cpp:384
#11 0x00007f8911c1a699 in GpgME::Context::startKeyListing (this=0x222cbb0, patterns=0x8db2c0, secretOnly=false) at /home/andris/development/sources/kde-trunk/kdepimlibs/gpgme++/context.cpp:392
#12 0x00007f890e468f11 in do_list_keys (ctx=0x222cbb0, pats=<value optimized out>, keys=..., secretOnly=<value optimized out>)
    at /home/andris/development/sources/kde-trunk/kdepim/libkleo/backends/qgpgme/qgpgmekeylistjob.cpp:69
#13 0x00007f890e469e5d in list_keys (ctx=0x222cbb0, pats=..., secretOnly=false) at /home/andris/development/sources/kde-trunk/kdepim/libkleo/backends/qgpgme/qgpgmekeylistjob.cpp:87
#14 0x00007f890e46c3e3 in QtConcurrent::StoredFunctorCall0<boost::tuples::tuple<GpgME::KeyListResult, std::vector<GpgME::Key, std::allocator<GpgME::Key> >, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::tuples::tuple<GpgME::KeyListResult, std::vector<GpgME::Key, std::allocator<GpgME::Key> >, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::KeyListResult, std::vector<GpgME::Key, std::allocator<GpgME::Key> >, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QStringList, bool), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QStringList>, boost::_bi::value<bool> > >, boost::_bi::list1<boost::_bi::value<GpgME::Context*> > > >::runFunctor() () from /opt/kde4/lib64/libkleo.so.4
#15 0x00007f890e46c186 in QtConcurrent::RunFunctionTask<boost::tuples::tuple<GpgME::KeyListResult, std::vector<GpgME::Key, std::allocator<GpgME::Key> >, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::run() () from /opt/kde4/lib64/libkleo.so.4
#16 0x00007f8924e2a0ab in QThreadPoolThread::run() () from /opt/qt4/lib/libQtCore.so.4
#17 0x00007f8924e393e4 in QThreadPrivate::start(void*) () from /opt/qt4/lib/libQtCore.so.4
#18 0x00007f8924bac070 in start_thread () from /lib64/libpthread.so.0
#19 0x00007f8922d2810d in clone () from /lib64/libc.so.6
#20 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f892a3d17e0 (LWP 28768)):
#0  0x00007f8924bafd59 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f8924e39d99 in QWaitConditionPrivate::wait(unsigned long) () from /opt/qt4/lib/libQtCore.so.4
#2  0x00007f8924e398f6 in QWaitCondition::wait(QMutex*, unsigned long) () from /opt/qt4/lib/libQtCore.so.4
#3  0x00007f8924e29596 in QThreadPoolPrivate::waitForDone() () from /opt/qt4/lib/libQtCore.so.4
#4  0x00007f8924e298b4 in QThreadPool::~QThreadPool() () from /opt/qt4/lib/libQtCore.so.4
#5  0x00007f8924e2acdc in QGlobalStaticDeleter<QThreadPool>::~QGlobalStaticDeleter() () from /opt/qt4/lib/libQtCore.so.4
#6  0x00007f8922c8a2ed in exit () from /lib64/libc.so.6
#7  0x00007f89239aa7a8 in qt_xio_errhandler () from /opt/qt4/lib/libQtGui.so.4
#8  0x00007f8925e692d8 in KApplication::xioErrhandler (this=0x7fffd9bde460, dpy=0x63c760) at /home/andris/development/sources/kde-trunk/kdelibs/kdeui/kernel/kapplication.cpp:408
#9  0x00007f8921a92e54 in _XIOError () from /usr/lib64/libX11.so.6
#10 0x00007f8921a99aa8 in _XPutXCBBuffer () from /usr/lib64/libX11.so.6
#11 0x00007f8921a99d2d in ?? () from /usr/lib64/libX11.so.6
#12 0x00007f891f179516 in XRenderCompositeText32 () from /usr/lib64/libXrender.so.1
#13 0x00007f8923b5312d in QX11PaintEngine::drawFreetype(QPointF const&, QTextItemInt const&) () from /opt/qt4/lib/libQtGui.so.4
#14 0x00007f8923b53a15 in QX11PaintEngine::drawTextItem(QPointF const&, QTextItem const&) () from /opt/qt4/lib/libQtGui.so.4
#15 0x00007f8923aa2237 in QPainter::drawTextItem(QPointF const&, QTextItem const&) () from /opt/qt4/lib/libQtGui.so.4
#16 0x00007f8923bcc736 in drawMenuText(QPainter*, QFixed, QFixed, QScriptItem const&, QTextItemInt&, QTextEngine*, int, int) () from /opt/qt4/lib/libQtGui.so.4
#17 0x00007f8923bd2989 in QTextLine::draw(QPainter*, QPointF const&, QTextLayout::FormatRange const*) const () from /opt/qt4/lib/libQtGui.so.4
#18 0x00007f8923a983ff in qt_format_text(QFont const&, QRectF const&, int, QTextOption const*, QString const&, QRectF*, int, int*, int, QPainter*) () from /opt/qt4/lib/libQtGui.so.4
#19 0x00007f8923a98aa8 in QPainter::drawText(QRect const&, int, QString const&, QRect*) () from /opt/qt4/lib/libQtGui.so.4
#20 0x00007f890f0bbafc in paint_left_aligned_elided_text (text=..., ci=0x1c2ffc0, painter=0x7fffd9bd92d0, left=@0x7fffd9bd8ac8, top=-18, right=@0x7fffd9bd8acc, layoutDir=Qt::LeftToRight, font=...)
    at /home/andris/development/sources/kde-trunk/kdepim/messagelist/core/themedelegate.cpp:148
#21 0x00007f890f0bfcd0 in MessageList::Core::ThemeDelegate::paint (this=0x1c3c660, painter=0x7fffd9bd92d0, option=..., index=<value optimized out>)
    at /home/andris/development/sources/kde-trunk/kdepim/messagelist/core/themedelegate.cpp:1014
#22 0x00007f8923fd7407 in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () from /opt/qt4/lib/libQtGui.so.4
#23 0x00007f8923fd7eff in QTreeView::drawTree(QPainter*, QRegion const&) const () from /opt/qt4/lib/libQtGui.so.4
#24 0x00007f8923fd925b in QTreeView::paintEvent(QPaintEvent*) () from /opt/qt4/lib/libQtGui.so.4
#25 0x00007f8923994b08 in QWidget::event(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#26 0x00007f8923e11473 in QFrame::event(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#27 0x00007f8923ec3efc in QAbstractScrollArea::viewportEvent(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#28 0x00007f8923f953c1 in QAbstractItemView::viewportEvent(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#29 0x00007f8923fd9800 in QTreeView::viewportEvent(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#30 0x00007f8923ec6ffc in QAbstractScrollAreaPrivate::viewportEvent(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#31 0x00007f8923ec7038 in QAbstractScrollAreaFilter::eventFilter(QObject*, QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#32 0x00007f8924f50e47 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /opt/qt4/lib/libQtCore.so.4
#33 0x00007f8923923175 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#34 0x00007f892392530e in QApplication::notify(QObject*, QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#35 0x00007f8925e698ab in KApplication::notify (this=0x7fffd9bde460, receiver=0x1c316b0, event=0x7fffd9bda390) at /home/andris/development/sources/kde-trunk/kdelibs/kdeui/kernel/kapplication.cpp:302
#36 0x00007f8924f53237 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /opt/qt4/lib/libQtCore.so.4
#37 0x00007f8928657487 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) () from /opt/qt4/lib/libQt3Support.so.4
#38 0x00007f89239918f9 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /opt/qt4/lib/libQtGui.so.4
#39 0x00007f8923b740ec in QWidgetBackingStore::sync() () from /opt/qt4/lib/libQtGui.so.4
#40 0x00007f892398a7df in QWidgetPrivate::syncBackingStore() () from /opt/qt4/lib/libQtGui.so.4
#41 0x00007f8923995155 in QWidget::event(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#42 0x00007f8923e34ad8 in QMainWindow::event(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#43 0x00007f8925f7a823 in KXmlGuiWindow::event (this=0x2a50f6c, ev=0x80) at /home/andris/development/sources/kde-trunk/kdelibs/kdeui/xmlgui/kxmlguiwindow.cpp:131
#44 0x00007f8923923197 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#45 0x00007f892392530e in QApplication::notify(QObject*, QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#46 0x00007f8925e698ab in KApplication::notify (this=0x7fffd9bde460, receiver=0x642c30, event=0x7fffd9bdb470) at /home/andris/development/sources/kde-trunk/kdelibs/kdeui/kernel/kapplication.cpp:302
#47 0x00007f8924f53237 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /opt/qt4/lib/libQtCore.so.4
#48 0x00007f892865742d in QCoreApplication::sendEvent(QObject*, QEvent*) () from /opt/qt4/lib/libQt3Support.so.4
#49 0x00007f8923b6e640 in sendUpdateRequest(QWidget*, bool) () from /opt/qt4/lib/libQtGui.so.4
#50 0x00007f8923b6ec86 in QWidgetBackingStore::markDirty(QRect const&, QWidget*, bool, bool) () from /opt/qt4/lib/libQtGui.so.4
#51 0x00007f89239832b2 in QWidget::repaint(QRect const&) () from /opt/qt4/lib/libQtGui.so.4
#52 0x00007f892398341c in QWidget::repaint() () from /opt/qt4/lib/libQtGui.so.4
#53 0x00007f8923daf179 in QAbstractButtonPrivate::click() () from /opt/qt4/lib/libQtGui.so.4
#54 0x00007f8923daf478 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /opt/qt4/lib/libQtGui.so.4
#55 0x00007f8923ebe75c in QToolButton::mouseReleaseEvent(QMouseEvent*) () from /opt/qt4/lib/libQtGui.so.4
#56 0x00007f8923994235 in QWidget::event(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#57 0x00007f8923dadc92 in QAbstractButton::event(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#58 0x00007f8923ebf8d6 in QToolButton::event(QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#59 0x00007f8923923197 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#60 0x00007f8923923f8e in QApplication::notify(QObject*, QEvent*) () from /opt/qt4/lib/libQtGui.so.4
#61 0x00007f8925e698ab in KApplication::notify (this=0x7fffd9bde460, receiver=0x2599710, event=0x7fffd9bdc220) at /home/andris/development/sources/kde-trunk/kdelibs/kdeui/kernel/kapplication.cpp:302
#62 0x00007f8924f53237 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /opt/qt4/lib/libQtCore.so.4
#63 0x00007f8928657487 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) () from /opt/qt4/lib/libQt3Support.so.4
#64 0x00007f8923928adf in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&) () from /opt/qt4/lib/libQtGui.so.4
#65 0x00007f89239bd9ab in QETWidget::translateMouseEvent(_XEvent const*) () from /opt/qt4/lib/libQtGui.so.4
#66 0x00007f89239bed47 in QApplication::x11ProcessEvent(_XEvent*) () from /opt/qt4/lib/libQtGui.so.4
#67 0x00007f89239efa16 in x11EventSourceDispatch(_GSource*, int (*)(void*), void*) () from /opt/qt4/lib/libQtGui.so.4
#68 0x00007f891e8ab0fb in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#69 0x00007f891e8ae8cd in ?? () from /usr/lib64/libglib-2.0.so.0
#70 0x00007f891e8aea8b in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#71 0x00007f8924f8b06a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/qt4/lib/libQtCore.so.4
#72 0x00007f89239ef077 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/qt4/lib/libQtGui.so.4
#73 0x00007f8924f4f977 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/qt4/lib/libQtCore.so.4
#74 0x00007f8924f4fb9b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/qt4/lib/libQtCore.so.4
#75 0x00007f8924f53c81 in QCoreApplication::exec() () from /opt/qt4/lib/libQtCore.so.4
#76 0x00007f8923922ef4 in QApplication::exec() () from /opt/qt4/lib/libQtGui.so.4
#77 0x0000000000404b31 in main (argc=1, argv=0x7fffd9bdea38) at /home/andris/development/sources/kde-trunk/kdepim/kontact/src/main.cpp:223
Comment 1 Thomas McGuire 2009-09-24 20:44:03 UTC
Yes, I see this as well.
This is a regression introduced by the async reader work.
It works in e35, but fails in e4 and in trunk.

Marc, please have a look at this.

If this can't be fixed, I guess I have to disable async mode again before the 4.4 release :(
Comment 2 Melchior Franz 2009-10-08 00:28:58 UTC
kontact aborts several times every day here because of this nasty bug.
Comment 3 Thomas McGuire 2009-10-08 16:39:22 UTC
SVN commit 1032801 by tmcguire:

Disable async reader mode, because of the frequent crashes that happen here.

CCBUG: 208353


 M  +3 -1      objecttreeparser.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1032801
Comment 4 Thomas McGuire 2009-12-27 17:28:43 UTC
SVN commit 1066655 by tmcguire:

Finally, a unit test which actually crashes :)
Randomly killing jobs seems to trigger the bug.

CCBUG: 208353


 M  +50 -25    test_verify.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1066655
Comment 5 Thomas McGuire 2009-12-27 17:44:09 UTC
Interesting observation: The problem only happens when canceling jobs.

Also interesting, but probably unrelated to this bug, is that testParallelVerifyAndKeyListJobs() fails as well when the number of parallel jobs is too high, try increasing from 10 to 500.
Comment 6 Thomas McGuire 2009-12-27 17:56:32 UTC
Valgrind output:

==28997== Thread 3:                                                                                                                                                                 
==28997== Invalid read of size 8                                                                                                                                                    
==28997==    at 0x74F249F: start (rungpg.c:1331)                                                                                                                                    
==28997==    by 0x74E9536: gpgme_op_verify (verify.c:809)                                                                                                                           
==28997==    by 0x7280514: GpgME::Context::verifyDetachedSignature(GpgME::Data const&, GpgME::Data const&) (context.cpp:762)                                                        
==28997==    by 0x4F2A080: verify_detached_qba(GpgME::Context*, QByteArray const&, QByteArray const&) (qgpgmeverifydetachedjob.cpp:86)                                              
==28997==    by 0x4F2B1B2: boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> >::operator()<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list1<GpgME::Context*&> >(boost::_bi::type<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*&)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list1<GpgME::Context*&>&, long) (bind.hpp:361)                                                                                                                                                                  
==28997==    by 0x4F2B20D: boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >::operator()<GpgME::Context*>(GpgME::Context*&) (bind_template.hpp:32)                                               
==28997==    by 0x4F2B26A: boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> boost::_bi::list1<boost::_bi::value<GpgME::Context*> >::operator()<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >, boost::_bi::list0>(boost::_bi::type<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >&, boost::_bi::list0&, long) (bind.hpp:222)                                    
==28997==    by 0x4F2B2B9: boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >, boost::_bi::list1<boost::_bi::value<GpgME::Context*> > >::operator()() (bind_template.hpp:20)                                                   
==28997==    by 0x4F2B2ED: boost::detail::function::function_obj_invoker0<boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >, boost::_bi::list1<boost::_bi::value<GpgME::Context*> > >, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::invoke(boost::detail::function::function_buffer&) (function_template.hpp:123)                                                                  
==28997==    by 0x4F2DB01: boost::function0<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::operator()() const (function_template.hpp:815)              
==28997==    by 0x4F2DB44: Kleo::_detail::Thread<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::run() (threadedjobmixin.h:103)                         
==28997==    by 0x54CC719: QThreadPrivate::start(void*) (qthread_unix.cpp:244)                                                                                                      
==28997==    by 0x597906F: start_thread (in /lib64/libpthread-2.9.so)                                                                                                               
==28997==    by 0x83F811C: clone (in /lib64/libc-2.9.so)                                                                                                                            
==28997==  Address 0x0 is not stack'd, malloc'd or (recently) free'd                                                                                                                
QFATAL : VerifyTest::testMixedParallelJobs() Received signal 11                                                                                                                     
QFATAL : VerifyTest::testMixedParallelJobs() Received signal 11                                                                                                                     
FAIL!  : VerifyTest::testMixedParallelJobs() Received a fatal error.     

Helgrind output:

==29248== Thread #34 was created                                                                                                                                                    
==29248==    at 0x83FB0DE: clone (in /lib64/libc-2.9.so)                                                                                                                            
==29248==    by 0x597B3F4: do_clone (in /lib64/libpthread-2.9.so)                                                                                                                   
==29248==    by 0x597BA80: pthread_create@@GLIBC_2.2.5 (in /lib64/libpthread-2.9.so)                                                                                                
==29248==    by 0x4C29A34: pthread_create@* (in /usr/lib64/valgrind/amd64-linux/vgpreload_helgrind.so)                                                                              
==29248==    by 0x54CEE6F: QThread::start(QThread::Priority) (qthread_unix.cpp:538)                                                                                                 
==29248==    by 0x4F30240: void Kleo::_detail::ThreadedJobMixin<Kleo::VerifyDetachedJob, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::run<boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > > >(boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > > const&) (threadedjobmixin.h:153)                                                 
==29248==    by 0x4F2CF2F: Kleo::QGpgMEVerifyDetachedJob::start(QByteArray const&, QByteArray const&) (qgpgmeverifydetachedjob.cpp:95)                                              
==29248==    by 0x405F89: VerifyTest::startAnotherJob() (test_verify.cpp:111)                                                                                                       
==29248==    by 0x4033A3: VerifyTest::qt_metacall(QMetaObject::Call, int, void**) (test_verify.moc:86)                                                                              
==29248==    by 0x5601782: QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) (qmetaobject.cpp:237)                                                                    
==29248==    by 0x5616A8E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3399)                                                                      
==29248==    by 0x5620665: QSingleShotTimer::timeout() (qtimer.moc:82)                                                                                                              
==29248==    by 0x56207A6: QSingleShotTimer::timerEvent(QTimerEvent*) (qtimer.cpp:308)                                                                                              
==29248==    by 0x56111CD: QObject::event(QEvent*) (qobject.cpp:1210)                                                                                                               
==29248==    by 0x5DAD94E: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4245)                                                                            
==29248==    by 0x5DADDAB: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3669)                                                                                          
==29248==    by 0x55F99C8: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704)                                                                           
==29248==    by 0x55FED1E: QCoreApplication::sendEvent(QObject*, QEvent*) (qcoreapplication.h:215)                                                                                  
==29248==    by 0x5638D6E: QTimerInfoList::activateTimers() (qeventdispatcher_unix.cpp:603)                                                                                         
==29248==    by 0x5636446: timerSourceDispatch(_GSource*, int (*)(void*), void*) (qeventdispatcher_glib.cpp:184)                                                                    
==29248==    by 0x5636480: idleTimerSourceDispatch(_GSource*, int (*)(void*), void*) (qeventdispatcher_glib.cpp:231)                                                                
==29248==    by 0xAC230FA: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.1800.2)                                                                                          
==29248==    by 0xAC268CC: (within /usr/lib64/libglib-2.0.so.0.1800.2)                                                                                                              
==29248==    by 0xAC26A8A: g_main_context_iteration (in /usr/lib64/libglib-2.0.so.0.1800.2)                                                                                         
==29248==    by 0x5635168: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:407)                                               
==29248==    by 0x55F5E42: QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:149)                                                                    
==29248==    by 0x55F6066: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:201)                                                                             
==29248==    by 0x4084A4: VerifyTest::testMixedParallelJobs() (test_verify.cpp:188)                                                                                                 
==29248==    by 0x4033CF: VerifyTest::qt_metacall(QMetaObject::Call, int, void**) (test_verify.moc:90)                                                                              
==29248==    by 0x5601782: QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) (qmetaobject.cpp:237)                                                                    
==29248==    by 0x5605413: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (qmetaobject.cpp:1533)                                                   
==29248==    by 0x5605CA5: QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) (qmetaobject.cpp:1113)                                      
==29248==    by 0x5214B32: QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) (qobjectdefs.h:396)                                                                 
==29248==    by 0x520F2CB: QTest::qInvokeTestMethodDataEntry(char*) (qtestcase.cpp:1213)                                                                                            
==29248==    by 0x521064A: QTest::qInvokeTestMethod(char const*, char const*) (qtestcase.cpp:1308)                                                                                  
==29248==    by 0x5210E45: QTest::qInvokeTestMethods(QObject*) (qtestcase.cpp:1463)                                                                                                 
==29248==    by 0x5211EF7: QTest::qExec(QObject*, int, char**) (qtestcase.cpp:1666)                                                                                                 
==29248==    by 0x403C2E: main (test_verify.cpp:192)                                                                                                                                
==29248==                                                                                                                                                                           
==29248== Thread #34: Exiting thread still holds 1 lock                                                                                                                             
==29248==    at 0x83CA098: _Exit (in /lib64/libc-2.9.so)                                                                                                                            
==29248==    by 0x74FB741: _gpgme_io_spawn (posix-io.c:349)                                                                                                                         
==29248==    by 0x74F5413: start (rungpg.c:1305)                                                                                                                                    
==29248==    by 0x74EC536: gpgme_op_verify (verify.c:809)                                                                                                                           
==29248==    by 0x7283514: GpgME::Context::verifyDetachedSignature(GpgME::Data const&, GpgME::Data const&) (context.cpp:762)                                                        
==29248==    by 0x4F2D080: verify_detached_qba(GpgME::Context*, QByteArray const&, QByteArray const&) (qgpgmeverifydetachedjob.cpp:86)                                              
==29248==    by 0x4F2E1B2: boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> >::operator()<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list1<GpgME::Context*&> >(boost::_bi::type<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*&)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list1<GpgME::Context*&>&, long) (bind.hpp:361)                                                                                                                                                                  
==29248==    by 0x4F2E20D: boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >::operator()<GpgME::Context*>(GpgME::Context*&) (bind_template.hpp:32)                                               
==29248==    by 0x4F2E26A: boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> boost::_bi::list1<boost::_bi::value<GpgME::Context*> >::operator()<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QKilled
ByteArray> > >, boost::_bi::list0>(boost::_bi::type<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >&, boost::_bi::list0&, long) (bind.hpp:222)
==29248==    by 0x4F2E2B9: boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >, boost::_bi::list1<boost::_bi::value<GpgME::Context*> > >::operator()() (bind_template.hpp:20)
==29248==    by 0x4F2E2ED: boost::detail::function::function_obj_invoker0<boost::_bi::bind_t<boost::_bi::unspecified, boost::_bi::bind_t<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> (*)(GpgME::Context*, QByteArray const&, QByteArray const&), boost::_bi::list3<boost::arg<1>, boost::_bi::value<QByteArray>, boost::_bi::value<QByteArray> > >, boost::_bi::list1<boost::_bi::value<GpgME::Context*> > >, boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::invoke(boost::detail::function::function_buffer&) (function_template.hpp:123)
==29248==    by 0x4F30B01: boost::function0<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::operator()() const (function_template.hpp:815)
==29248==    by 0x4F30B44: Kleo::_detail::Thread<boost::tuples::tuple<GpgME::VerificationResult, QString, GpgME::Error, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::run() (threadedjobmixin.h:103)
==29248==    by 0x54CF719: QThreadPrivate::start(void*) (qthread_unix.cpp:244)
==29248==    by 0x4C29B5F: mythread_wrapper (in /usr/lib64/valgrind/amd64-linux/vgpreload_helgrind.so)
==29248==    by 0x597C06F: start_thread (in /lib64/libpthread-2.9.so)
Comment 7 Thomas McGuire 2010-03-02 20:04:14 UTC
SVN commit 1098056 by tmcguire:

Allow async mode again, as we now require a gpgme version that doesn't crash.

BUG: 208353


 M  +1 -2      viewer_p.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1098056