subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jens Geyer <...@vsx.net>
Subject WG: AW: Commit dialogue freezes sometimes on Win10
Date Thu, 03 Sep 2015 09:28:09 GMT


-----Ursprüngliche Nachricht-----
Von: Jens Geyer 
Gesendet: Mittwoch, 2. September 2015 15:10
Betreff: AW: AW: Commit dialogue freezes sometimes on Win10

It loops forever in the PeekMessage() loop within this piece of code:


/////////////////////////////////////////////////////////////////////////////
// COleMessageFilter standard implementation of callbacks


BOOL COleMessageFilter::OnMessagePending(const MSG* /*pMsg*/)
{
	// By default we rely on OLE's default message handling for every message
	//  except WM_PAINT messages.  WM_PAINT messages should not generate
	//  out-going calls.

	BOOL bEatMessage = FALSE;
	MSG msg;
	while (::PeekMessage(&msg, NULL, WM_PAINT, WM_PAINT, PM_REMOVE|PM_NOYIELD))
	{
		bEatMessage = TRUE;
		DispatchMessage(&msg);
	}
	return bEatMessage;
}


As one would expect, the contents of msg is always the same = WM_PAINT, but with a different
time field, so Windows seems to continue to generate WM_PAINTs for some reason. I tried manually
setting the EIP to the "return bEatMessage;" statement, hit "continue execution" and that
seemed to do the trick. The UI is responsive again, and subsequent calls of that method (I
left a breakpoint at the entrance) no longer get stuck.

Here's the stack, just tell me when you need sth. else:

>	mfc140u.dll!COleMessageFilter::OnMessagePending(const tagMSG * __formal) Zeile 113	C++
 	mfc140u.dll!COleMessageFilter::XMessageFilter::MessagePending(HTASK__ * htaskCallee, unsigned
long dwTickCount, unsigned long __formal) Zeile 312	C++
 	combase.dll!CCliModalLoop::HandlePendingMessage() Zeile 2861	C++
 	combase.dll!CCliModalLoop::HandleWakeForMsg() Zeile 2389	C++
 	combase.dll!CCliModalLoop::BlockFn(void * * ahEvent, unsigned long cEvents, unsigned long
* lpdwSignaled) Zeile 2291	C++
 	combase.dll!ThreadSendReceive(tagRPCOLEMESSAGE * pOriginalMessage, CSyncClientCall * pClientCall,
const _GUID & rmoid) Zeile 7174	C++
 	combase.dll!CSyncClientCall::SendReceive2(tagRPCOLEMESSAGE * pMessage, unsigned long * pstatus)
Zeile 5731	C++
 	combase.dll!CSyncClientCall::SendReceive(tagRPCOLEMESSAGE * pMessage, unsigned long * pulStatus)
Zeile 847	C++
 	combase.dll!NdrExtpProxySendReceive(void * pThis, _MIDL_STUB_MESSAGE * pStubMsg) Zeile 2039
C++
 	rpcrt4.dll!NdrpClientCall3()	Unbekannt
 	combase.dll!ObjectStublessClient(void * ParamAddress, __int64 * FloatRegisters, long Method)
Zeile 296	C++
 	combase.dll!ObjectStubless() Zeile 176	Unbekannt
 	combase.dll!CRpcResolver::CreateInstance(IActivationPropertiesIn * pInActivationProperties,
IActivationPropertiesOut * * ppActOut) Zeile 2635	C++
 	combase.dll!CClientContextActivator::CreateInstance(IUnknown * pUnkOuter, IActivationPropertiesIn
* pInActProperties, IActivationPropertiesOut * * ppOutActProperties) Zeile 584	C++
 	combase.dll!ActivationPropertiesIn::DelegateCreateInstance(IUnknown * pUnkOuter, IActivationPropertiesOut
* * ppActPropsOut) Zeile 1975	C++
 	combase.dll!ICoCreateInstanceEx(const _GUID & OriginalClsid, IUnknown * punkOuter, unsigned
long dwClsCtx, _COSERVERINFO * pServerInfo, unsigned long dwCount, unsigned long dwActvFlags,
tagMULTI_QI * pResults, ActivationPropertiesIn * pActIn) Zeile 1817	C++
 	combase.dll!CComActivator::DoCreateInstance(const _GUID & Clsid, IUnknown * punkOuter,
unsigned long dwClsCtx, _COSERVERINFO * pServerInfo, unsigned long dwCount, tagMULTI_QI *
pResults, ActivationPropertiesIn * pActIn) Zeile 376	C++
 	combase.dll!CoCreateInstance(const _GUID & rclsid, IUnknown * pUnkOuter, unsigned long
dwContext, const _GUID & riid, void * * ppv) Zeile 120	C++
 	thumbcache.dll!CThumbnailCache::_GetSurrogate(enum WTS_FLAGS,struct ICreateObject * *)	Unbekannt
 	thumbcache.dll!CThumbnailCache::_PerformFullExtractionCore(struct IShellItem *,unsigned
int,unsigned int,enum WTS_FLAGS,enum WTS_PRIV_FLAGS,struct IBitmapResult * *,int *,enum WTS_ALPHATYPE
*,unsigned long *)	Unbekannt
 	thumbcache.dll!CThumbnailCache::_PerformFullExtraction(struct IShellItem *,unsigned int,unsigned
int,enum WTS_FLAGS,enum WTS_PRIV_FLAGS,struct IBitmapResult * *,int *,enum WTS_ALPHATYPE *)
Unbekannt
 	thumbcache.dll!CThumbnailCache::_GetThumbnailImpl(class CThumbnailMoniker &,struct IShellItem
*,unsigned int,enum WTS_FLAGS,enum WTS_PRIV_FLAGS,int,struct IBitmapResult * *,int *,int *)
Unbekannt
 	thumbcache.dll!CThumbnailCache::_GetThumbnailInternal(struct IShellItem *,unsigned int,enum
WTS_FLAGS,enum WTS_PRIV_FLAGS,struct IBitmapResult * *,enum WTS_CACHEFLAGS *,struct WTS_THUMBNAILID
*)	Unbekannt
 	thumbcache.dll!CThumbnailCache::GetThumbnailPrivate(struct IShellItem *,unsigned int,enum
WTS_FLAGS,enum WTS_PRIV_FLAGS,struct ISharedBitmap * *,enum WTS_CACHEFLAGS *,struct WTS_THUMBNAILID
*)	Unbekannt
 	thumbcache.dll!CThumbnailCacheAPI::GetThumbnailPrivate(struct IShellItem *,unsigned int,enum
WTS_FLAGS,enum WTS_PRIV_FLAGS,struct ISharedBitmap * *,enum WTS_CACHEFLAGS *,struct WTS_THUMBNAILID
*)	Unbekannt
 	thumbcache.dll!CThumbnailCacheAPI::GetThumbnail(struct IShellItem *,unsigned int,enum WTS_FLAGS,struct
ISharedBitmap * *,enum WTS_CACHEFLAGS *,struct WTS_THUMBNAILID *)	Unbekannt
 	windows.storage.dll!CShellItem::_GetThumbnail(struct tagSIZE,int,struct ISharedBitmap *
*)	Unbekannt
 	windows.storage.dll!CShellItem::GetSharedBitmap(struct tagSIZE,int,struct ISharedBitmap
* *)	Unbekannt
 	windows.storage.dll!CShellItem::GetImage(struct tagSIZE,int,struct HBITMAP__ * *)	Unbekannt
 	shell32.dll!_ExtactIconFromImage(unsigned short const *,int,struct HICON__ * *)	Unbekannt
 	shell32.dll!_ExtractIconsFromImage(unsigned short const *,int,unsigned int,struct HICON__
* *)	Unbekannt
 	shell32.dll!ExtractIconsUsingResourceManager(unsigned short const *,int,int,unsigned int,unsigned
int,struct HICON__ * *)	Unbekannt
 	shell32.dll!SHDefExtractIconW()	Unbekannt
 	shell32.dll!CIconCache::ExtractIconW(int,int,int,struct HICON__ * *)	Unbekannt
 	shell32.dll!CSparseCallback::ForceImagePresent(struct IImageList2 *,int)	Unbekannt
 	comctl32.dll!CSparseImageList::_Callback_ForceImagePresent(int)	Unbekannt
 	comctl32.dll!CSparseImageList::_Virt2Real(int,int *,unsigned long)	Unbekannt
 	comctl32.dll!CSparseImageList::GetOriginalSize(int,unsigned long,int *,int *)	Unbekannt
 	comctl32.dll!CLVImageListManager::_PositionImageWithOriginalSize(struct LVDRAWASYNCPARAMS
*)	Unbekannt
 	comctl32.dll!CLVImageListManager::DrawAsync(struct LVDRAWASYNCPARAMS *,int)	Unbekannt
 	comctl32.dll!CLVImageListManager::DrawImageEx2(struct tagLVITEMW const *,struct HDC__ *,int,int,unsigned
long,unsigned int,int,int,int)	Unbekannt
 	comctl32.dll!CLVReportView::v_DrawItem(struct LVDRAWITEM *)	Unbekannt
 	comctl32.dll!CLVDrawItemManager::DrawItem(struct LVDRAWITEM *)	Unbekannt
 	comctl32.dll!CListGroup::_PaintItems(struct HDC__ *,int,struct tagRECT const *)	Unbekannt
 	comctl32.dll!CListGroup::Paint(struct HDC__ *,int,struct tagRECT const *)	Unbekannt
 	comctl32.dll!CLVGroupManager::Paint(struct HDC__ *,struct tagRECT const *)	Unbekannt
 	comctl32.dll!`DuiTelemetry::Instance(void)'::`2'::`dynamic atexit destructor for 'wrapper''(void)
Unbekannt
 	comctl32.dll!CLVDrawManager::_PaintWorkArea(struct HDC__ *,struct tagRECT const *)	Unbekannt
 	comctl32.dll!CLVDrawManager::_OnPaintWorkAreas(struct HDC__ *,struct tagRECT const *)	Unbekannt
 	comctl32.dll!CLVDrawManager::_OnPaint(struct HDC__ *)	Unbekannt
 	comctl32.dll!CLVDrawManager::OnPaint(struct HDC__ *)	Unbekannt
 	comctl32.dll!CListView::WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64)	Unbekannt
 	comctl32.dll!CListView::s_WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64)
Unbekannt
 	user32.dll!UserCallWinProcCheckWow()	Unbekannt
 	user32.dll!CallWindowProcW()	Unbekannt
 	comctl32.dll!CallNextSubclassProc()	Unbekannt
 	comctl32.dll!CallNextSubclassProc()	Unbekannt
 	comctl32.dll!MasterSubclassProc()	Unbekannt
 	user32.dll!UserCallWinProcCheckWow()	Unbekannt
 	user32.dll!CallWindowProcW()	Unbekannt
 	mfc140u.dll!CWnd::DefWindowProcW(unsigned int nMsg, unsigned __int64 wParam, __int64 lParam)
Zeile 1101	C++
 	TortoiseProc.exe!CSVNStatusListCtrl::OnPaint() Zeile 5377	C++
 	mfc140u.dll!CWnd::OnWndMsg(unsigned int message, unsigned __int64 wParam, __int64 lParam,
__int64 * pResult) Zeile 2444	C++
 	TortoiseProc.exe!CSVNStatusListCtrl::OnWndMsg(unsigned int message, unsigned __int64 wParam,
__int64 lParam, __int64 * pResult) Zeile 6900	C++
 	mfc140u.dll!CWnd::WindowProc(unsigned int message, unsigned __int64 wParam, __int64 lParam)
Zeile 2078	C++
 	mfc140u.dll!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned __int64
wParam, __int64 lParam) Zeile 265	C++
 	mfc140u.dll!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64
lParam) Zeile 417	C++
 	mfc140u.dll!AfxWndProcBase(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64
lParam) Zeile 299	C++
 	user32.dll!UserCallWinProcCheckWow()	Unbekannt
 	user32.dll!DispatchClientMessage()	Unbekannt
 	user32.dll!__fnDWORD()	Unbekannt
 	ntdll.dll!KiUserCallbackDispatcherContinue()	Unbekannt
 	user32.dll!NtUserDispatchMessage()	Unbekannt
 	user32.dll!DispatchMessageWorker()	Unbekannt
 	mfc140u.dll!AfxInternalPumpMessage() Zeile 183	C++
 	mfc140u.dll!CWnd::RunModalLoop(unsigned long dwFlags) Zeile 4640	C++
 	mfc140u.dll!CWnd::CreateRunDlgIndirect(const DLGTEMPLATE * lpDialogTemplate, CWnd * pParentWnd,
HINSTANCE__ * hInst) Zeile 474	C++
 	mfc140u.dll!CDialog::DoModal() Zeile 633	C++
 	TortoiseProc.exe!CommitCommand::Execute() Zeile 122	C++
 	TortoiseProc.exe!CTortoiseProcApp::InitInstance() Zeile 470	C++
 	mfc140u.dll!AfxWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine,
int nCmdShow) Zeile 37	C++
 	TortoiseProc.exe!__scrt_common_main_seh() Zeile 264	C++
 	kernel32.dll!BaseThreadInitThunk()	Unbekannt
 	ntdll.dll!RtlUserThreadStart()	Unbekannt


-----Ursprüngliche Nachricht-----
Von: Stefan Küng [mailto:tortoisesvn@gmail.com] 
Gesendet: Dienstag, 11. August 2015 19:59
An: dev@tortoisesvn.tigris.org
Betreff: Re: AW: Commit dialogue freezes sometimes on Win10

On 11.08.2015 12:01, Jens Geyer wrote:
> Looks very much like this:
>
> https://groups.google.com/forum/#!topic/tortoisesvn/oOzbLfSiDUw
>
> Again, if I can do anything to help you tracking down that issue, just
> ask. Whatever the issue is, TSVN should not just hang.

I'm sure you know your way around a debugger, so you could attach a 
debugger to the TortoiseProc.exe process and find out where/why it hangs.
The debug symbols can be set up with this url:
http://www.crash-server.com:8080/public/tsvn/71040F62-F78A-4953-B5B3-5C148349FED7/symsrv

And if you have the debugger set up right, it will also automatically 
check out the TSVN source files if necessary.

I haven't seen that problem on my machines yet, so I can't really help 
in narrowing the problem down :(

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest interface to (Sub)version control
    /_/   \_\     http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=3131380

To unsubscribe from this discussion, e-mail: [dev-unsubscribe@tortoisesvn.tigris.org].

Mime
View raw message