← Back to team overview

kicad-developers team mailing list archive

Re: Warning regarding global wxStrings and thread-safety

 

Hi Jeff-

Good find.  I note here (http://docs.wxwidgets.org/3.0/classwx_string.html)
that the use of wxString is explicitly discouraged:

"While the use of wxString is unavoidable in wxWidgets program, you are
encouraged to use the standard string classes std::string or std::wstring
in your applications and convert them to and from wxString only when
interacting with wxWidgets."

I imagine that this or similar is what they had in mind.

-S

Am Do., 2. Aug. 2018 um 10:02 Uhr schrieb Jeff Young <jeff@xxxxxxxxx>:

> I finally caught a long-standing but very infrequent crash in the
> debugger.  It’s somewhat harrowing.
>
> wxString keeps multiple iterators on a string up-to-date with regard to
> editing.  It keeps them in a linked list.  If you reference a global string
> in a thread (*even* in a const manner, such as taking its length),
> wxString will create an interator in your thread, link it into the list,
> and then unlink it when done (with no thread safety).  Sooner or later,
> this *will* crash.
>
> This is the offending line:
>
>    wxString wildcard = wxT( "*." ) + KiCadFootprintFileExtension;
>
> Looks innocuous enough, doesn’t it?
>
> Anyway, something to keep in mind….
> _______________________________________________
> 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