lmi
[Top][All Lists]
Advanced

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

Re: [lmi] Input-sequence anomaly [Was: wx_test: output strings truncated


From: Greg Chicares
Subject: Re: [lmi] Input-sequence anomaly [Was: wx_test: output strings truncated to one character]
Date: Thu, 11 Feb 2016 12:12:18 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.5.0

On 02/11/2016 04:44 AM, Greg Chicares wrote:
> On 02/11/2016 03:30 AM, Greg Chicares wrote:
> [...]
>> Let's try the last example above in gdb:
> 
> Once more, to localize the problem...looks like it goes haywire in
> InputSequenceEditor::add_row().

Now I've localized it as much as I can in lmi. It runs up to
'input_sequence_entry.cpp' line 532:

        if(!keywords_only_)
            {
            combo->AutoComplete(kw); // <-- call into wx
            }

where gdb gives a fairly sensible backtrace. When I execute that line,
calling into wx, __cxa_pure_virtual() is trapped, and the backtrace
looks dodgier. This is a completely new build (in an msw-xp VM) of
wx (and wxPdfDoc) using the latest SHASUM in lmi HEAD, which means wx
HEAD as of approximately a day ago, and a completely new build of lmi
using that updated wx, to rule out anything like a cosmic-ray hit.

/opt/lmi/bin[0]$gdb --quiet lmi_wx_shared.exe
Reading symbols from lmi_wx_shared.exe...done.
(gdb) set arg --ash_nazg --data_path=/opt/lmi/data
(gdb) b __cxa_pure_virtual
Function "__cxa_pure_virtual" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (__cxa_pure_virtual) pending.
(gdb) b InputSequenceEntry::UponOpenEditor(wxCommandEvent&)
Function "InputSequenceEntry::UponOpenEditor(wxCommandEvent&)" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (InputSequenceEntry::UponOpenEditor(wxCommandEvent&)) pending.
(gdb) r
Starting program: /opt/lmi/bin/lmi_wx_shared.exe --ash_nazg 
--data_path=/opt/lmi/data
[New Thread 476.0x144]

Breakpoint 2, InputSequenceEntry::UponOpenEditor (this=0x49a07f8)
    at /lmi/src/lmi/input_sequence_entry.cpp:1359
1359    {
(gdb) b input_sequence_entry.cpp:483
Breakpoint 3 at 0x2b42471: input_sequence_entry.cpp:483. (4 locations)
(gdb) c
Continuing.

Breakpoint 3, (anonymous namespace)::InputSequenceEditor::InputSequenceEditor (
    input=..., title=..., parent=<optimized out>, this=0x22be3c)
    at /lmi/src/lmi/input_sequence_entry.cpp:337
337         add_row();
(gdb) s
(anonymous namespace)::InputSequenceEditor::add_row (this=<optimized out>)
    at /lmi/src/lmi/input_sequence_entry.cpp:485
485         insert_row(rows_count_);
(gdb) s
(anonymous namespace)::InputSequenceEditor::InputSequenceEditor (input=...,
    title=..., parent=<optimized out>, this=0x22be3c)
    at /lmi/src/lmi/input_sequence_entry.cpp:335
335         SetSizerAndFit(top);
(gdb) n
337         add_row();
(gdb) s
(anonymous namespace)::InputSequenceEditor::add_row (this=0x22be3c)
    at /lmi/src/lmi/input_sequence_entry.cpp:485
485         insert_row(rows_count_);
(gdb) s
(anonymous namespace)::InputSequenceEditor::insert_row (this=0x22be38,
    address@hidden, new_row=<optimized out>)
    at /lmi/src/lmi/input_sequence_entry.cpp:489
489     {
(gdb) n
490         int const prev_row = new_row - 1;
(gdb) n
503         wxSizerFlags const flags = wxSizerFlags().Align(wxALIGN_LEFT | 
wxALIGN_CENTRE_VERTICAL);
(gdb) n
490         int const prev_row = new_row - 1;
(gdb) n
492         int insert_pos = Col_Max * new_row;
(gdb) n
506         if(!keywords_.empty())
(gdb) n
538             value_ctrl = new(wx) wxTextCtrl(this, wxID_ANY, "0");
(gdb) n
539             value_ctrl->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
(gdb) bt
#0  (anonymous namespace)::InputSequenceEditor::insert_row (
    address@hidden, new_row=<optimized out>)
    at /lmi/src/lmi/input_sequence_entry.cpp:539
#1  0x02b42492 in (anonymous namespace)::InputSequenceEditor::add_row (
    this=0x22be3c) at /lmi/src/lmi/input_sequence_entry.cpp:485
#2  (anonymous namespace)::InputSequenceEditor::InputSequenceEditor (
    input=..., title=..., parent=<optimized out>, this=0x22be3c)
    at /lmi/src/lmi/input_sequence_entry.cpp:337
#3  InputSequenceEntry::UponOpenEditor (this=<optimized out>)
    at /lmi/src/lmi/input_sequence_entry.cpp:1364
#4  0x664c2e42 in wxAppConsoleBase::HandleEvent(wxEvtHandler*, void 
(wxEvtHandler::*)(wxEvent&), wxEvent&) const ()
   from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
#5  0x0022c46c in ?? ()
#6  0x00000000 in ?? ()
(gdb) n
542         sizer_->wxSizer::Insert(insert_pos++, value_ctrl, 
wxSizerFlags(flags).TripleBorder(wxRIGHT));
(gdb) n
543         wxStaticText* from_label = new(wx) wxStaticText(this, wxID_ANY, 
LARGEST_FROM_TEXT);
(gdb) c
Continuing.

Breakpoint 3, (anonymous namespace)::InputSequenceEditor::sequence (s=...,
    this=<optimized out>) at /lmi/src/lmi/input_sequence_entry.cpp:371
371             add_row();
(gdb) s
(anonymous namespace)::InputSequenceEditor::add_row (this=0x22be3c)
    at /lmi/src/lmi/input_sequence_entry.cpp:485
485         insert_row(rows_count_);
(gdb) s
(anonymous namespace)::InputSequenceEditor::insert_row (this=0x22be38,
    address@hidden, new_row=<optimized out>)
    at /lmi/src/lmi/input_sequence_entry.cpp:489
489     {
(gdb) n
490         int const prev_row = new_row - 1;
(gdb) n
503         wxSizerFlags const flags = wxSizerFlags().Align(wxALIGN_LEFT | 
wxALIGN_CENTRE_VERTICAL);
(gdb) n
490         int const prev_row = new_row - 1;
(gdb) n
492         int insert_pos = Col_Max * new_row;
(gdb) n
506         if(!keywords_.empty())
(gdb) n
517                 );
(gdb) n
520             wxArrayString kw;
(gdb) n
521             std::copy(keywords_.begin(), keywords_.end(), 
std::back_inserter(kw));
(gdb) n
522             combo->Append(kw);
(gdb) n
524             if(keywords_only_)
(gdb) n
522             combo->Append(kw);
(gdb) n
524             if(keywords_only_)
(gdb) n
532                 combo->AutoComplete(kw);
(gdb) bt
#0  (anonymous namespace)::InputSequenceEditor::insert_row (
    address@hidden, new_row=<optimized out>)
    at /lmi/src/lmi/input_sequence_entry.cpp:532
#1  0x02b42d24 in (anonymous namespace)::InputSequenceEditor::add_row (
    this=0x22be3c) at /lmi/src/lmi/input_sequence_entry.cpp:485
#2  (anonymous namespace)::InputSequenceEditor::sequence (s=...,
    this=<optimized out>) at /lmi/src/lmi/input_sequence_entry.cpp:371
#3  InputSequenceEntry::UponOpenEditor (this=<optimized out>)
    at /lmi/src/lmi/input_sequence_entry.cpp:1404
#4  0x664c2e42 in wxAppConsoleBase::HandleEvent(wxEvtHandler*, void 
(wxEvtHandler::*)(wxEvent&), wxEvent&) const ()
   from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
#5  0x0022c46c in ?? ()
#6  0x00000000 in ?? ()
(gdb) n

Breakpoint 1, 0x66ccb5d0 in __cxa_pure_virtual ()
   from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
(gdb) bt
#0  0x66ccb5d0 in __cxa_pure_virtual ()
   from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
#1  0x66d46f66 in wxTextAutoCompleteData::ChangeStrings(wxArrayString const&)
    ()
   from 
/opt/lmi/local/lib/wxmsw310u_gcc_gcc-491-1ce7f42362ba3075eeb4be4679f88dd3.dll
#2  0x0022b770 in ?? ()
#3  0x04c790c3 in ?? ()
#4  0x00002024 in ?? ()
#5  0xc845c700 in ?? ()
#6  0xffffffff in ?? ()
#7  0x48387de8 in ?? ()
#8  0xc04d8b00 in ?? ()
#9  0xc7240c89 in ?? ()
#10 0x0001c845 in ?? ()
#11 0xc1890000 in ?? ()
#12 0xe8bc4589 in ?? ()
#13 0x004ff526 in DBDictionary::DBDictionary (this=0x8b0b74c0,
    __vtt_parm=0x8cc15ff, __in_chrg=<optimized out>)
    at /lmi/src/lmi/dbdict.cpp:100
#14 0x24048900 in ?? ()
#15 0x08cc15ff in ?? ()
---Type <return> to continue, or q <return> to quit---
#16 0xec83670b in ?? ()
#17 0x14c48310 in ?? ()
#18 0x04c25e5b in ?? ()
#19 0x748d9000 in ?? ()
#20 0x068b0026 in ?? ()
#21 0x44c7f189 in ?? ()
#22 0x00000424 in ?? ()
#23 0x04c70000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) k
Kill the program being debugged? (y or n) y
(gdb) q
/opt/lmi/bin[0]$




reply via email to

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