-----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:tortoise...@gmail.com] Gesendet: Dienstag, 11. August 2015 19:59 An: d...@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-unsubscr...@tortoisesvn.tigris.org].