HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

File.createTempFile() と File.deleteOnExit() のコンボ罠

巷ではかなーり昔から認識されている爆弾コードらしい。

String prefix = "testDeleteOnExit_";
String suffix = ".txt";
File in = File.createTempFile(prefix, suffix);
in.deleteOnExit(); // 安全のため

いや、全然「安全」じゃない、むしろ危険らしいんですけど‥

というか、サーバーアプリでこれはない‥基本的には exit() しないのだし‥orz

このコードを初めて見たとき(3年位前かなぁ‥)に、一瞬「嫌なにおい」を嗅ぎ取ったのだが、その時は「動いているもの触るべからず」と強く思っていたのでそのまま放置したが、これが最近になってあだとなった形だ。

まだ自分の手元で再現はできていないけど、バグレポートを見る限りではものすごく簡単な処理を大量に走らせれば発生するようだ。