皆さん、ご回答、ありがとうございます。

>>454
まさにそれと思しきクラッシュが終了時にランダムで発生することに気付きました(汗)
detach()もjoin()もせずに終わろうとしたときに百発百中で出るのと同じ「R6010 -abort() has been called」というエラーです。

Sleep()でも呼んで十分に待てば、実用上は問題ないんでしょうけど、
こういう曖昧なコードは嫌いなので、なんとかキレイにスパッと終わりたいです・・・。

Singletonが適したクラスではあるのですが、
この問題をうまく裁けないようであれば、諦めて通常のクラスにすることを検討します。