Bug 426029

Summary: [kmail] Segfault when trying to send an PGP encrypted email
Product: [Applications] kmail2 Reporter: Andreas Schneider <asn>
Component: cryptoAssignee: kdepim bugs <kdepim-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: montel, sknauss
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In: 5.16.1
Sentry Crash Report:

Description Andreas Schneider 2020-08-31 18:55:14 UTC
SUMMARY

I get a segfault when trying to send an PGP encrypted email:

Thread 1 (Thread 0x7fffe62b5040 (LWP 11283)):
#0  0x00007fff164c2707 in KMime::Headers::Base::is(char const*) const (this=this@entry=0x555558b5bc90, t=t@entry=0x7fff164daff4 "Content-Type") at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_headers.cpp:153
#1  0x00007fff164c2767 in KMime::Content::headerByType(char const*) const (this=this@entry=0x555558e7ce10, type=0x7fff164daff4 "Content-Type") at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_content.cpp:625
        h = 0x555558b5bc90
        __for_range = <optimized out>
#2  0x00007fff164c2fa9 in KMime::Content::header<KMime::Headers::ContentType>(bool) (create=true, this=0x555558e7ce10) at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_content.h:693
        h = <optimized out>
#3  KMime::Content::contentType(bool) (this=0x555558e7ce10, create=<optimized out>) at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_content.cpp:877
#4  0x00007fff159591a6 in  () at /usr/lib64/libKF5MessageComposer.so.5
#5  0x00007fff158faa64 in  () at /usr/lib64/libKF5MessageComposer.so.5
#6  0x00007ffff6be6116 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007fff153ff0b1 in QGpgME::EncryptJob::result(GpgME::EncryptionResult const&, QByteArray const&, QString const&, GpgME::Error const&) () at /usr/lib64/libqgpgme.so.7
#8  0x00007fff15416452 in QGpgME::_detail::ThreadedJobMixin<QGpgME::EncryptJob, std::tuple<GpgME::EncryptionResult, QByteArray, QString, GpgME::Error> >::slotFinished() () at /usr/lib64/libqgpgme.so.7
#9  0x00007ffff6bdbb61 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#10 0x00007ffff77070cf in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#11 0x00007ffff6bafc3a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#12 0x00007ffff6bb2661 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5
#13 0x00007ffff6c079f3 in  () at /usr/lib64/libQt5Core.so.5
#14 0x00007fffede0d2b7 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#15 0x00007fffede0d638 in  () at /usr/lib64/libglib-2.0.so.0
#16 0x00007fffede0d6ef in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#17 0x00007ffff6c0707f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#18 0x00007ffff6bae5fb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#19 0x00007ffff6bb6860 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#20 0x0000555555558fc7 in  ()
#21 0x00007ffff6579cca in __libc_start_main () at /lib64/libc.so.6
#22 0x000055555555961a in  ()


STEPS TO REPRODUCE
1. Open Kmail
2. Write a mail and select PGP/GPG encryption and send it

SOFTWARE/OS VERSIONS
openSUSE Tumbleweed

KDE Plasma Version: 5.19.4
KDE Frameworks Version: 5.73.0
Qt Version: 5.15.0
KMail: 5.15.0 (20.08.0)
Comment 1 Laurent Montel 2020-08-31 19:11:43 UTC
Hi,
Please install debug symbol for messagelib too.
Regards
Comment 2 Andreas Schneider 2020-09-01 07:30:03 UTC
(gdb) bt full
#0  0x0000000000000000 in  ()
#1  0x00007fff11cc170a in KMime::Headers::Base::is(char const*) const (this=this@entry=0x5555586303b0, t=t@entry=0x7fff11cd9ff4 "Content-Type") at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_headers.cpp:153
#2  0x00007fff11cc1767 in KMime::Content::headerByType(char const*) const (this=this@entry=0x55555861c300, type=0x7fff11cd9ff4 "Content-Type") at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_content.cpp:625
        h = 0x5555586303b0
        __for_range = <optimized out>
#3  0x00007fff11cc1fa9 in KMime::Content::header<KMime::Headers::ContentType>(bool) (create=true, this=0x55555861c300) at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_content.h:693
        h = <optimized out>
#4  KMime::Content::contentType(bool) (this=this@entry=0x55555861c300, create=create@entry=true) at /usr/src/debug/kmime-20.08.0-1.2.x86_64/src/kmime_content.cpp:877
#5  0x00007fff111581a6 in MessageComposer::Util::composeHeadersAndBody(KMime::Content*, QByteArray, Kleo::CryptoMessageFormat, bool, QByteArray const&) (orig=0x55555861c300, encodedBody=..., format=<optimized out>, sign=<optimized out>, hashAlgo=...) at /usr/src/debug/messagelib-20.08.0-1.2.x86_64/messagecomposer/src/utils/util.cpp:89
        vers = <optimized out>
        boundary = {
          d = 0x555559113ed0
        }
        code = 0x555559ccb1f0
        result = 0x555559ce1d10
#6  0x00007fff110f9a64 in operator() (auditLogAsHtml=..., auditLogError=..., cipherText=..., result=..., __closure=0x555559d7e9e0) at /usr/include/qt5/QtCore/qrefcount.h:60
        d = 0x555559ce1750
        this = 0x555559d8b3f0
#7  QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2, 3>, QtPrivate::List<const GpgME::EncryptionResult&, const QByteArray&, const QString&, const GpgME::Error&>, void, MessageComposer::EncryptJob::process()::<lambda(const GpgME::EncryptionResult&, const QByteArray&, const QString&, const GpgME::Error&)> >::call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#8  QtPrivate::Functor<MessageComposer::EncryptJob::process()::<lambda(const GpgME::EncryptionResult&, const QByteArray&, const QString&, const GpgME::Error&)>, 4>::call<QtPrivate::List<GpgME::EncryptionResult const&, QByteArray const&, QString const&, GpgME::Error const&>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#9  QtPrivate::QFunctorSlotObject<MessageComposer::EncryptJob::process()::<lambda(const GpgME::EncryptionResult&, const QByteArray&, const QString&, const GpgME::Error&)>, 4, QtPrivate::List<const GpgME::EncryptionResult&, const QByteArray&, const QString&, const GpgME::Error&>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x555559d7e9d0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443
#10 0x00007ffff6be6116 in  () at /usr/lib64/libQt5Core.so.5
#11 0x00007fff10bfe0b1 in QGpgME::EncryptJob::result(GpgME::EncryptionResult const&, QByteArray const&, QString const&, GpgME::Error const&) () at /usr/lib64/libqgpgme.so.7
#12 0x00007fff10c15452 in QGpgME::_detail::ThreadedJobMixin<QGpgME::EncryptJob, std::tuple<GpgME::EncryptionResult, QByteArray, QString, GpgME::Error> >::slotFinished() () at /usr/lib64/libqgpgme.so.7
#13 0x00007ffff6bdbb61 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#14 0x00007ffff77070cf in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#15 0x00007ffff6bafc3a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#16 0x00007ffff6bb2661 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5
#17 0x00007ffff6c079f3 in  () at /usr/lib64/libQt5Core.so.5
#18 0x00007fffede0d2b7 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#19 0x00007fffede0d638 in  () at /usr/lib64/libglib-2.0.so.0
#20 0x00007fffede0d6ef in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#21 0x00007ffff6c0707f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#22 0x00007ffff6bae5fb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#23 0x00007ffff6bb6860 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#24 0x0000555555558fc7 in  ()
#25 0x00007ffff6579cca in __libc_start_main () at /lib64/libc.so.6
#26 0x000055555555961a in  ()
Comment 3 Sandro Knauß 2021-02-22 00:14:17 UTC
Fixed in 5.16.1 released in Applications 20.12.1.