lmi
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lmi] wx_test: output strings truncated to one character


From: Vadim Zeitlin
Subject: Re: [lmi] wx_test: output strings truncated to one character
Date: Wed, 10 Feb 2016 18:06:09 +0100

On Wed, 10 Feb 2016 16:22:54 +0000 Greg Chicares <address@hidden> wrote:

GC> I've updated wx to this SHA
GC>   730c1ee79b77b3eab58881492b2de6b659319ba2
GC> and rebuilt with an 'install_wx.make' that otherwise matches HEAD
GC> (I've reverted all the other recent local changes).

 I'll have to do this myself to check if I can reproduce the problem with
the native build, would you like me to do this immediately, preempting the
other tasks?

GC> The bad news is:
GC>   Error
GC> 
GC>   Abnormal-termination handler called. Please report this problem.
GC> 
GC> and
GC>   pure virtual method called
GC> and
GC>   In file ../include/wx/msw/private.h at line 809: 'UnregisterClass'
GC>   failed with error 0x00000584 (class still has open windows.).

 Do you know when exactly does it happen, in particular whether it happens
during the execution of some particular test or after running all of them?
E.g. could you please try "./wx_test.exe ... -t about_dialog_version", does
it still crash then?

GC> Let's try gdb:
GC> 
GC> /opt/lmi/bin[1]$gdb --quiet ./wx_test.exe
GC> Reading symbols from ./wx_test.exe...done.
GC> (gdb) set arg --ash_nazg --data_path=/opt/lmi/data
GC> (gdb) b __cxa_pure_virtual
GC> Breakpoint 1 at 0x44f770
GC> (gdb) r
GC> Starting program: /opt/lmi/bin/wx_test.exe --ash_nazg 
--data_path=/opt/lmi/data
GC> [New Thread 2652.0xe04]
GC> 
GC> Breakpoint 1, 0x66ccb5d0 in __cxa_pure_virtual ()
GC>    from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
GC> (gdb) bt
GC> #0  0x66ccb5d0 in __cxa_pure_virtual ()
GC>    from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
GC> #1  0x66d46f66 in wxTextAutoCompleteData::ChangeStrings(wxArrayString 
const&)
GC>     ()
GC>    from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
GC> #2  0x00228fa8 in ?? ()
GC> #3  0x04c790c3 in wxArgNormalizer<wchar_t const*>::wxArgNormalizer (index=5,
GC>     fmt=0xc9bc452f, value=<optimized out>, this=<optimized out>)
GC>     at ../include/wx/strvararg.h:451
GC> #4  wxArgNormalizerWchar<wchar_t const*>::wxArgNormalizerWchar (index=5,
GC>     fmt=0xc9bc452f, value=<optimized out>, this=<optimized out>)
GC>     at ../include/wx/strvararg.h:471
GC> #5  wxLogger::Log<char const*, int, wchar_t const*, long, wchar_t const*> (
GC>     a5=<optimized out>, a4=<optimized out>,
GC>     a3=0x549bdd8 
<_ZZN15wxArgNormalizerIiEC4EiPK14wxFormatStringjE12__FUNCTION__+1416> 
L"GetObject(HBITMAP)", a2=378,
GC>     a1=0x549b964 
<_ZZN15wxArgNormalizerIiEC4EiPK14wxFormatStringjE12__FUNCTION__+276> 
"../src/msw/gdiimage.cpp", f1=..., this=0xc9bc455b)
GC>     at ../include/wx/log.h:961
GC> #6  wxBMPResourceHandler::LoadFile (this=<optimized out>,
GC>     bitmap=<error reading variable: Cannot access memory at address 
0xc9bc4593>,---Type <return> to continue, or q <return> to quit---
GC>  name=<error reading variable: Cannot access memory at address 0xc9bc4597>)
GC>     at ../src/msw/gdiimage.cpp:378

 There are too many things I don't understand here... First, it's not
expected at all for ::GetObject() to fail, yet it clearly does (the stack
can be corrupted but the frames above couldn't be just randomly generated).
Second, it looks like the assert in wxArgNormalizer ctor fails, but it
shouldn't because the format string in this wxLogLastError() call is
definitely correct, I even tested the same call in wx_test myself and it
works fine there (i.e. doesn't assert nor crash and produces the expected
debug output message).

VZ

reply via email to

[Prev in Thread] Current Thread [Next in Thread]