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 01:51:14 +0100

On Wed, 10 Feb 2016 00:15:25 +0000 Greg Chicares <address@hidden> wrote:

GC> On 02/09/2016 06:30 PM, Greg Chicares wrote:
GC> [...problems with 'wx_test'...]
GC> > Here's the same thing, built and run in msw-xp running on bare metal.
GC> > This is new--I guess it's a gcc-4.x runtime diagnostic:
GC> >   "pure virtual method called"
GC> > We didn't see that in msw-7 or in my msw-xp VM.
GC> 
GC> Three different results on three different machines, and you won't be
GC> able to reproduce all three,

 I can reproduce, and explain, the truncated output: MinGW now uses its own
stdio implementation which means that its "%s" format specifier is standard
compliant and expects "char*" arguments even in wide format strings, unlike
the MSVC stdio which handles "%s" as "%ls" in this case. The good news is
that it shouldn't be very difficult to fix this, as we already implement
wxPrintf() in terms of printf() with such semantics under Unix. The bad
news is that it definitely requires updating wxWidgets as it can only be
fixed inside it. I'm working on this right now and will finish it today or
tomorrow at the latest.

GC> so I figured I should take the obvious
GC> next step here and break on '__cxa_pure_virtual'. My a priori
GC> expectation is that I'd find a bad constructor, but the stack trace
GC> points to wxTextAutoCompleteData::ChangeStrings(). However, that may
GC> mean nothing, because three levels deep the backtrace points into
GC> Shangri-La, so maybe all we can tell is that the stack is trashed.

 If this happens during the application shutdown, it could well be the same
bug with using the already destroyed global objects that I've just fixed.
Otherwise I really have no idea :-( Could you please rebuild wxWidgets with
--enable-debug and just drop the debug DLL in place of the one currently
being used (and not containing the debug symbols)?

 Thanks in advance,
VZ

reply via email to

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