access violation using wxTreeCtrl

Harry "harry dot news at armadillo dot fr" at a.mx.sunsite.dk
Mon Mar 17 03:42:06 PDT 2008


Vadim,

Yes, I'm using Vista.
Curiously, the abort happens in TV_SetItemState()  as it does for the 
patch you referred to,
although the circumstances look different (I'm closing the window).
Where can I get this patch ? Or do I simply download the last daily build ?

For what it may help, here's my stack trace with symbols (using 
wxMSW-2008-03-04):

     comctl32.dll!TV_SetItemState()  + 0xd bytes   
     comctl32.dll!TV_SelectItem()  + 0x5bb6c bytes   
     comctl32.dll!TV_DeleteItemRecurse()  - 0x6a5e bytes   
     comctl32.dll!TV_DeleteItemRecurse()  + 0x439 bytes   
     comctl32.dll!TV_DeleteItem()  + 0x67 bytes   
     comctl32.dll!TV_WndProc()  + 0x44e8e bytes   
     user32.dll!_InternalCallWinProc at 20()  + 0x23 bytes   
     user32.dll!_UserCallWinProcCheckWow at 32()  + 0xb3 bytes   
     user32.dll!_CallWindowProcAorW at 24()  + 0x51 bytes   
     user32.dll!_CallWindowProcW at 20()  + 0x1b bytes   
 >    treectrl.exe!wxWindow::MSWDefWindowProc(unsigned int nMsg=4353, 
unsigned int wParam=0, long lParam=-65536)  Line 2258 + 0x25 bytes    C++
     treectrl.exe!wxTreeCtrl::MSWDefWindowProc(unsigned int nMsg=4353, 
unsigned int wParam=0, long lParam=-65536)  Line 2450    C++
     treectrl.exe!wxWindow::MSWWindowProc(unsigned int message=4353, 
unsigned int wParam=0, long lParam=-65536)  Line 3508 + 0x22 bytes    C++
     treectrl.exe!wxTreeCtrl::MSWWindowProc(unsigned int nMsg=4353, 
unsigned int wParam=0, long lParam=-65536)  Line 2412 + 0x17 bytes    C++
     treectrl.exe!wxWndProc(HWND__ * hWnd=0x00050f58, unsigned int 
message=4353, unsigned int wParam=0, long lParam=-65536)  Line 2669 + 
0x1c bytes    C++
     user32.dll!_InternalCallWinProc at 20()  + 0x23 bytes   
     user32.dll!_UserCallWinProcCheckWow at 32()  + 0xb3 bytes   
     user32.dll!_SendMessageWorker at 20()  + 0xd5 bytes   
     user32.dll!_SendMessageW at 16()  + 0x49 bytes   
     treectrl.exe!wxTreeCtrl::DeleteAllItems()  Line 1630 + 0x1b 
bytes    C++
     treectrl.exe!wxTreeCtrl::~wxTreeCtrl()  Line 808    C++
     treectrl.exe!MyTreeCtrl::~MyTreeCtrl()  Line 68 + 0x18 bytes    C++
     treectrl.exe!MyTreeCtrl::`scalar deleting destructor'()  + 0xf 
bytes    C++
     treectrl.exe!wxWindowBase::DestroyChildren()  Line 424 + 0x21 
bytes    C++
     treectrl.exe!wxWindow::~wxWindow()  Line 578    C++
     treectrl.exe!wxPanel::~wxPanel()  Line 133 + 0x1d bytes    C++
     treectrl.exe!wxPanel::`scalar deleting destructor'()  + 0xf 
bytes    C++
     treectrl.exe!wxWindowBase::DestroyChildren()  Line 424 + 0x21 
bytes    C++
     treectrl.exe!wxWindow::~wxWindow()  Line 578    C++
     treectrl.exe!wxTopLevelWindowBase::~wxTopLevelWindowBase()  Line 
112 + 0x33 bytes    C++
     treectrl.exe!wxTopLevelWindowMSW::~wxTopLevelWindowMSW()  Line 624 
+ 0xf bytes    C++
     treectrl.exe!wxTopLevelWindow::~wxTopLevelWindow()  + 0xf bytes    C++
     treectrl.exe!wxFrameBase::~wxFrameBase()  Line 79 + 0x1d bytes    C++
     treectrl.exe!wxFrame::~wxFrame()  Line 214 + 0xf bytes    C++
     treectrl.exe!MyFrame::~MyFrame()  Line 324 + 0xf bytes    C++
     treectrl.exe!MyFrame::`scalar deleting destructor'()  + 0xf 
bytes    C++
     treectrl.exe!wxAppBase::DeletePendingObjects()  Line 343 + 0x21 
bytes    C++
     treectrl.exe!wxAppBase::ProcessIdle()  Line 376    C++
     treectrl.exe!wxEventLoopManual::Run()  Line 82 + 0x44 bytes    C++
     treectrl.exe!wxAppConsoleBase::MainLoop()  Line 305 + 0x25 bytes    C++
     treectrl.exe!wxAppConsoleBase::OnRun()  Line 254    C++
     treectrl.exe!wxAppBase::OnRun()  Line 293    C++
     treectrl.exe!wxEntryReal(int & argc=1, wchar_t * * 
argv=0x012aa908)  Line 460 + 0x1b bytes    C++
     treectrl.exe!wxEntry(int & argc=1, wchar_t * * argv=0x012aa908)  
Line 210 + 0xd bytes    C++
     treectrl.exe!wxEntry(HINSTANCE__ * hInstance=0x00400000, 
HINSTANCE__ * __formal=0x00000000, HINSTANCE__ * __formal=0x00000000, 
int nCmdShow=1)  Line 424 + 0x10 bytes    C++
     treectrl.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, 
HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00304272, int 
nCmdShow=1)  Line 163 + 0x18 bytes    C++
     treectrl.exe!__tmainCRTStartup()  Line 589 + 0x35 bytes    C
     treectrl.exe!WinMainCRTStartup()  Line 414    C
     kernel32.dll!@BaseThreadInitThunk at 12()  + 0x12 bytes   
     ntdll.dll!__RtlUserThreadStart at 8()  + 0x27 bytes   


Vadim Zeitlin wrote:
> On Wed, 05 Mar 2008 09:39:27 +0100 Harry <"harry dot news at armadillo dot fr"@a.mx.sunsite.dk> wrote:
>
> H> Using Visual Studio 2005 and daily build wxMSW-2008-03-04, I don't get 
> H> the assertions,
> H> but I still get the abort:
> H>   Unhandled exception at 0x74cdc1f4 in treectrl.exe: 0xC0000005: Access 
> H> violation reading location 0xfeeeff0a.
>
>  Are you using Vista by chance? There was a discussion on wx-dev recently
> about a crash which only happens under this OS (and only in multiselection
> mode). The backtrace is not nearly the same though... Please have a look at
> http://thread.gmane.org/gmane.comp.lib.wxwidgets.devel/98918 and the patch
> referenced there: does applying it help?
>
> H> It seems to me like wxTreeCtrl::DeleteAllItems() is trying to delete 
> H> already-deleted items.
>
>  Hmm, do you have any specific reasons for thinking this? I don't really
> see them...
>
> H> The stack trace is as follows:
> H> 
> H>      comctl32.dll!74cdc1f4()    
> H>      [snip]
> H>      user32.dll!76272d14()    
> H>  >    treectrl.exe!wxWindow::MSWDefWindowProc(unsigned int nMsg=4353, 
> H> unsigned int wParam=0, long lParam=-65536)  Line 2258 + 0x25 bytes    C++
> H>      treectrl.exe!wxTreeCtrl::MSWDefWindowProc(unsigned int nMsg=4353, 
> H> unsigned int wParam=0, long lParam=-65536)  Line 2450    C++
> H>      treectrl.exe!wxWindow::MSWWindowProc(unsigned int message=4353, 
> H> unsigned int wParam=0, long lParam=-65536)  Line 3508 + 0x22 bytes    C++
> H>      treectrl.exe!wxTreeCtrl::MSWWindowProc(unsigned int nMsg=4353, 
> H> unsigned int wParam=0, long lParam=-65536)  Line 2412 + 0x17 bytes    C++
> H>      treectrl.exe!wxWndProc(HWND__ * hWnd=0x000307e2, unsigned int 
> H> message=4353, unsigned int wParam=0, long lParam=-65536)  Line 2669 + 
> H> 0x1c bytes    C++
> H>      user32.dll!76271a10()    
> H>      [snip]
> H>      treectrl.exe!wxTreeCtrl::DeleteAllItems()  Line 1630 + 0x1b 
> H> bytes    C++
> H>      treectrl.exe!wxTreeCtrl::~wxTreeCtrl()  Line 808    C++
>
>  DeleteAllItems() is called and it sends TVM_DELETEITEM to the control
> (this is the message 4353) and I don't understand why would the items be
> already deleted.
>
>  BTW, in the 2nd post in the above thread I wrote about how to get symbols
> for the frames in user32.dll and comctl32.dll, please see the first
> paragraph of http://article.gmane.org/gmane.comp.lib.wxwidgets.devel/98926
> Could you please set your _NT_SYMBOL_PATH and show the backtrace with the
> symbols? This might give some more information as right now I really don't
> have any idea about what to do with this.
>
>  Thanks!
> VZ
>
>   






More information about the wx-users mailing list