kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #37006
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