[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Crash in nightly: Log Message dialog (Also: 100% method to crash TortoiseProc)

From: Hans-Emil Skogh <Hans-Emil.Skogh_at_tritech.se>
Date: Mon, 10 May 2010 17:04:02 +0200

> If I select show log on a single file, make sure that "Show only affected
> paths" is checked, select a revision that have more then one file committed
> and then double click the file the Log Message dialog crashes.
 
Ok. Managed to catch this one in the debugger. Didn't get that much savvier though...
 
What I can make of it is that a WM_LBUTTONDBLCLK (0x203) message is passed to CLogDlg::PreTranslateMessage(). The message looks good and is passed on. When the message arrives at CResizableDialog::WindowProc() it has been translated into a WM_NOTIFY (0x4E) message. This message has a pointer to a NMHDR structure as lParam. The code field of this structure is 0xfffffffd. This is then passed on and then triggers the following crash (callstack and crash message from different runs):
 
Unhandled exception at 0x7c812afb in TortoiseProc.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0013c710..
 
When I uncheckn "Show only affected paths" and doubleclick everything looks pretty much identical except for that NMHDR.code = 0xfffffff0. That's the difference that I can spot, but no idea on why this happens...
 
Callstack:
 
kernel32.dll!7c812afb()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
kernel32.dll!7c812afb()
mfc90ud.dll!CDialog::OnCmdMsg(unsigned int nID=0x000003f7, int nCode=0x004efffd, void * pExtra=0x0013cdc4, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Line 85 + 0x18 bytes C++
mfc90ud.dll!CWnd::OnNotify(unsigned int __formal=0x000003f7, long lParam=0x0013d228, long * pResult=0x0013cf04) Line 2390 C++
mfc90ud.dll!CWnd::OnWndMsg(unsigned int message=0x0000004e, unsigned int wParam=0x000003f7, long lParam=0x0013d228, long * pResult=0x0013cf3c) Line 1781 + 0x2a bytes C++
mfc90ud.dll!CWnd::WindowProc(unsigned int message=0x0000004e, unsigned int wParam=0x000003f7, long lParam=0x0013d228) Line 1755 + 0x20 bytes C++
TortoiseProc.exe!CResizableDialog::WindowProc(unsigned int message=0x0000004e, unsigned int wParam=0x000003f7, long lParam=0x0013d228) Line 198 + 0x14 bytes C++
mfc90ud.dll!AfxCallWndProc(CWnd * pWnd=0x0013dbd8, HWND__ * hWnd=0x0001152a, unsigned int nMsg=0x0000004e, unsigned int wParam=0x000003f7, long lParam=0x0013d228) Line 240 + 0x1c bytes C++
mfc90ud.dll!AfxWndProc(HWND__ * hWnd=0x0001152a, unsigned int nMsg=0x0000004e, unsigned int wParam=0x000003f7, long lParam=0x0013d228) Line 403 C++
mfc90ud.dll!AfxWndProcBase(HWND__ * hWnd=0x0001152a, unsigned int nMsg=0x0000004e, unsigned int wParam=0x000003f7, long lParam=0x0013d228) Line 441 + 0x15 bytes C++
user32.dll!7e418734()
user32.dll!7e418816()
user32.dll!7e42927b()
user32.dll!7e4292e3()
comctl32.dll!773eb001()
comctl32.dll!773eb10e()
user32.dll!7e429ed9()
user32.dll!7e4274ff()
mfc90ud.dll!CWnd::IsDialogMessageW(tagMSG * lpMsg=0x00169920) Line 198 C++
mfc90ud.dll!CWnd::PreTranslateInput(tagMSG * lpMsg=0x00169920) Line 4332 C++
mfc90ud.dll!CDialog::PreTranslateMessage(tagMSG * pMsg=0x00169920) Line 80 C++
TortoiseProc.exe!CLogDlg::PreTranslateMessage(tagMSG * pMsg=0x00169920) Line 2238 C++
mfc90ud.dll!CWnd::WalkPreTranslateTree(HWND__ * hWndStop=0x0001152a, tagMSG * pMsg=0x00169920) Line 2946 + 0x14 bytes C++
mfc90ud.dll!AfxInternalPreTranslateMessage(tagMSG * pMsg=0x00169920) Line 233 + 0x12 bytes C++
mfc90ud.dll!CWinThread::PreTranslateMessage(tagMSG * pMsg=0x00169920) Line 777 + 0x9 bytes C++
mfc90ud.dll!AfxPreTranslateMessage(tagMSG * pMsg=0x00169920) Line 252 + 0x11 bytes C++
mfc90ud.dll!AfxInternalPumpMessage() Line 178 + 0x18 bytes C++
mfc90ud.dll!CWinThread::PumpMessage() Line 900 C++
mfc90ud.dll!AfxPumpMessage() Line 190 + 0xd bytes C++
mfc90ud.dll!CWnd::RunModalLoop(unsigned long dwFlags=0x00000004) Line 4386 + 0x5 bytes C++
mfc90ud.dll!CDialog::DoModal() Line 584 + 0xc bytes C++
TortoiseProc.exe!LogCommand::Execute() Line 82 C++
TortoiseProc.exe!CTortoiseProcApp::InitInstance() Line 398 + 0x13 bytes C++
mfc90ud.dll!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00020b4a, int nCmdShow=0x00000001) Line 37 + 0xd bytes C++
TortoiseProc.exe!wWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00020b4a, int nCmdShow=0x00000001) Line 34 C++
TortoiseProc.exe!__tmainCRTStartup() Line 578 + 0x35 bytes C
TortoiseProc.exe!wWinMainCRTStartup() Line 403 C
kernel32.dll!7c817077()

Hans-Emil

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

To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2010-05-10 17:04:09 CEST

This is an archived mail posted to the TortoiseSVN Dev mailing list.