[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi] Segfault in wxDVC census manager
From: |
Greg Chicares |
Subject: |
[lmi] Segfault in wxDVC census manager |
Date: |
Thu, 18 Aug 2011 15:08:47 +0000 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 |
Loading a saved census, setting variable column width, and deleting a cell
causes a segfault. Here's an alternative way to reproduce it from scratch:
File | New | Census
Census | Add cell
Census | Edit cell | [change any input field[*]] | OK
Census | Varying column width
Census | Delete cell(s) | Yes
[*]--It seems sufficient to change any input field in this step; I did:
"MEC avoidance": select "Reduce premium"
What's essential is that not all cells are identical.
Observed symptoms vary, seemingly at random. lmi_terminate_handler()
(used as the argument of std::set_terminate()) might be called; some
other lmi messagebox might appear; all cells in the census might be
deleted; or lmi might abruptly close.
It doesn't seem to matter which cell is deleted.
Without this curiously necessary step above:
Census | Varying column width
the segfault does not occur.
This problem has been confirmed with lmi revisions 5254 and 5259,
though I suspect it arose in an earlier revision. It does not occur
with an archived May 2011 build that displayed a census in a listview.
This gdb session points to CensusViewDataViewModel::GetValueByRow():
/usr/bin[0]$cd /opt/lmi/bin
/opt/lmi/bin[0]$gdb ./lmi_wx_shared
GNU gdb 6.8.0.20080328-cvs (cygwin-special)
[...]
This GDB was configured as "i686-pc-cygwin"...
(gdb) set arg --ash_nazg --data_path=/opt/lmi/data
(gdb) r
Starting program: /opt/lmi/bin/lmi_wx_shared --ash_nazg
--data_path=/opt/lmi/data
[New thread 3996.0xa74]
Error while mapping shared library sections:
/opt/lmi/bin/libexslt-0.dll: No such file or directory.
[I believe that's a known issue with gdb; the dll is certainly present.]
warning: HEAP[lmi_wx_shared.exe]:
warning: Invalid Address specified to RtlFreeHeap( 003F0000, 6611BF28 )
Program received signal SIGTRAP, Trace/breakpoint trap.
0x7c90120f in ntdll!DbgUiConnectToDbg ()
from /cygdrive/c/WINDOWS/system32/ntdll.dll
(gdb) handle SIGTRAP nostop noprint
SIGTRAP is used by the debugger.
Are you sure you want to change it? (y or n) y
[Otherwise that trap interrupts the gdb session many, many times.]
Signal Stop Print Pass to program Description
SIGTRAP No No No Trace/breakpoint trap
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /opt/lmi/bin/lmi_wx_shared --ash_nazg
--data_path=/opt/lmi/data
[New thread 2636.0x924]
Error while mapping shared library sections:
/opt/lmi/bin/libexslt-0.dll: No such file or directory.
warning: HEAP[lmi_wx_shared.exe]:
warning: Invalid Address specified to RtlFreeHeap( 003F0000, 6611BF28 )
[...skipped SIGTRAPs...]
warning: In file ../src/msw/mdi.cpp at line 1427: 'SendMessage(WM_MDISETMENU)' f
ailed with error 0x00000008 (not enough storage is available to process this com
mand.).
[Is that SendMessage() error significant? I have gigabytes of free RAM.]
[...more skipped SIGTRAPs...]
Program received signal SIGSEGV, Segmentation fault.
std::_Rb_tree<std::string, std::pair<std::string const, any_member<Input> >, std
::_Select1st<std::pair<std::string const, any_member<Input> > >, std::less<std::
string>, std::allocator<std::pair<std::string const, any_member<Input> > > >::fi
nd (this=0xfeeefeee, address@hidden)
at C:/opt/lmi/MinGW-20090203/bin/../lib/gcc/mingw32/3.4.5/../../../../includ
e/c++/3.4.5/bits/basic_string.h:269
269 { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
Current language: auto; currently c++
(gdb) bt
#0 std::_Rb_tree<std::string, std::pair<std::string const, any_member<Input> >,
std::_Select1st<std::pair<std::string const, any_member<Input> > >, std::less<s
td::string>, std::allocator<std::pair<std::string const, any_member<Input> > > >
::find (this=0xfeeefeee, address@hidden)
at C:/opt/lmi/MinGW-20090203/bin/../lib/gcc/mingw32/3.4.5/../../../../includ
e/c++/3.4.5/bits/basic_string.h:269
#1 0x004e07e4 in MemberSymbolTable<Input>::operator[] (this=0x2077f38,
address@hidden)
at C:/opt/lmi/MinGW-20090203/bin/../lib/gcc/mingw32/3.4.5/../../../../includ
e/c++/3.4.5/bits/stl_map.h:498
#2 0x004fb442 in CensusViewDataViewModel::GetValueByRow (this=0x2007810,
address@hidden, row=3, col=33)
at C:/opt/lmi/MinGW-20090203/bin/../lib/gcc/mingw32/3.4.5/../../../../includ
e/c++/3.4.5/bits/stl_vector.h:462
#3 0x658b4043 in wxDataViewRendererBase::PrepareForItem ()
from /opt/lmi/local/lib/wxmsw292u_gcc_gcc-345-d6cec5bd331ba90b74c1e2fcb056362
0.dll
#4 0x658f21bc in wxDataViewCtrl::GetBestColumnWidth ()
from /opt/lmi/local/lib/wxmsw292u_gcc_gcc-345-d6cec5bd331ba90b74c1e2fcb056362
0.dll
#5 0x658f3d48 in wxDataViewColumn::GetWidth ()
from /opt/lmi/local/lib/wxmsw292u_gcc_gcc-345-d6cec5bd331ba90b74c1e2fcb056362
0.dll
#6 0x65579cd4 in wxHeaderCtrl::DoInsertItem ()
---Type <return> to continue, or q <return> to quit---q
from /opt/lmi/local/lib/wxmsw29Quit
(gdb) k
Kill the program being debugged? (y or n) y
(gdb) q
/opt/lmi/bin[0]$
- [lmi] Segfault in wxDVC census manager,
Greg Chicares <=