Bug 373408

Summary: kgpg segfault on boot and every later run
Product: [Applications] kgpg Reporter: Edward <edwardb_kde>
Component: generalAssignee: Rolf Eike Beer <kde>
Status: RESOLVED FIXED    
Severity: crash CC: k.zimmermann, robnk
Priority: NOR Keywords: drkonqi
Version: git   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In: 16.12.0
Sentry Crash Report:

Description Edward 2016-12-08 02:39:25 UTC
Application: kgpg (16.11.90)

Qt Version: 5.6.1
Frameworks Version: 5.26.0
Operating System: Linux 4.4.27-2-default x86_64
Distribution: "openSUSE Leap 42.2"

-- Information about the crash:
- What I was doing when the application crashed:
- 2016-12-07
- kgpg segfault on rebooting openSuSE 42.2.
- and on every subsequent attempt to start kgpg.

Information for package kgpg:
-----------------------------
Repository     : kde-applications
Name           : kgpg
Version        : 16.11.90-2.3
Arch           : x86_64
Vendor         : obs://build.opensuse.org/KDE
Installed Size : 2.0 MiB
Installed      : Yes
Status         : up-to-date
Summary        : Encryption Tool
Description    :
    Kgpg is a simple GUI for gpg

But note that, besides the standard default package repos, I also have the following enabled:
kde-applications | http://download.opensuse.org/repositories/KDE:/Applications/openSUSE_Leap_42.2/
kde-extra| http://download.opensuse.org/repositories/KDE:/Extra/openSUSE_Leap_42.2/

So it is possible that I have an unstable mix of libraries present.
I would be happy to install specific versions of kgpg and/or whatever libraries in order to help troubleshoot this; just let me know.
Thanks.

-- Backtrace:
Application: KGpg (kgpg), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fa16f559900 (LWP 2488))]

Thread 4 (Thread 0x7fa13fdf9700 (LWP 2531)):
#0  0x00007fa1690e949d in poll () at /lib64/libc.so.6
#1  0x00007fa163ce4314 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fa163ce442c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fa169c0732b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fa169bb4fdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fa1699eff1a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fa1699f49e9 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007fa165118734 in start_thread () at /lib64/libpthread.so.0
#8  0x00007fa1690f1d3d in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7fa14da01700 (LWP 2498)):
#0  0x00007fa1690e551d in read () at /lib64/libc.so.6
#1  0x00007fa163d24670 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fa163ce3e49 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fa163ce42a8 in  () at /usr/lib64/libglib-2.0.so.0
#4  0x00007fa163ce442c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#5  0x00007fa169c0732b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#6  0x00007fa169bb4fdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#7  0x00007fa1699eff1a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#8  0x00007fa16a2771d5 in  () at /usr/lib64/libQt5DBus.so.5
#9  0x00007fa1699f49e9 in  () at /usr/lib64/libQt5Core.so.5
#10 0x00007fa165118734 in start_thread () at /lib64/libpthread.so.0
#11 0x00007fa1690f1d3d in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7fa14f847700 (LWP 2496)):
#0  0x00007fa1690e949d in poll () at /lib64/libc.so.6
#1  0x00007fa1644073e2 in  () at /usr/lib64/libxcb.so.1
#2  0x00007fa164408fcf in xcb_wait_for_event () at /usr/lib64/libxcb.so.1
#3  0x00007fa151d5b839 in  () at /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007fa1699f49e9 in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007fa165118734 in start_thread () at /lib64/libpthread.so.0
#6  0x00007fa1690f1d3d in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7fa16f559900 (LWP 2488)):
[KCrash Handler]
#6  0x0000000000438988 in KgpgCore::KgpgKeySubPrivate::KgpgKeySubPrivate(QString const&, unsigned int, QFlags<KgpgCore::KgpgKeyTrustFlag>, QFlags<KgpgCore::KgpgKeyAlgoFlag>, QFlags<KgpgCore::KgpgSubKeyTypeFlag>, QDateTime const&, QString const&) (__m=std::memory_order_relaxed, this=0x300000001) at /usr/include/c++/4.8/bits/atomic_base.h:496
#7  0x0000000000438988 in KgpgCore::KgpgKeySubPrivate::KgpgKeySubPrivate(QString const&, unsigned int, QFlags<KgpgCore::KgpgKeyTrustFlag>, QFlags<KgpgCore::KgpgKeyAlgoFlag>, QFlags<KgpgCore::KgpgSubKeyTypeFlag>, QDateTime const&, QString const&) (_q_value=...) at /usr/include/qt5/QtCore/qatomic_cxx11.h:96
#8  0x0000000000438988 in KgpgCore::KgpgKeySubPrivate::KgpgKeySubPrivate(QString const&, unsigned int, QFlags<KgpgCore::KgpgKeyTrustFlag>, QFlags<KgpgCore::KgpgKeyAlgoFlag>, QFlags<KgpgCore::KgpgSubKeyTypeFlag>, QDateTime const&, QString const&) (this=0x300000001) at /usr/include/qt5/QtCore/qbasicatomic.h:116
#9  0x0000000000438988 in KgpgCore::KgpgKeySubPrivate::KgpgKeySubPrivate(QString const&, unsigned int, QFlags<KgpgCore::KgpgKeyTrustFlag>, QFlags<KgpgCore::KgpgKeyAlgoFlag>, QFlags<KgpgCore::KgpgSubKeyTypeFlag>, QDateTime const&, QString const&) (this=0x300000001) at /usr/include/qt5/QtCore/qrefcount.h:49
#10 0x0000000000438988 in KgpgCore::KgpgKeySubPrivate::KgpgKeySubPrivate(QString const&, unsigned int, QFlags<KgpgCore::KgpgKeyTrustFlag>, QFlags<KgpgCore::KgpgKeyAlgoFlag>, QFlags<KgpgCore::KgpgSubKeyTypeFlag>, QDateTime const&, QString const&) (other=..., this=0xc89d08) at /usr/include/qt5/QtCore/qstring.h:890
#11 0x0000000000438988 in KgpgCore::KgpgKeySubPrivate::KgpgKeySubPrivate(QString const&, unsigned int, QFlags<KgpgCore::KgpgKeyTrustFlag>, QFlags<KgpgCore::KgpgKeyAlgoFlag>, QFlags<KgpgCore::KgpgSubKeyTypeFlag>, QDateTime const&, QString const&) (this=0xc89cd0, id=..., size=<optimized out>, trust=..., algo=..., type=..., date=..., curve=...) at /usr/src/debug/kgpg-16.11.90/core/kgpgkey.cpp:55
#12 0x0000000000438aad in KgpgCore::KgpgKeySub::KgpgKeySub(QString const&, unsigned int, QFlags<KgpgCore::KgpgKeyTrustFlag>, QFlags<KgpgCore::KgpgKeyAlgoFlag>, QFlags<KgpgCore::KgpgSubKeyTypeFlag>, QDateTime const&, QString const&) (this=0x7ffd1a9de570, id=..., size=2048, trust=..., algo=..., type=..., date=..., curve=...) at /usr/src/debug/kgpg-16.11.90/core/kgpgkey.cpp:74
#13 0x00000000004ac57c in readPublicKeysProcess(GPGProc&, KGpgKeyNode*) (p=..., readNode=readNode@entry=0x0) at /usr/src/debug/kgpg-16.11.90/kgpginterface.cpp:206
#14 0x00000000004aec60 in KgpgInterface::readPublicKeys(QStringList const&) (ids=...) at /usr/src/debug/kgpg-16.11.90/kgpginterface.cpp:302
#15 0x0000000000441de6 in KGpgRootNode::addKeys(QStringList const&) (this=0xc8ce60, ids=...) at /usr/src/debug/kgpg-16.11.90/core/KGpgRootNode.cpp:70
#16 0x0000000000454d3c in KGpgItemModel::refreshAllKeys() (this=0xc8c260) at /usr/src/debug/kgpg-16.11.90/model/kgpgitemmodel.cpp:474
#17 0x0000000000489ca0 in KeysManager::refreshkey() (this=0xc3e400) at /usr/src/debug/kgpg-16.11.90/keysmanager.cpp:2648
#18 0x00000000004e9fca in KeysManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0xc3e400, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /usr/src/debug/kgpg-16.11.90/build/moc_keysmanager.cpp:431
#19 0x00007fa169be2166 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#20 0x00007fa16addc6cb in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#21 0x00007fa16aeed0cb in QMainWindow::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#22 0x00007fa16d76a4f7 in KMainWindow::event(QEvent*) () at /usr/lib64/libKF5XmlGui.so.5
#23 0x00007fa16d7a6865 in KXmlGuiWindow::event(QEvent*) () at /usr/lib64/libKF5XmlGui.so.5
#24 0x00007fa16ad9ae3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#25 0x00007fa16ad9f49a in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#26 0x00007fa169bb6fc5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#27 0x00007fa169bb8daa in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5
#28 0x00007fa169c07c83 in  () at /usr/lib64/libQt5Core.so.5
#29 0x00007fa163ce4134 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#30 0x00007fa163ce4388 in  () at /usr/lib64/libglib-2.0.so.0
#31 0x00007fa163ce442c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#32 0x00007fa169c0730c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#33 0x00007fa169bb4fdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#34 0x00007fa169bbcec6 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#35 0x0000000000435bc2 in main(int, char**) (argc=1, argv=<optimized out>) at /usr/src/debug/kgpg-16.11.90/main.cpp:84

Reported using DrKonqi
Comment 1 Rolf Eike Beer 2016-12-09 18:34:31 UTC
Git commit 86b868474fb9b9eb1bf7092bc5cc7aae03f4090e by Rolf Eike Beer.
Committed on 08/12/2016 at 12:35.
Pushed by dakon into branch 'Applications/16.12'.

fix crash when GnuPG does not output curve fields for keys, take 2

This is also needed for subkeys.

Related: bug 371410

M  +2    -1    kgpginterface.cpp

https://commits.kde.org/kgpg/86b868474fb9b9eb1bf7092bc5cc7aae03f4090e
Comment 2 Rolf Eike Beer 2016-12-21 22:25:32 UTC
*** Bug 373994 has been marked as a duplicate of this bug. ***
Comment 3 Rolf Eike Beer 2017-01-03 21:47:56 UTC
Git commit ac2ca301c6ef2d02810b762c618f1ce504382c4e by Rolf Eike Beer.
Committed on 03/01/2017 at 21:47.
Pushed by dakon into branch 'Applications/16.12'.

fix crash when GnuPG does not output curve fields for keys, take 3

secret keys, it is.
Related: bug 374509, bug 371410
FIXED-IN:16.12.1

M  +2    -1    kgpginterface.cpp

https://commits.kde.org/kgpg/ac2ca301c6ef2d02810b762c618f1ce504382c4e
Comment 4 Rolf Eike Beer 2017-01-06 00:00:50 UTC
*** Bug 374609 has been marked as a duplicate of this bug. ***
Comment 5 RobinK 2017-01-08 20:31:24 UTC
16.12 fixed it.  Thanks