It happens when I double-click an entry in my wxTreeCtrl. Strangely if I single click the item and press ENTER, which should have the same effect as a double-click, the exception does not occur.
Any help is much appreciated. Stepping through comctl32.dll assembler code is not my idea of a fun afternoon.
Here's the full register and stack dump. The exception happens when comctl32 tries to dereference the address 0xBAADF00D. I don't know where this bogus data is originating, but a quick search of the WX source doesn't find that value, so I'm not sure who to suspect.
Code: Select all
EAX = 00159248 EBX = 00159248 ECX = 00019BB7 EDX = 0000F00D
ESI = BAADF00D EDI = 00000000 EIP = 5D0A78D8 ESP = 0012F050
EBP = 0012F058 EFL = 00000282
comctl32.dll!_TV_CountVisibleDescendants@4() + 0x13
comctl32.dll!_TV_ScrollBelow@16() + 0x43
comctl32.dll!_TV_Expand@16() + 0xf2
comctl32.dll!_TV_ButtonDown@24() + 0x10c
comctl32.dll!_TV_WndProc@16() + 0x336d
user32.dll!_InternalCallWinProc@20() + 0x28
user32.dll!_UserCallWinProcCheckWow@32() + 0xb7
user32.dll!_CallWindowProcAorW@24() + 0x51
user32.dll!_CallWindowProcA@20() + 0x1b
NVShmoo.exe!wxWindow::MSWDefWindowProc(unsigned int nMsg=0x00000203, unsigned int wParam=0x00000001, long lParam=0x00750058) Line 1956 + 0x27 C++
NVShmoo.exe!wxTreeCtrl::MSWDefWindowProc(unsigned int nMsg=0x00000203, unsigned int wParam=0x00000001, long lParam=0x00750058) Line 2662 C++
NVShmoo.exe!wxWindow::MSWWindowProc(unsigned int message=0x00000203, unsigned int wParam=0x00000001, long lParam=0x00750058) Line 3021 + 0x1c C++
NVShmoo.exe!wxTreeCtrl::MSWWindowProc(unsigned int nMsg=0x00000203, unsigned int wParam=0x00000001, long lParam=0x00750058) Line 2619 + 0x14 C++
NVShmoo.exe!wxWndProc(HWND__ * hWnd=0x00480654, unsigned int message=0x00000203, unsigned int wParam=0x00000001, long lParam=0x00750058) Line 2326 + 0x1c C++
user32.dll!_InternalCallWinProc@20() + 0x28
user32.dll!_UserCallWinProcCheckWow@32() + 0xb7
user32.dll!_DispatchMessageWorker@8() + 0xdc
user32.dll!_DispatchMessageW@4() + 0xf
user32.dll!_IsDialogMessageW@8() + 0xdb
user32.dll!_IsDialogMessageA@8() + 0x4a
NVShmoo.exe!wxWindow::MSWProcessMessage(tagMSG * pMsg=0x0012fc24) Line 2200 + 0x1d C++
NVShmoo.exe!wxEventLoop::PreProcessMessage(tagMSG * msg=0x0012fc24) Line 211 + 0x14 C++
NVShmoo.exe!wxEventLoop::ProcessMessage(tagMSG * msg=0x0012fc24) Line 107 + 0x11 C++
NVShmoo.exe!wxEventLoop::Dispatch() Line 420 + 0x11 C++
NVShmoo.exe!wxEventLoop::Run() Line 282 + 0xd C++
NVShmoo.exe!wxAppBase::MainLoop() Line 272 + 0x15 C++
NVShmoo.exe!wxAppBase::OnRun() Line 340 + 0x10 C++
NVShmoo.exe!wxEntryReal(int & argc=0x00000002, char * * argv=0x00ffa280) Line 439 + 0x1b C++
NVShmoo.exe!wxEntry(int & argc=0x00000002, char * * argv=0x00ffa280) Line 216 + 0xd C++
NVShmoo.exe!wxEntry(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * __formal=0x00000000, HINSTANCE__ * __formal=0x00000000, int nCmdShow=0x00000001) Line 386 + 0xd C++
NVShmoo.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00141f15, int nCmdShow=0x00000001) Line 251 + 0x33 C++
NVShmoo.exe!WinMainCRTStartup() Line 390 + 0x39 C
kernel32.dll!_BaseProcessStart@4() + 0x23