KnownPluginList isn’t thread safe. Scanning for plugins from a thread will call
KnownPluginList::addType() which enters the
typesArrayLock before modifying the list of types.
However, getNumTypes(), begin(), end(), and getType() that reads from the
KnownPluginList don’t use the
typesArrayLock. As well, the
typesArrayLock is private so I can’t enter the lock myself.
So If I get a change message and then try and iterate over the KnownPluginList to see what’s up, then another plugin gets scanned as I’m still iterating, everything blows up.