-----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].

Reply via email to