| Summary: | Crash on closing compose-window which is prompting for passphrase | ||
|---|---|---|---|
| Product: | [Unmaintained] kmail | Reporter: | Remco <rkj> |
| Component: | general | Assignee: | kdepim bugs <pim-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Gentoo Packages | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: | backtrace | ||
|
Description
Remco
2005-09-29 18:34:58 UTC
Does the problem still exist in KDE 3.5? Do you get a backtrace? Created attachment 17829 [details]
backtrace
The backtrace I got. Unfortunately I don't have debugging symbols compiled in.
The problem is still existent in KDE 3.5. I've attached the backtrace to this issue, but I don't think it's very informative. Please paste the first ~10 calls from backtraces, as it allows the "search for similar crashes" feature to work. Thanks! #4 0xb583587c in MessageComposer::composeMessage () from /usr/kde/3.5/lib/libkmailprivate.so #5 0xb58331cc in MessageComposer::composeMessage () from /usr/kde/3.5/lib/libkmailprivate.so #6 0xb583bd92 in ComposeMessageJob::execute () from /usr/kde/3.5/lib/libkmailprivate.so #7 0xb582e78c in MessageComposer::slotDoNextJob () from /usr/kde/3.5/lib/libkmailprivate.so #8 0xb583ae93 in MessageComposer::qt_invoke () from /usr/kde/3.5/lib/libkmailprivate.so #9 0xb6749593 in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3 #10 0xb6a7d4d8 in QSignal::signal () from /usr/qt/3/lib/libqt-mt.so.3 #11 0xb676312f in QSignal::activate () from /usr/qt/3/lib/libqt-mt.so.3 #12 0xb676a7d3 in QSingleShotTimer::event () from /usr/qt/3/lib/libqt-mt.so.3 #13 0xb66ee07c in QApplication::internalNotify () from /usr/qt/3/lib/libqt-mt.so.3 #14 0xb66ed41d in QApplication::notify () from /usr/qt/3/lib/libqt-mt.so.3 #15 0xb6d349d2 in KApplication::notify () from /usr/kde/3.5/lib/libkdecore.so.4 #16 0xb66ddb09 in QEventLoop::activateTimers () from /usr/qt/3/lib/libqt-mt.so.3 Only happens when gpg-agent is not used. With gpg-agent, the composer window is disabled. SVN commit 645446 by wstephens:
Disallow closing the composer window whilst performing a sign operation, this causes a crash when using the non-gpg-agent PGP backend.
BUG: 113580
M +2 -0 kmcomposewin.cpp
M +4 -3 messagecomposer.cpp
M +2 -0 messagecomposer.h
--- branches/KDE/3.5/kdepim/kmail/kmcomposewin.cpp #645445:645446
@@ -2055,6 +2055,8 @@
return false;
if ( kmkernel->shuttingDown() || kapp->sessionSaving() )
return true;
+ if ( mComposer && mComposer->isPerformingSignOperation() ) // since the non-gpg-agent gpg plugin gets a passphrase using QDialog::exec()
+ return false; // the user can try to close the window, which destroys mComposer mid-call.
if ( isModified() ) {
bool istemplate = ( mFolder!=0 && mFolder->isTemplates() );
--- branches/KDE/3.5/kdepim/kmail/messagecomposer.cpp #645445:645446
@@ -287,7 +287,7 @@
MessageComposer::MessageComposer( KMComposeWin* win, const char* name )
: QObject( win, name ), mComposeWin( win ), mCurrentJob( 0 ),
- mKeyResolver( 0 ), mIdentityUid( 0 )
+ mKeyResolver( 0 ), mIdentityUid( 0 ), mPerformingSignOperation( false )
{
}
@@ -1590,9 +1590,10 @@
}
if ( doSignBody ) {
-
+ mPerformingSignOperation = true; // this lets the KMComposeWin know if it is safe to close the window.
pgpSignedMsg( mEncodedBody, format );
-
+ mPerformingSignOperation = false;
+
if ( mSignature.isEmpty() ) {
kdDebug() << "signature was empty" << endl;
mRc = false;
--- branches/KDE/3.5/kdepim/kmail/messagecomposer.h #645445:645446
@@ -92,6 +92,7 @@
return mMessageList;
}
+ bool isPerformingSignOperation() const { return mPerformingSignOperation; }
signals:
void done( bool );
@@ -273,6 +274,7 @@
QValueList<MessageComposerJob*> mJobs;
bool mEncryptWithChiasmus;
+ bool mPerformingSignOperation;
};
#endif /* MESSAGECOMPOSER_H */
|