On 08/15/2014 11:04 PM, Andrew Zonenberg wrote: > I filed a ticket with upstream > http://trac.wxwidgets.org/ticket/16423#ticket so we'll see what they > say. > > On Fri, 2014-08-15 at 23:53 -0400, Andrew Zonenberg wrote: >> The invalid read seems to be a bug in wxWidgets: >> >> src/gtk/window.cpp:1543 >> >> static void SendSetCursorEvent(wxWindowGTK* win, int x, int y) >> { >> wxSetCursorEvent event(x, y); >> wxWindowGTK* w = win; >> do { >> if (w->GTKProcessEvent(event)) >> { >> gs_overrideCursor = &event.GetCursor();
That's a good catch. 3.0.1 has this bug. 3.0.0 does not. And SVN HEAD does not. Sheesh. Here's subversion head as of today: static void SendSetCursorEvent(wxWindowGTK* win, int x, int y) { wxSetCursorEvent event(x, y); wxWindowGTK* w = win; do { if (w->GTKProcessEvent(event)) { win->GTKUpdateCursor(false, false, &event.GetCursor()); win->m_needCursorReset = true; return; } // this is how wxMSW works... if (w->GetCursor().IsOk()) break; w = w->GetParent(); } while (w); if (win->m_needCursorReset) win->GTKUpdateCursor(); } For a long while I was simply using SVN head and updating it every couple of months. It does seem better than 3.0.1 at least in this regard. It is a shame that this blows the confidence in 3.0.1. Although if a person was going to build from source, I suppose they could patch this bug before building. Anyways, nothing wrong with compatibility of that package you installed, it simply has a crashing bug in it. Dick >> win->GTKUpdateCursor(); >> gs_needCursorResetMap[win] = true; >> return; >> } >> // this is how wxMSW works... >> if (w->GetCursor().IsOk()) >> break; >> w = w->GetParent(); >> } while (w); >> if (gs_needCursorResetMap[win]) >> win->GTKUpdateCursor(); >> } >> >> event is a local variable on the stack and as a result, as soon as this >> function returns gs_overrideCursor is invalid. >> >> I'm not yet sure if this has any relationship whatsoever to the crash >> I'm hunting. >> >> On Fri, 2014-08-15 at 23:31 -0400, Andrew Zonenberg wrote: >>> I'm not using codelight itself, just their precompiled wx binaries, so I >>> can easily remove the binary package, it was just less work than >>> compiling from source. >>> >>> I'm investigating further now, I fixed an unrelated missing variable >>> initializer in the process and will be submitting a patch to that >>> shortly. >>> >>> On Fri, 2014-08-15 at 22:14 -0500, Dick Hollenbeck wrote: >>>> On 08/15/2014 08:32 PM, Andrew Zonenberg wrote: >>>>> Does not crash when run under Valgrind, instead gives this error: >>>>> >>>>> ==32723== Invalid read of size 8 >>>> >>>> ^ this error? I've seen that before and never could figure it out, nor >>>> was it ever the >>>> cause of any problem running valgrind. >>>> >>>> I would say build your own wxwidgets from the 3.0.1 source. We're dealing >>>> with an unknown >>>> problem, so one has to revert to probabilities at that point. >>>> >>>> I think the highest probability is that there is some incompatibility in >>>> your software >>>> stack. Building wx from source is an easy experiment. You do not have to >>>> remove the wx >>>> package if it makes codelight happy. >>>> >>>> Follow the instructions I gave in an earlier email today. Then after >>>> configuring the >>>> kicad build, I run >>>> >>>> (ccmake is in the package cmake-curses-gui I think.) >>>> >>>> $ ccmake . >>>> >>>> in the build directory. Then I paste in >>>> >>>> /opt/wx3.0-stl/bin/wx-config >>>> >>>> into the field named: wxWidgets_CONFIG_EXECUTABLE and reconfigure in >>>> ccmake. >>>> >>>> Likewise for the debug build, which over time will be very helpful for you. >>>> >>>> >>>> Obviously the first part of the /opt/wx3.0-stl/bin/wx-config string came >>>> from the --prefix >>>> argument to the wx configure command. >>>> >>>> Don't forget to run $ sudo ldconfig >>>> after installing the home made wx libraries. >>>> >>>> >>>> >>>> >>>> >>>>> ==32723== at 0x5D00EC0: wxCursor::GetCursor() const (cursor.cpp:287) >>>>> ==32723== by 0x5D20A8D: wxWindow::GTKUpdateCursor(bool, bool) >>>>> (window.cpp:3752) >>>>> ==32723== by 0x5D002A0: UpdateCursors(wxWindow*, bool) >>>>> (cursor.cpp:331) >>>>> ==32723== by 0x5D00F42: SetGlobalCursor(wxCursor const&) >>>>> (cursor.cpp:350) >>>>> ==32723== by 0x5D0109C: wxEndBusyCursor() (cursor.cpp:376) >>>>> ==32723== by 0x1D3FCCDB: >>>>> DIALOG_DRC_CONTROL::OnStartdrcClick(wxCommandEvent&) >>>>> (dialog_drc.cpp:172) >>>>> ==32723== by 0x65F92DE: >>>>> wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, >>>>> wxEvent&) const (appbase.cpp:623) >>>>> ==32723== by 0x6750FF1: >>>>> wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, >>>>> wxEvtHandler*, wxEvent&) (event.cpp:1384) >>>>> ==32723== by 0x67513A5: >>>>> wxEvtHandler::SearchDynamicEventTable(wxEvent&) (event.cpp:1743) >>>>> ==32723== by 0x6751445: wxEvtHandler::TryHereOnly(wxEvent&) >>>>> (event.cpp:1577) >>>>> ==32723== by 0x6751502: wxEvtHandler::ProcessEventLocally(wxEvent&) >>>>> (event.h:3671) >>>>> ==32723== by 0x6751564: wxEvtHandler::ProcessEvent(wxEvent&) >>>>> (event.cpp:1487) >>>>> ==32723== Address 0x7feffdee8 is not stack'd, malloc'd or (recently) >>>>> free'd >>>>> >>>>> >>>>> On Fri, 2014-08-15 at 21:19 -0400, Andrew Zonenberg wrote: >>>>>> Happens every time I run DRC on this board. I don't want to change the >>>>>> design for fear of not being able to reproduce it. >>>>>> >>>>>> This is with the Codelite packages of wx3.0.1 and BZR 5073 kicad on >>>>>> Debian 7. >>>>>> >>>>>> Program received signal SIGSEGV, Segmentation fault. >>>>>> IA__gdk_cursor_ref (cursor=cursor@entry=0xf2e66c318c48348) >>>>>> at /tmp/buildd/gtk+2.0-2.24.10/gdk/gdkcursor.c:57 >>>>>> 57 /tmp/buildd/gtk+2.0-2.24.10/gdk/gdkcursor.c: No such file or >>>>>> directory. >>>>>> (gdb) bt >>>>>> #0 IA__gdk_cursor_ref (cursor=cursor@entry=0xf2e66c318c48348) >>>>>> at /tmp/buildd/gtk+2.0-2.24.10/gdk/gdkcursor.c:57 >>>>>> #1 0x00007ffff47cc691 in IA__gdk_window_set_cursor (window=0xbe3120, >>>>>> cursor=0xf2e66c318c48348) at /tmp/buildd/gtk >>>>>> +2.0-2.24.10/gdk/gdkwindow.c:8199 >>>>>> #2 0x00007ffff6b8897f in wxWindow::GTKUpdateCursor (this=0x8273f0, >>>>>> isBusyOrGlobalCursor=<optimized out>, isRealize=false) >>>>>> at ../src/gtk/window.cpp:3761 >>>>>> #3 0x00007ffff6b682a1 in UpdateCursors (win=win@entry=0x8273f0, >>>>>> isBusyOrGlobalCursor=<optimized out>) at ../src/gtk/cursor.cpp:331 >>>>>> #4 0x00007ffff6b68f43 in SetGlobalCursor (cursor=...) >>>>>> at ../src/gtk/cursor.cpp:350 >>>>>> #5 0x00007ffff6b6909d in wxEndBusyCursor () >>>>>> at ../src/gtk/cursor.cpp:376 >>>>>> #6 0x00007fffe26f4cdc in DIALOG_DRC_CONTROL::OnStartdrcClick >>>>>> (this=0x3645700, event=...) >>>>>> at >>>>>> /nfs/home/azonenberg/Documents/local/programming/3rdparty/kicad/pcbnew/dialogs/dialog_drc.cpp:172 >>>>>> #7 0x00007ffff627c2df in wxAppConsoleBase::CallEventHandler >>>>>> (this=0x7b29e0, handler=0x3645700, functor=..., event=...) >>>>>> at ../src/common/appbase.cpp:623 >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Mailing list: https://launchpad.net/~kicad-developers >>>>>> Post to : kicad-developers@lists.launchpad.net >>>>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>>>> More help : https://help.launchpad.net/ListHelp >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Mailing list: https://launchpad.net/~kicad-developers >>>>> Post to : kicad-developers@lists.launchpad.net >>>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>>> More help : https://help.launchpad.net/ListHelp >>>>> >>>> >>>> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~kicad-developers >>>> Post to : kicad-developers@lists.launchpad.net >>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>> More help : https://help.launchpad.net/ListHelp >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~kicad-developers >>> Post to : kicad-developers@lists.launchpad.net >>> Unsubscribe : https://launchpad.net/~kicad-developers >>> More help : https://help.launchpad.net/ListHelp >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp > > > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp