[Kde-pim] [patch] Fix possible assertion in Kleopatra on Windows + question about assertion in Kleo::KeyCache
Jaroslaw Staniek
js at iidea.pl
Wed Jul 16 23:22:03 BST 2008
1. In AssuanServerConnection::topHalfDeletion(), fd is closed using
CloseHandle() on Windows. But 'fd' was created by WSAAccept() in
QNativeSocketEnginePrivate::nativeAccept() so (I guess) it could be closed
using closesocket(), see example at [1]. The assertion appears on Vista, so
perhaps on older OSes CloseHandle() was an no-op for this fd.
Attached patch for this.
2. I have no idea yet about this one. After fixing issue #1, kleopata starts
and displays Self-Test Results window, then immediatelly asserts. Under msvc
2005sp1, I also encountered assertion in Kleo::KeyCache,
_DEBUG_ERROR2("sequence not ordered", _File, _Line) in xutility:1450.
A backtrace pasted below [2].
If I ignore (press Ignore button), similar assertion appears again.
Pressing Ignore again I am able to press Continue in the Self-Test Results
window. Then, 2x Ignore is needed for similar assertions and Kleopatra's main
window appears.
[1] http://msdn.microsoft.com/en-us/library/ms741513(VS.85).aspx
[2]
>
kleopatra.exe!std::_Debug_order2<std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > >,`anonymous namespace'::ByEMail<std::less>
>(std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _First=("ludwig at intevation.de",{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _Last=(<Bad Ptr>,{key={...} }),
`anonymous-namespace'::ByEMail<std::less> _Pred={...}, const wchar_t *
_File=0x00798358, unsigned int _Line=2598, std::forward_iterator_tag
__formal={...}) Line 1450 + 0x15 bytes C++
kleopatra.exe!std::_Debug_order<std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > >,`anonymous namespace'::ByEMail<std::less>
>(std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _First=("ludwig.reiter at intevation.de",{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _Last=(<Bad Ptr>,{key={...} }),
`anonymous-namespace'::ByEMail<std::less> _Pred={...}, const wchar_t *
_File=0x00798358, unsigned int _Line=2598) Line 1460 + 0x5b bytes C++
kleopatra.exe!std::_Merge<std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> >
>,std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> >
>,std::back_insert_iterator<std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > >,`anonymous
namespace'::ByEMail<std::less>,std::forward_iterator_tag>(std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _First1=("ludwig.reiter at intevation.de",{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _Last1=(<Bad Ptr>,{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _First2=(<Bad Ptr>,{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _Last2=(<Bad Ptr>,{key={...} }),
std::back_insert_iterator<std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > > _Dest={...}, `anonymous-namespace'::ByEMail<std::less>
_Pred={...}, std::forward_iterator_tag __formal={...},
std::forward_iterator_tag __formal={...}) Line 2598 + 0x49 bytes C++
kleopatra.exe!std::merge<std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> >
>,std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> >
>,std::back_insert_iterator<std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > >,`anonymous namespace'::ByEMail<std::less>
>(std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _First1=("ludwig.reiter at intevation.de",{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _Last1=(<Bad Ptr>,{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _First2=(<Bad Ptr>,{key={...} }),
std::_Vector_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > _Last2=(<Bad Ptr>,{key={...} }),
std::back_insert_iterator<std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,GpgME::Key> > > > _Dest={...}, `anonymous-namespace'::ByEMail<std::less>
_Pred={...}) Line 2638 + 0xd1 bytes C++
kleopatra.exe!Kleo::KeyCache::insert(const
std::vector<GpgME::Key,std::allocator<GpgME::Key> > & keys=[2]({key={...}
},{key={...} })) Line 680 + 0xf4 bytes C++
kleopatra.exe!Kleo::KeyCache::refresh(const
std::vector<GpgME::Key,std::allocator<GpgME::Key> > & keys=[2]({key={...}
},{key={...} })) Line 618 C++
kleopatra.exe!Kleo::KeyCache::RefreshKeysJob::Private::mergeKeysAndUpdateKeyCache()
Line 880 C++
kleopatra.exe!Kleo::KeyCache::RefreshKeysJob::Private::jobDone(const
GpgME::KeyListResult & result={...}) Line 807 C++
kleopatra.exe!Kleo::KeyCache::RefreshKeysJob::qt_metacall(QMetaObject::Call
_c=InvokeMetaMethod, int _id=2, void * * _a=0x0122d608) Line 78 + 0x19 bytes C++
QtCored4.dll!QMetaObject::activate(QObject * sender=0x04840eb8, int
from_signal_index=8, int to_signal_index=10, void * * argv=0x0122d608) Line
3001 + 0x2b bytes C++
QtCored4.dll!QMetaObject::activate(QObject * sender=0x04840eb8, const
QMetaObject * m=0x10157b98, int from_local_signal_index=1, int
to_local_signal_index=3, void * * argv=0x0122d608) Line 3091 + 0x15 bytes C++
kleo.dll!1002b866()
kleo.dll!10084448()
kleo.dll!10081e77()
kleo.dll!10080e85()
QtCored4.dll!QMetaObject::activate(QObject * sender=0x04840ec8, int
from_signal_index=5, int to_signal_index=5, void * * argv=0x00000000) Line
3001 + 0x2b bytes C++
QtCored4.dll!QMetaObject::activate(QObject * sender=0x04840ec8, const
QMetaObject * m=0x6729a0d4, int local_signal_index=1, void * *
argv=0x00000000) Line 3071 + 0x15 bytes C++
QtCored4.dll!QFutureWatcherBase::finished() Line 119 + 0x12 bytes C++
QtCored4.dll!QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *
event=0x048ebf00) Line 431 C++
QtCored4.dll!QFutureWatcherBase::event(QEvent * event=0x048ebf00) Line 346 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject *
receiver=0x04840ec8, QEvent * e=0x048ebf00) Line 3772 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x04840ec8, QEvent *
e=0x048ebf00) Line 3366 + 0x10 bytes C++
kdeui.dll!KApplication::notify(QObject * receiver=0x04840ec8, QEvent *
event=0x048ebf00) Line 311 + 0x13 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject *
receiver=0x04840ec8, QEvent * event=0x048ebf00) Line 587 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x04840ec8,
QEvent * event=0x048ebf00) Line 215 + 0x39 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendPostedEvents(QObject *
receiver=0x00000000, int event_type=0, QThreadData * data=0x03e04188) Line
1198 + 0xd bytes C++
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum
QEventLoop::ProcessEventsFlag> flags={...}) Line 671 + 0x10 bytes C++
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum
QEventLoop::ProcessEventsFlag> flags={...}) Line 1093 + 0x15 bytes C++
QtCored4.dll!QEventLoop::processEvents(QFlags<enum
QEventLoop::ProcessEventsFlag> flags={...}) Line 150 C++
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag>
flags={...}) Line 200 + 0x1c bytes C++
kleopatra.exe!selfCheck(KSplashScreen & splash={...}) Line 101 C++
--
regards / pozdrawiam, Jaroslaw Staniek
Sponsored by OpenOffice Polska (http://www.openoffice.com.pl/en) to work on
Kexi & KOffice (http://www.kexi.pl/en, http://www.koffice.org/kexi)
KDE Libraries for MS Windows (http://windows.kde.org)
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: kleo_closesocket.patch
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20080717/af228b64/attachment.ksh>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/
More information about the kde-pim
mailing list