← Back to team overview

kicad-developers team mailing list archive

Warning regarding global wxStrings and thread-safety

 

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….

Follow ups