← Back to team overview

kicad-developers team mailing list archive

Re: Thoughts on this SCH_COMPONENT::GetField bug?

 

The custom fields are defined in the Eeschema configuration.

On Wed, Jul 08, 2015 at 10:12:11AM -0400, Wayne Stambaugh wrote:
> Do you have any custom field names defined in you Eeschema configuration
> or are the custom fields defined in the library component that the
> schematic component is linked against?  I'm not sure why the assertion
> is even in this code.  If the call to SCH_COMPONENT::GetField() has an
> invalid index, a NULL pointer should be returned.  Hopefully the caller
> is checking the returned pointer to make sure it is valid.
> 
> On 7/7/2015 10:08 PM, Chris Pavlina wrote:
> > I'm going to investigate this one further, but I don't have time at the 
> > moment, so I thought I'd ping the group and see if anyone else had a 
> > thought.
> > 
> > Occasionally, when working with a recently placed component in eeschema, 
> > I get a crash due to assertion failure. It's this:
> > 
> > #9  0x00007f1591afcbd1 in wxOnAssert (file=0x7f1581aeced8 "/home/cmp/git/kicad/eeschema/sch_component.cpp", line=657, func=0x7f1581aecf1a "GetField", cond=0x7f1581adcf43 "field", msg=0x0) at ./src/common/appbase.cpp:1166
> > #10 0x00007f15818baae1 in SCH_COMPONENT::GetField (this=0xa68c350, aFieldNdx=-1) at /home/cmp/git/kicad/eeschema/sch_component.cpp:657
> > #11 0x00007f15818ba0c4 in SCH_COMPONENT::SCH_COMPONENT (this=0xa68c350, aPart=..., sheet=0x1b84760, unit=1, convert=1, pos=..., setNewItemFlag=true) at /home/cmp/git/kicad/eeschema/sch_component.cpp:163
> > #12 0x00007f158181eb5c in SCH_EDIT_FRAME::Load_Component (this=0x1b7ddf0, aDC=0x7fffdc3226b8, aFilter=0x0, aHistoryList=..., aHistoryLastUnit=@0x7f1581f432c8: 1, aUseLibBrowser=true) at /home/cmp/git/kicad/eeschema/getpart.cpp:223
> > #13 0x00007f1581885229 in SCH_EDIT_FRAME::OnLeftClick (this=0x1b7ddf0, aDC=0x7fffdc3226b8, aPosition=...) at /home/cmp/git/kicad/eeschema/onleftclick.cpp:300
> > #14 0x00007f1581903d78 in SCH_EDIT_FRAME::OnSelectTool (this=0x1b7ddf0, aEvent=...) at /home/cmp/git/kicad/eeschema/schedit.cpp:601
> > #15 0x00007f1591afafd9 in wxAppConsoleBase::HandleEvent (this=0x1926070, handler=0x1b7ddf0, func=(void (wxEvtHandler::*)(wxEvtHandler * const, wxEvent &)) 0x7f1581902640 <SCH_EDIT_FRAME::OnSelectTool(wxCommandEvent&)>, event=...) at ./src/common/appbase.cpp:611
> > 
> > Lines 652-657 in sch_component (this might be offset a bit from yours, I 
> > have a couple changes in my branch at the moment - unrelated, main 
> > branch does it too) are:
> > 
> > if( (unsigned) aFieldNdx < m_Fields.size() )
> >     field = &m_Fields[aFieldNdx];
> > else
> >     field = NULL;
> > 
> > wxASSERT( field );
> > 
> > 
> > Turns out that aFieldNdx, for whatever reason, is -1. This is passed to 
> > it directly from the SCH_COMPONENT constructor, which got its own 
> > indices from LIB_FIELD::GetId(). I've already combed through 
> > LIB_FIELD::Load and verified that it will not populate an ID with -1, 
> > and I'm not sure where it's getting set to this. I don't immediately 
> > have the time to trace it around with watchpoints on m_Id, particularly 
> > since it doesn't always happen (I haven't been able to find a reliable 
> > way to reproduce it, other than "just work with a schematic for a 
> > while").
> > 
> > Possibly of use: the problem field always appears to be a custom field, 
> > never one of the builtins like reference and value.
> > 
> > --
> > Chris
> > 
> > _______________________________________________
> > 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


References