Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Too many open files
竹迫です。
Tadamasa Teranishi wrote:
>knok@xxxxxxxxxxxxx wrote:
>>>> HACKING-ja に書いてあるのですが、現状のファイルアクセスのポリシーは
>>>>
>>>> * ファイルは陽に閉じず、 destructor にまかせる
>>>> - $fh->close() しない (スコープで制限する)
>>>>
>>>> ということになっています。perl の GC との関連があるのかもしれません。
>>
>> > この話は perl 5.8 の destructor でファイルのクローズがうまくいって
>> > いないバグがあるのではないかということでしょうか?
>>
>> それに近い話です。my 変数が scope からはずれても即座には破棄されない
>> のかなあ、という気がしています。以前もそれが原因による問題らしきものに
>> 遭遇した記憶があり、pdf.pl では結局陽に undef しています。
随分昔の話になりますが・・・
Re: NMZ.status Bug?
http://www.namazu.org/ml/namazu-devel-ja/msg00979.html
new IO::File で作成したファイルハンドル $fh が、スコープを抜けたときに
うまくデストラクタが実行されずにファイルをオープンしたままになっている
問題が過去にも存在していました。そのとき問題になった処理系は Windows版
ActivePerl で、ここでも同様に、明示的に undef もしくは ->close して
おくという対策を施しました。
>> 改めてコードをざっと見返してみましたが、基本的には極力短い scope の
>> なかで open/close するようになっているようです。期待どおりであれば本来
>> こういう事態は起きないはずなのですが...
>
>scope から外れてもすぐには destructor が呼ばれず、生き続けるという
>のが仕様ならば、ちょっと対策を考えないといけないですね。
># ガベージコレクションで、まとめて後で殺されるって仕様なのかな。
GCの実行タイミングは、処理系によって異なる可能性があるということでしょうか。
>少なくともファイルのクローズは destructor に頼るのではなく、自前で
>やらないといけないのかもしれませんね。
HACKING-ja が書かれたのは結構昔なので、そろそろ改訂しても良い頃
かもしれません。同様の問題にまたハマるのも極力避けたいですし…
--
株式会社ドリーム・アーツ
竹迫 良範 <takesako@xxxxxxxxxx>