There are other crash, that only occur when cc- and compiler-plugin are enabled (if I remember correctly).
If one plugin depends on another it's always unsafe, and we should have some kind of dependency and priority checking for the plugins, to force a load and unload-order.
But in my opinion no plugin should try to use other plugins funnctions before all plugins are loaded (that might not work, if some functions are used for initializing) and after unloading plugins has started.
The crash happens like below steps(I guess):
1, app started
2, both cc and compiler plugin loaded correctly
3, user open a cbp project
4, cc start parsing (after some timer delay) and query compiler search path from compiler plugin(this internally call gcc command line)
5, user click the "close" button of the app
Then, I guess compiler destroyed before cc, so crash happens.
This will not cover the problem of one plugin depending on another one in normal use.
So the dependency and priority approach might be better.
Yes, I think priority approach is good.