access violation using wxTreeCtrl

Vadim Zeitlin vadim at wxwidgets.org
Wed Mar 12 12:56:22 PDT 2008


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

-- 
TT-Solutions: wxWidgets consultancy and technical support
               http://www.tt-solutions.com/





More information about the wx-users mailing list