[erlang-questions] wxErlang and wxWidgets 3.0

Sergei Golovan <>
Thu Nov 21 10:16:04 CET 2013


Hi Dan,

On Wed, Nov 20, 2013 at 10:57 PM, Sergei Golovan <> wrote:
> On Mon, Nov 18, 2013 at 11:52 AM, Sergei Golovan <> wrote:
>>
>> 4) Segfault of dialyzer. dialyzer --wx segfaults immediately after I
>> click any of the "Add", "Add Dir", or "Add Recursively" button. It
>> works fine with 2.8.

Apparently, wxItemContainer::Set doesn't tolerate NULL clientData
anymore. After I removed the clientData argument from Set call the
segfault is gone (the code still works with wxWidgets 2.8):

-----------------------------------
--- a/lib/wx/c_src/gen/wxe_funcs.cpp
+++ b/lib/wx/c_src/gen/wxe_funcs.cpp
@@ -15137,7 +15137,7 @@
  }
  bp += (8-((0+ itemsASz) & 7 )) & 7;
  if(!This) throw wxe_badarg(0);
- This->Set(items,(void **) NULL);
+ This->Set(items);
  break;
 }
 case wxListBox_HitTest: { // wxListBox::HitTest
-----------------------------------

Here is a small excerpt from the backtrace with debug symbols enabled:

#0  0x00007f7d253e11da in wxItemContainer::AssignNewItemClientData
(this=0x7f7cc40e0cc0, pos=0, clientData=0x0, n=0,
type=wxClientData_Void)
    at ../src/common/ctrlsub.cpp:253
#1  0x00007f7d253e129a in wxItemContainer::DoInsertItemsInLoop
(this==0x7f7cc40e0cc0, items=..., pos=1, =0,
    clientData==0x0,
type==wxClientData_Void) at ../src/common/ctrlsub.cpp:142
#2  0x00007f7d2538e084 in wxListBox::DoInsertItems
(this=0x7f7cc40e0a50, items=..., pos=0, clientData=0x0,
type=wxClientData_Void)
    at ../src/gtk/listbox.cpp:453
#3  0x00007f7d34bd2a64 in AppendItems (type=wxClientData_Void,
clientData=0x0, items=..., this=0x7f7cc40e0cc0) at
/usr/include/wx-3.0/wx/ctrlsub.h:113
#4  AppendItems (clientData=0x0, items=..., this=0x7f7cc40e0cc0) at
/usr/include/wx-3.0/wx/ctrlsub.h:126
#5  Append (clientData=0x0, items=..., this=0x7f7cc40e0cc0) at
/usr/include/wx-3.0/wx/ctrlsub.h:207
#6  wxItemContainer::Set (this==0x7f7cc40e0cc0, items=...,
clientData==0x0) at
/usr/include/wx-3.0/wx/ctrlsub.h:265
#7  0x00007f7d34b994a1 in WxeApp::wxe_dispatch
(this==0x7f7cc4000980, Ecmd=...) at gen/wxe_funcs.cpp:15140

Cheers!
-- 
Sergei Golovan



More information about the erlang-questions mailing list