← Back to team overview

kicad-developers team mailing list archive

Re: Segfault when running DRC

 

I've pretty much confirmed the crash to be an upstream bug. The stack
memory is used by other things, then passed to GDK which then dies
because the cursor is no longer pointing to useful data.

==22321== Invalid read of size 4
==22321==    at 0x81F3B3C: gdk_cursor_ref (gdkcursor.c:57)
==22321==    by 0x8217690: gdk_window_set_cursor (gdkwindow.c:8199)
==22321==    by 0x5D2097E: wxWindow::GTKUpdateCursor(bool, bool)
(window.cpp:3761)
==22321==    by 0x5D002A0: UpdateCursors(wxWindow*, bool)
(cursor.cpp:331)
==22321==    by 0x5D00F42: SetGlobalCursor(wxCursor const&)
(cursor.cpp:350)
==22321==    by 0x5D0109C: wxEndBusyCursor() (cursor.cpp:376)
==22321==    by 0xC6BD7CDB:
DIALOG_DRC_CONTROL::OnStartdrcClick(wxCommandEvent&)
(dialog_drc.cpp:172)
==22321==    by 0x65F92DE:
wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&,
wxEvent&) const (appbase.cpp:623)
==22321==    by 0x6750FF1:
wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&) (event.cpp:1384)
==22321==    by 0x67513A5:
wxEvtHandler::SearchDynamicEventTable(wxEvent&) (event.cpp:1743)
==22321==    by 0x6751445: wxEvtHandler::TryHereOnly(wxEvent&)
(event.cpp:1577)
==22321==    by 0x6751502: wxEvtHandler::ProcessEventLocally(wxEvent&)
(event.h:3671)
==22321==  Address 0x480000441f0ffffd is not stack'd, malloc'd or
(recently) free'd
==22321== 
==22321== 
==22321== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- c
==22321== 
==22321== Process terminating with default action of signal 11
(SIGSEGV): dumping core
==22321==  General Protection Fault
==22321==    at 0x81F3B3C: gdk_cursor_ref (gdkcursor.c:57)
==22321==    by 0x8217690: gdk_window_set_cursor (gdkwindow.c:8199)
==22321==    by 0x5D2097E: wxWindow::GTKUpdateCursor(bool, bool)
(window.cpp:3761)
==22321==    by 0x5D002A0: UpdateCursors(wxWindow*, bool)
(cursor.cpp:331)
==22321==    by 0x5D00F42: SetGlobalCursor(wxCursor const&)
(cursor.cpp:350)
==22321==    by 0x5D0109C: wxEndBusyCursor() (cursor.cpp:376)
==22321==    by 0xC6BD7CDB:
DIALOG_DRC_CONTROL::OnStartdrcClick(wxCommandEvent&)
(dialog_drc.cpp:172)
==22321==    by 0x65F92DE:
wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&,
wxEvent&) const (appbase.cpp:623)
==22321==    by 0x6750FF1:
wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&) (event.cpp:1384)
==22321==    by 0x67513A5:
wxEvtHandler::SearchDynamicEventTable(wxEvent&) (event.cpp:1743)
==22321==    by 0x6751445: wxEvtHandler::TryHereOnly(wxEvent&)
(event.cpp:1577)
==22321==    by 0x6751502: wxEvtHandler::ProcessEventLocally(wxEvent&)
(event.h:3671)



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@xxxxxxxxxxxxxxxxxxx
> >> Unsubscribe : https://launchpad.net/~kicad-developers
> >> More help   : https://help.launchpad.net/ListHelp
> > 
> > 
> > 
> > _______________________________________________
> > Mailing list: https://launchpad.net/~kicad-developers
> > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~kicad-developers
> > More help   : https://help.launchpad.net/ListHelp
> > 
> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp

-- 
Andrew Zonenberg
PhD student, security group
Computer Science Department
Rensselaer Polytechnic Institute
http://colossus.cs.rpi.edu/~azonenberg/

Attachment: signature.asc
Description: This is a digitally signed message part


References