Version: 1.9.1 (using 4.00.80 (KDE 4.0.80 >= 20080104), Gentoo) Compiler: i686-pc-linux-gnu-gcc OS: Linux (i686) release 2.6.23-gentoo-r3 When you delete a keypair in kgpg, the GUI is not updated and still shows the now deleted keypair. If you try to access that keypair, kgpg crashes. Steps to reproduce: 1) Delete a keypair (note that the keypair is still shown in kgpg) 2) Expand the deleted keypair (e.g. double click on it) Backtrace: Application: KGpg (kgpg), signal SIGABRT Using host libthread_db library "/lib/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread 0xb5f996d0 (LWP 14475)] [New Thread 0xb4b25b90 (LWP 14492)] [KCrash handler] #6 0xffffe410 in __kernel_vsyscall () #7 0xb62271f1 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #8 0xb62289b8 in *__GI_abort () at abort.c:88 #9 0xb7c98265 in qt_message_output (msgType=QtFatalMsg, buf=0xbfb3c95c "ASSERT failure in QList<T>::at: \"index out of range\", file /usr/include/qt4/QtCore/qlist.h, line 384") at global/qglobal.cpp:2160 #10 0xb7c9832a in qFatal ( msg=0xb7d9f7f4 "ASSERT failure in %s: \"%s\", file %s, line %d") at global/qglobal.cpp:2392 #11 0xb7c9837c in qt_assert_x (where=0x80e6efb "QList<T>::at", what=0x80e6ee8 "index out of range", file=0x80e6ec8 "/usr/include/qt4/QtCore/qlist.h", line=384) at global/qglobal.cpp:1925 #12 0x08074af9 in QList<KgpgCore::KgpgKey>::at (this=0xbfb3ea08, i=0) at /usr/include/qt4/QtCore/qlist.h:384 #13 0x080d7f1e in KGpgKeyNode::readChildren (this=0x8376508) at /var/tmp/portage/kde-base/kdeutils-9999.4/work/kdeutils-9999.4/kgpg/kgpgitemnode.cpp:211 #14 0x080d66a6 in KGpgExpandableNode::getChildCount (this=0x8376508) at /var/tmp/portage/kde-base/kdeutils-9999.4/work/kdeutils-9999.4/kgpg/kgpgitemnode.cpp:61 #15 0xb6a99680 in QSortFilterProxyModelPrivate::create_mapping ( this=0x81c3d30, source_parent=@0xbfb3eb4c) at itemviews/qsortfilterproxymodel.cpp:258 #16 0xb6a9b21b in QSortFilterProxyModel::rowCount (this=0x81c2808, parent=@0xbfb3ec0c) at itemviews/qsortfilterproxymodel.cpp:1458 #17 0xb6a532f0 in QTreeViewPrivate::layout (this=0x81c4328, i=1) at itemviews/qtreeview.cpp:2758 #18 0xb6a536bf in QTreeViewPrivate::expand (this=0x81c4328, item=1, emitSignal=true) at itemviews/qtreeview.cpp:2562 #19 0xb6a54a1d in QTreeView::mousePressEvent (this=0x81c4308, event=0xbfb3f694) at itemviews/qtreeview.cpp:1572 #20 0xb65a09be in QWidget::event (this=0x81c4308, event=0xbfb3f694) at kernel/qwidget.cpp:6134 #21 0xb68e3073 in QFrame::event (this=0x81c4308, e=0xbfb3f694) at widgets/qframe.cpp:655 #22 0xb697b7ec in QAbstractScrollArea::viewportEvent (this=0x388b, e=0x6) at widgets/qabstractscrollarea.cpp:924 #23 0xb6a175d0 in QAbstractItemView::viewportEvent (this=0x81c4308, event=0xbfb3f694) at itemviews/qabstractitemview.cpp:1369 #24 0xb6a50cc2 in QTreeView::viewportEvent (this=0x81c4308, event=0xbfb3f694) at itemviews/qtreeview.cpp:1203 #25 0xb697d6b2 in QAbstractScrollAreaFilter::eventFilter (this=0x81c5488, o=0x81c5400, e=0xbfb3f694) at widgets/qabstractscrollarea_p.h:93 #26 0xb654dd9b in QApplicationPrivate::notify_helper (this=0x8110e50, receiver=0x81c5400, e=0xbfb3f694) at kernel/qapplication.cpp:3548 #27 0xb654fa2c in QApplication::notify (this=0x810fe20, receiver=0x81c5400, e=0xbfb3f694) at kernel/qapplication.cpp:3255 #28 0xb78ee543 in KApplication::notify (this=0x810fe20, receiver=0x81c5400, event=0xbfb3f694) at /var/tmp/portage/kde-base/kdelibs-9999.4/work/kdelibs-9999.4/kdeui/kernel/kapplication.cpp:310 #29 0xb7d6ad7b in QCoreApplication::notifyInternal (this=0x810fe20, receiver=0x81c5400, event=0xbfb3f694) at kernel/qcoreapplication.cpp:530 #30 0xb65b3628 in QETWidget::translateMouseEvent (this=0x81c5400, event=0xbfb3fa58) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:203 #31 0xb65b1e8e in QApplication::x11ProcessEvent (this=0x810fe20, event=0xbfb3fa58) at kernel/qapplication_x11.cpp:2913 #32 0xb65d7c45 in QEventDispatcherX11::processEvents (this=0x810fde8, flags=@0xbfb3fb44) at kernel/qeventdispatcher_x11.cpp:125 #33 0xb7d6a191 in QEventLoop::processEvents (this=0xbfb3fbb0, flags=@0xbfb3fb78) at kernel/qeventloop.cpp:140 #34 0xb7d6a29a in QEventLoop::exec (this=0xbfb3fbb0, flags=@0xbfb3fbb8) at kernel/qeventloop.cpp:186 #35 0xb7d6c626 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:759 #36 0xb654d487 in QApplication::exec () at kernel/qapplication.cpp:3053 #37 0x080a4204 in main (argc=3, argv=0xbfb3fd94) at /var/tmp/portage/kde-base/kdeutils-9999.4/work/kdeutils-9999.4/kgpg/main.cpp:59 #38 0xb6213fdc in __libc_start_main (main=0x80a3a70 <main>, argc=3, ubp_av=0xbfb3fd94, init=0x80e5290 <__libc_csu_init>, fini=0x80e5280 <__libc_csu_fini>, rtld_fini=0xb7fdc100 <_dl_fini>, stack_end=0xbfb3fd8c) at libc-start.c:229 #39 0x08069111 in _start () #0 0xffffe410 in __kernel_vsyscall ()
how did you actually manage the keypair not to be deleted from the view? If I try to reproduce they get deleted also from the view.
Hm, I just clicked on "delete keypair" :-) The keypair in question then did not get deleted from the view. I'll attach a little video that shows what I do. The video is with kdeutils r771045.
Created attachment 23955 [details] Video showing how to reproduce bug# 156875 Going through my old bugrepors I just saw that I never uploaded the promised video for this crash. As this bug is still valid in a current SVN build, I attached a video on how to reproduce the crash.
Please start KGpg from a terminal and put the output here when you let it crash.
Hi, here is the konsole output. Regrettably its not too verbose. If there is a possibility to make kgpg print out more info, just tell me and I'll re-crash it. kdesvn@Remus ~ $ kgpg kgpg(5817)/kdecore (KLocale) KLocalePrivate::initEncoding: Defaulting to ISO 8859-1 encoding. kgpg(5817) KgpgAppletApp::newInstance: New instance kgpg(5817) KgpgAppletApp::newInstance: Starting KGpg Link points to "/tmp/kdesvn-kde4/kde-kdesvn" kgpg(5817)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::KCoreConfigSkeleton: Creating KCoreConfigSkeleton ( 0x81bcf38 ) kgpg(5817)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::readConfig: KCoreConfigSkeleton::readConfig() QSystemTrayIcon::setVisible: No Icon set kdesvn@Remus ~ $ kgpg(5817)/kdeui (KNotification) KNotification::slotReceivedId: 0 kgpg(5817)/kdeui (KNotification) KNotification::~KNotification: 0 ASSERT failure in QList<T>::at: "index out of range", file /usr/include/qt4/QtCore/qlist.h, line 393 KCrash: crashing... crashRecursionCounter = 2 KCrash: Application Name = kgpg path = <unknown> pid = 5817 sock_file=/home/kdesvn/.kde4/socket-Remus/kdeinit4__0 Warning: connect() failed: : No such file or directory KCrash cannot reach kdeinit, launching directly. drkonqi(5830)/kdecore (KLocale) KLocalePrivate::initEncoding: Defaulting to ISO 8859-1 encoding.
SVN commit 789986 by dakon: Implement deleting a key pair by deleting the key pair Weird, isn't it? If you delete a public key (which may or may be not a part of a key pair) you have to invalidate all signatures from this key. Until now after deleting a secret key all secret keys were simply reloaded. This was wrong in multiple different ways as it did not do everything expected. Also it is inefficient to reload multiple keys. Now that we have notifications between public keys and signature it's much cleaner: delete the key node if it is gone from keyring and that's it. BUG:156875 This one should be really gone now. There is no chance that the key pair is still there if the key is deleted. At least I hope so ;) M +19 -4 keysmanager.cpp M +2 -1 keysmanager.h M +1 -1 kgpgitemmodel.cpp M +1 -1 kgpgitemmodel.h WebSVN link: http://websvn.kde.org/?view=rev&revision=789986