kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #12996
Re: Static initialization order fiasco
On 04/12/2014 02:56 PM, Alexander Lunev wrote:
> This week I tried to build recent revisions of KiCad. Every attempt I built them, Pcbnew
> fell with segmentation fault. I tried different versions of wxWidgets with different
> options. It did not help. It was especially strange because other developers told me that
> they can build and run the same revision (e.g. revision 4751) of Pcbnew normally.
> As it turned out, the issue is with undefined static initialization order.
>
> lp:kicad revision 4792 and earlier:
>
> class_netclass.cpp (line 39):
> const wxString NETCLASS::Default = wxT("Default");
>
> class_netinfolist.cpp (line 283):
> NETINFO_ITEM NETINFO_LIST::ORPHANED = NETINFO_ITEM( NULL, wxEmptyString,
> NETINFO_LIST::UNCONNECTED );
>
> class_netinfo_item.cpp (line 52...):
> NETINFO_ITEM::NETINFO_ITEM( BOARD_ITEM* aParent, const wxString& aNetName, int aNetCode ) :
> m_NetCode( aNetCode ), m_Netname( aNetName ), m_ShortNetname( m_Netname.AfterLast( '/' ) )
> {
> m_parent = aParent;
> m_RatsnestStartIdx = 0; // Starting point of ratsnests of this net in a
> // general buffer of ratsnest
> m_RatsnestEndIdx = 0; // Ending point of ratsnests of this net
>
> m_NetClassName = NETCLASS::Default; // !!!!! here NETCLASS::Default may not be yet
> initialized !!!!!
> m_NetClass = NULL;
> }
Nice catch.
> If there are other known similar places in the project, please, let us know.
Probably won't let you know. Instead we'll just fix them.
I have removed tons of static constructors in the last month, I'm sure over 200. And even
more last night.
This is a reversal in trend however, in a positive direction.
BTW, this is not a fiasco. Its just another of several bugs.
> It is difficult enough to review the whole project visually and moreover such bugs are subtle.
>
> Alexander
>
>
> _______________________________________________
> 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
>
Follow ups
References