Summary: | [PATCH] Crash when switching message while GPG passphrase entry dialog is shown | ||
---|---|---|---|
Product: | [Unmaintained] kmail | Reporter: | Melchior Franz <mfranz> |
Component: | encryption | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | bvg.kdebug, dominik.tritscher, henrik, horstnagel, iacp, joost.decock, jtamate, julian, kdebugs, lampacz, mjhweb-kdebugs, olistrut, skquinn, spammail01, stevem |
Priority: | NOR | Keywords: | triaged |
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
Small patch...
Patch correcting issue kcrash file of the described SIGSEGV |
Description
Melchior Franz
2003-01-20 12:14:15 UTC
Reproduceable here, and sursprisingly hard to fix, from a first stab. Maybe I'm thick, though, I'll look into it. *** Bug 61749 has been marked as a duplicate of this bug. *** *** Bug 62031 has been marked as a duplicate of this bug. *** *** Bug 49625 has been marked as a duplicate of this bug. *** Can you still reproduce this? I can't ... Subject: Re: crash when password dialog exited and meanwhile different message selected
* Carsten Burghardt -- Wednesday 26 November 2003 20:18:
> Can you still reproduce this? I can't ...
Yes. Exactly the same (mis-)behavior in a fresh kmail
from yesterday evening (2003-11-26).
*** Bug 73543 has been marked as a duplicate of this bug. *** *** Bug 74921 has been marked as a duplicate of this bug. *** This still happens with kmail 1.6/kde 3.2 release. I run into this frequently as I tend to scroll through folder contents using the cursor keys and if I don't have kmail set to cache my pgp passphrase (which I'd rather not do), skipping past an encrypted mail will invariably crash kmail. If I can do anything to help fix this, let me know. The same effect can be reproduced in another way: - put first an unencrypted and then an encrypted message into the outbox - select the outbox - select the unencrypted message in the message list - press the sendbutton - the unencrypted message is send - kmail selects the encrypted message - the passphrase dialog pops up - cancel the dialog (or fill in the pwd and hit OK; doesn't matter) - kmail crashs :( (fortunately meanwhile the mail is send correctly, even if there are more messages they will be send, until you leave the dialog alone ...) I can't reproduce the bug with kmail 1.7 / kde 3.3.0 I used to have this problem with earlier versions of KMail, but works fine with 1.7.1 Cool! i can still reproduce this bug with kde 3.3.0/3.4.0 in a bit different way: 1. i select an encrypted message 2. the gpg-enter passphrase dialog appears 3. i click back to the kmail main window and select another message 4. i close the gpg-dialog 5. kmail crashes still present in kmail 1.8 on 3.4.0 and I regularly run into this error. To speculate in non-programmer's language, I'd say that kmail crashes because it doesn't know which message to display. The gpg dialog applies to a message that is no longer active. Cancelling the dialog should show the raw text of the encrypted message. However, that one is no longer selected/active. Selected is another message, be it encrypted or not doesn't matter. So either prevent selection of a different message for as long as the gpg dialog is open or automatically cancel the gpg dialog as soon as a different message is selected. Using host libthread_db library "/lib/tls/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1246935360 (LWP 25779)] [KCrash handler] #7 0xb7ed1ee7 in partNode::processed (this=0x22222222) at partNode.h:231 #8 0xb7ead2c8 in KMReaderWin::parseMsg (this=0x824c6d8, aMsg=0x83e5430) at kmreaderwin.cpp:1425 #9 0xb7e0b9af in KMReaderWin::displayMessage (this=0x824c6d8) at kmreaderwin.cpp:1360 #10 0xb7e0bb67 in KMReaderWin::updateReaderWin (this=0x824c6d8) at kmreaderwin.cpp:1302 #11 0xb7ea096d in KMReaderWin::qt_invoke (this=0x824c6d8, _id=48, _o=0xbfffef9c) at kmreaderwin.moc:273 #12 0xb741c21d in QObject::activate_signal () from /usr/lib/qt3/lib/libqt-mt.so.3 #13 0xb719ccf0 in ?? () from /usr/lib/libstdc++.so.6 #14 0x084049c0 in ?? () #15 0xbfffef58 in ?? () #16 0xb71785d1 in operator delete () from /usr/lib/libstdc++.so.6 I am still experiencing this bug, too. KMail 1.8.2, KDE 3.4.2, Debian/Etch. I am *still* seeing this behaviour with KMail 1.9.5, KGPG 1.2.2, gpg 1.4.3, all standard Kubuntu 6.10 packages. Why was this bug marked closed? Still here, with KDE 3.5.6, kmail 1.9.6. Please, reopen! Reopening due to some "still can reproduce" reports. *** Bug 146454 has been marked as a duplicate of this bug. *** *** Bug 148693 has been marked as a duplicate of this bug. *** *** Bug 149132 has been marked as a duplicate of this bug. *** Hi there, I reported a similar issue, although from the looks of it, the problems might be slightly different from one another. Anyway, for more details look at http://bugs.kde.org/show_bug.cgi?id=149132 aMsg is not valid any more once we come back from the object tree parsing, so I figured that adding a check to see if the current message is aMsg should do the trick there. It fixed my problem, no more crashes, however I don't know if it might raise some other issues. Maybe some dev could tell us if this is too unorthodox or not. From the looks of it, the aMsg passed to KMReaderWin::parseMsg is initialized to KMReader::message within KMReader::displayMessage, no other call to parseMsg is made elsewhere in the code. Therefore it seems rather safe to make the assumption that this patch should not introduce other problems, but I think that we'll need another opinion on this matter. acp Created attachment 21468 [details]
Small patch...
I'm sending an updated version of the patch, I realized that actually the reader window didn't show the newly selected message, so a call to displayMessage was needed. Sorry for the messy first attempt. Alexis Created attachment 21475 [details]
Patch correcting issue
Meanwhile, I can no longer reproduce this behaviour using KMail 1.9.9 under KDE 3.5.9 (taken from KDEMod, a KDE distribution for ArchLinux) *and* pinentry installed. After conversing with Daniel Hahler, it seems that installing pinentry fixes this problem. Hence, wouldn't it be sufficient to apply the solution discussed under Bug 92619 (Possibility for KMail to view all encrypted emails if gpg-agent is not running)? Hi there, it's been a while since I looked at KMail's code, but I don't think that the two bugs you mention are related. From what I recall, bug 92619 fixed the fact that no dialog was shown to enter a password to decrypt a message. Here we get the dialog but if you select another mail and press OK (on the dialog) KMail crashes... I don't know the internals, but it crashes with a passphrase somewhere in the memory. To me that sounds like it should be treated seriously until someone can confirm that the passphrase is safe. This bug apparently has not been fixed as of the following version (package installed from Ubuntu Hardy repository): Qt: 3.3.8b KDE: 3.5.9 KMail: 1.9.9 To reproduce this bug: 1. Visit a folder that contains some encrypted messages. 2. Click on an encrypted message (if one is not already selected). A dialog box entitled "OpenPGP Security Check - KMail" will appear asking, "Please enter your OpenPGP passphrase:" 3. Ignore this dialog box and select another message. At this point a warning will be issued to stderr: kmail: WARNING: The root node is not yet processed! Danger! 4. Now, no matter what you do with that dialog box, whether you enter a passphrase or not, whether you click OK or Cancel, KMail will crash: *** KMail got signal 11 (Crashing) KCrash: Application 'kmail' crashing... This seems to be fixed in KDE4.1 First of all, the password dialog is not shown by simply selecting an unencrypted mail, you have to klick a link-button within the mail. Additionally the password dialog is a modal popup, so it's not possible to do anything else in the kmail window. I tried selecting another mail anyways and kmail doesn't crash when the password dialog disappears (either on cancel or entering password). It works for me also. Hi there, I've tried it and I still get a crash on KDE 4.2.4 (debian packages), KMail 1.11.4. @Dominik: If I'm not mistaken, whether the password dialog shows up automatically or nor is configurable (Settings > Configure KMail > Security > Attempt decryption of encrypted messages when viewing). [For some strange reason this setting is discarded for some mails and every time I click on them I get the dialog; might have something to do with how encryption was performed: inline, MIME, etc.] Anyway, when the pinentry dialog pops up, I just come back to KMail and click on another mail or folder (anything that changes the currently displayed messages will probably do). Although nothing happens immediately (it's a modal window as you suggested), the click is registered and performed right after the pinentry dialog closes. If I press CANCEL on the pinentry dialog, KMail changes the active message and crashes right after. I don't have broadband internet access to get the 4.3 packages from sid (although I doubt this was fixed in the meanwhile, given that this bug report was closed way back) and cannot check the source code, etc. In the meantime, can someone else test this and if confirmed, please reopen the bug? WORKSFORME with SVN/HEAD ("4.4pre"). No crashes, no matter how brutal I was. Can't say anything about 4.3, but given that it was just released I assume it works there, too. Hello, just in case, do you also get a pinentry dialog or is there also a kmail/kde specific one as fallback? I'll try svn as soon as I get a decent internet connection... The window title says "pinentry-qt". Didn't see any other password input dialog. The problem still exists for kde-4.3.0-1 (Debian/SID/using pinentry-qt) - but in a different matter than it was in early stages. In early stages kmail crashed when selecting another folder while the pinentry dialog was still open. At the moment I can create a SIGSEGV in the following way: 1. select an encrypted email and wait till the pinentry dialog pops up 2. now the keyboard "doesn't work anymore" (read: I can enter my pin but I'm unable to use other keys like <Alt>+<Tab>, ...) 3. in this state use the mouse to click through the kmail folders (You don't see anything happen because kmail blocks while the pinentry dialog is still open!) 4. close the pinentry dialog (by entering your passphrase or clicking cancel) 5. now you can watch kmail processing the queued mouse-clicks (the ones from step 3). After some (or all?) of them are through I get the SIGSEGV again... - Konsole output: QGpgMEProgressTokenMapper::map( "-&30" 63 ) QGpgMEProgressTokenMapper::map( "-&30" 63 ) QPainter::begin: Widget painting can only begin as a result of a paintEvent QPainter::translate: Painter not active QPainter::setClipRect: Painter not active *** KMail got signal 11 (Crashing) KCrash: Application 'kmail' crashing... sock_file=/home/fejf/.kde/socket-fejfs/kdeinit4__0 - kcrash -> attachment Created attachment 36162 [details]
kcrash file of the described SIGSEGV
Yeap, that's exactly it; same thing here. I think the bug is the same, just the way to trigger it has slightly changed from the fact that the dialog is now a modal one... Imho it should be reopened. Bug is still here, and the fix proposed (https://bugs.kde.org/attachment.cgi?id=21475) still works (tested on KDEPIM 4.3.1 [KMail 1.12.1]), although the line is not the same (the KMReaderWin::parseMsg function has not changed fundamentally though, therefore posting a new patch is imho useless). Please reopen the bug, since it DOES NOT work for everyone (3, 4 cases reported on several different versions): try following the guidelines provided above by Florian. I'm also copying the crash report (kmail was executed with --nofork to make the output more obvious): Application: KMail (kmail), signal: Segmentation fault [KCrash Handler] #6 0xb65e3b41 in typeinfo for QGroupBox () from /usr/lib/libQtGui.so.4 #7 0x880804ce in ?? () #8 0xb7347aab in KMReaderWin::displayMessage (this=0x858a048) at /home/alex/kmail/kdepim-4.3.1/kmail/kmreaderwin.cpp:1605 #9 0xb7347cc0 in KMReaderWin::updateReaderWin (this=0x85168d0) at /home/alex/kmail/kdepim-4.3.1/kmail/kmreaderwin.cpp:1545 #10 0xb73546e7 in KMReaderWin::qt_metacall (this=0x85168d0, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0xbfa4ab38) at /home/alex/kmail/kdepim-4.3.1-build/kmail/kmreaderwin.moc:168 #11 0xb68b7b33 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4 #12 0xb68b8782 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #13 0xb68f3177 in QTimer::timeout() () from /usr/lib/libQtCore.so.4 #14 0xb68bde9e in QTimer::timerEvent(QTimerEvent*) () from /usr/lib/libQtCore.so.4 #15 0xb68b2bcf in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4 #16 0xb5d86814 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #17 0xb5d8e97e in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #18 0xb7d504ad in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5 #19 0xb68a29cb in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 #20 0xb68d1361 in ?? () from /usr/lib/libQtCore.so.4 #21 0xb68cd900 in ?? () from /usr/lib/libQtCore.so.4 #22 0xb42a84b8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #23 0xb42aba13 in ?? () from /usr/lib/libglib-2.0.so.0 #24 0xb42abb98 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #25 0xb68cd858 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #26 0xb5e25fd5 in ?? () from /usr/lib/libQtGui.so.4 #27 0xb68a101a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #28 0xb68a1462 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #29 0xb68a38b9 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4 #30 0xb5d86697 in QApplication::exec() () from /usr/lib/libQtGui.so.4 #31 0x0804a800 in main (argc=) at /home/alex/kmail/kdepim-4.3.1/kmail/main.cpp:146 SVN commit 1059860 by winterz: No time like a beta test to finally commit the patch for the old parseMsg() crash. Let's try it and see if anyone complains. Don't backport. MERGE: e4,akonadi-ports BUG: 53185 M +5 -0 kmreaderwin.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1059860 |