-----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:[email protected]]
Gesendet: Dienstag, 11. August 2015 19:59
An: [email protected]
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:
[[email protected]].