[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