Application: kgpg (22.04.3) Qt Version: 5.15.5 Frameworks Version: 5.96.0 Operating System: Linux 5.18.15-1-default x86_64 Windowing System: X11 Distribution: "openSUSE Tumbleweed" DrKonqi: 5.25.4 [KCrashBackend] -- Information about the crash: I am unable to generate a new key, as the application hangs on the "Requesting passphrase" step of creation (as seen in the desktop notification) Steps to reproduce: * Launch kgpg (either through command line or KDE desktop) * Keys > New Keypair * Follow all prompts and enter options (non expert) * Enter passphrase, hit next * Notification continues to spin, no progress is made The crash can be reproduced every time. -- Backtrace: Application: KGpg (kgpg), signal: Segmentation fault [KCrash Handler] #4 0x0000000000000040 in ?? () #5 0x00007f3351356186 in QMainWindowLayout::statusBar (this=<optimized out>) at widgets/qmainwindowlayout.cpp:2363 #6 0x00007f3351350e89 in QMainWindow::statusBar (this=this@entry=0x555d6fb5e120) at widgets/qmainwindow.cpp:586 #7 0x0000555d6f738a42 in KeysManager::changeMessage (keep=false, msg=..., this=0x555d6fb5e120) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/keysmanager.cpp:558 #8 KeysManager::slotGenerateKeyDone (this=0x555d6fb5e120, job=0x555d700319e0) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/keysmanager.cpp:568 #9 0x00007f3350681e6f in QtPrivate::QSlotObjectBase::call (a=0x7ffd3a56d190, r=0x555d6fb5e120, this=0x555d6fdea210) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #10 doActivate<false> (sender=0x555d700319e0, signal_index=6, argv=0x7ffd3a56d190) at kernel/qobject.cpp:3886 #11 0x00007f335067b22f in QMetaObject::activate (sender=sender@entry=0x555d700319e0, m=<optimized out>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7ffd3a56d190) at kernel/qobject.cpp:3946 #12 0x00007f3351a51615 in KJob::result (this=this@entry=0x555d700319e0, _t1=<optimized out>, _t1@entry=0x555d700319e0, _t2=...) at /usr/src/debug/kcoreaddons-5.96.0-1.1.x86_64/build/src/lib/KF5CoreAddons_autogen/include/moc_kjob.cpp:633 #13 0x00007f3351a557cb in KJob::finishJob (this=0x555d700319e0, emitResult=<optimized out>) at /usr/src/debug/kcoreaddons-5.96.0-1.1.x86_64/src/lib/jobs/kjob.cpp:98 #14 0x00007f3350681e6f in QtPrivate::QSlotObjectBase::call (a=0x7ffd3a56d2c0, r=0x555d700319e0, this=0x555d700355a0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #15 doActivate<false> (sender=0x555d6fe004b0, signal_index=3, argv=0x7ffd3a56d2c0) at kernel/qobject.cpp:3886 #16 0x00007f335067b22f in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x555d6f7b2e20 <KGpgTransaction::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffd3a56d2c0) at kernel/qobject.cpp:3946 #17 0x0000555d6f712b21 in KGpgTransaction::done (_t1=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/build/kgpg_lib_autogen/HHLLV3HBLL/moc_kgpgtransaction.cpp:159 #18 KGpgTransactionPrivate::processDone (this=0x555d6ffe59d0) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/transactions/kgpgtransactionprivate.cpp:308 #19 0x00007f3350681e6f in QtPrivate::QSlotObjectBase::call (a=0x7ffd3a56d380, r=0x555d6ffe59d0, this=0x555d6ffe6590) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #20 doActivate<false> (sender=0x555d7002d990, signal_index=20, argv=0x7ffd3a56d380) at kernel/qobject.cpp:3886 #21 0x00007f3350681e6f in QtPrivate::QSlotObjectBase::call (a=0x7ffd3a56d4a0, r=0x555d7002d990, this=0x555d70035870) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #22 doActivate<false> (sender=0x555d7002d990, signal_index=11, argv=0x7ffd3a56d4a0) at kernel/qobject.cpp:3886 #23 0x00007f335067b22f in QMetaObject::activate (sender=sender@entry=0x555d7002d990, m=m@entry=0x7f3350920480, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffd3a56d4a0) at kernel/qobject.cpp:3946 #24 0x00007f33505b6758 in QProcess::finished (this=this@entry=0x555d7002d990, _t1=<optimized out>, _t2=<optimized out>) at .moc/moc_qprocess.cpp:339 #25 0x00007f33505bc1a3 in QProcessPrivate::_q_processDied (this=this@entry=0x7f334400e270) at io/qprocess.cpp:1184 #26 0x00007f33505c0ac5 in QProcessPrivate::waitForFinished (this=0x7f334400e270, msecs=30000) at io/qprocess_unix.cpp:878 #27 0x00007f33505b7db5 in QProcess::waitForFinished (this=this@entry=0x555d7002d990, msecs=<optimized out>, msecs@entry=30000) at io/qprocess.cpp:1930 #28 0x00007f33505b86ed in QProcess::~QProcess (this=this@entry=0x555d7002d990, __in_chrg=<optimized out>) at io/qprocess.cpp:1266 #29 0x00007f3351a569ac in KProcess::~KProcess (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kcoreaddons-5.96.0-1.1.x86_64/src/lib/io/kprocess.cpp:41 #30 0x0000555d6f7174c2 in KLineBufferedProcess::~KLineBufferedProcess (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/klinebufferedprocess.cpp:18 #31 GPGProc::~GPGProc (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/gpgproc.cpp:157 #32 GPGProc::~GPGProc (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/gpgproc.cpp:157 #33 KGpgTransactionPrivate::~KGpgTransactionPrivate (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/transactions/kgpgtransactionprivate.cpp:47 #34 0x0000555d6f71eed4 in KGpgTransactionPrivate::~KGpgTransactionPrivate (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/transactions/kgpgtransactionprivate.cpp:48 #35 KGpgTransaction::~KGpgTransaction (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/transactions/kgpgtransaction.cpp:33 #36 KGpgGenerateKey::~KGpgGenerateKey (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/transactions/kgpggeneratekey.cpp:42 #37 KGpgGenerateKey::~KGpgGenerateKey (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/transactions/kgpggeneratekey.cpp:42 #38 0x00007f335067432e in QObjectPrivate::deleteChildren (this=this@entry=0x555d6fb0a220) at kernel/qobject.cpp:2104 #39 0x00007f3351238666 in QWidget::~QWidget (this=0x555d6fb5e120, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522 #40 0x0000555d6f7355d3 in KeysManager::~KeysManager (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/keysmanager.cpp:483 #41 0x0000555d6f6e0208 in KeysManager::~KeysManager (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/keysmanager.cpp:481 #42 KGpgApp::~KGpgApp (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/kgpg.cpp:41 #43 0x0000555d6f6df2fb in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kgpg-22.04.3-1.1.x86_64/main.cpp:75 [Inferior 1 (process 10321) detached] Reported using DrKonqi
We experience the same issue in Fedora 36
*** Bug 461373 has been marked as a duplicate of this bug. ***
It can be fixed when closing the write channel of the transaction after the %commit. This works for GnuPG 2.3, but I can't test it with 2.2 at the moment because of an unrelated library breakage by my distro.
*** Bug 451569 has been marked as a duplicate of this bug. ***
Git commit c11dadfb46b63563c70e1d33834a549c1de077e7 by Rolf Eike Beer. Committed on 14/12/2022 at 16:27. Pushed by dakon into branch 'master'. close write channel after sending new password when generating new key This fixes a hang with GnuPG 2.3 Related: bug 451569 FIXED-IN: 22.12.1 M +6 -0 tests/CMakeLists.txt A +74 -0 tests/kgpggeneratekey.cpp [License: GPL(v2.0+)] A +23 -0 tests/kgpggeneratekey.h [License: GPL(v2.0+)] A +20 -0 tests/kgpggeneratekeytesttransaction.cpp [License: GPL(v2.0+)] A +28 -0 tests/kgpggeneratekeytesttransaction.h [License: GPL(v2.0+)] M +3 -2 transactions/kgpggeneratekey.cpp M +2 -2 transactions/kgpggeneratekey.h M +4 -2 transactions/kgpgtransaction.h https://invent.kde.org/utilities/kgpg/commit/c11dadfb46b63563c70e1d33834a549c1de077e7
Git commit 9fc74c0d1d3db89998d9e995dfad2500d6e857de by Rolf Eike Beer. Committed on 14/12/2022 at 16:33. Pushed by dakon into branch 'release/22.12'. close write channel after sending new password when generating new key This fixes a hang with GnuPG 2.3 FIXED-IN: 22.12.1 (cherry picked from commit c11dadfb46b63563c70e1d33834a549c1de077e7) M +6 -0 tests/CMakeLists.txt A +74 -0 tests/kgpggeneratekey.cpp [License: GPL(v2.0+)] A +23 -0 tests/kgpggeneratekey.h [License: GPL(v2.0+)] A +20 -0 tests/kgpggeneratekeytesttransaction.cpp [License: GPL(v2.0+)] A +28 -0 tests/kgpggeneratekeytesttransaction.h [License: GPL(v2.0+)] M +3 -2 transactions/kgpggeneratekey.cpp M +2 -2 transactions/kgpggeneratekey.h M +4 -2 transactions/kgpgtransaction.h https://invent.kde.org/utilities/kgpg/commit/9fc74c0d1d3db89998d9e995dfad2500d6e857de