[#44904] [ruby-trunk - Bug #5688][Open] Solaris10 で spawn を繰り返すとメモリリークする — okkez _ <redmine@...>

14 messages 2011/11/29

[ruby-dev:44867] Re: [Backport93 - Backport #5429] 64ビットなFreeBSDのioctlでビット31が1なリクエストの時の不具合

From: KOSAKI Motohiro <kosaki.motohiro@...>
Date: 2011-11-14 16:41:55 UTC
List: ruby-dev #44867
2011年11月14日11:25 Tomoyuki Chikanaga <nagachika00@gmail.com>:
>
> Issue #5429 has been updated by Tomoyuki Chikanaga.
>
>
> あいざわさんのパッチだと、Tempfile.new がブロックを yield しないので、assert を通っていないだけのようです。
>
> SnowLeopard の man fcntl によると
>
>     [EINVAL]           Cmd is F_DUPFD and arg is negative or greater than the maximum allowable number (see getdtablesize(2)).
>
> で getdtablesize() は 256 を返すのでとりあえず 500 -> 255 にすると通るようになりました。
> 500 というのは他の open 済みの fd と重複しない程度に大きな数字ということだと思うので、とりあえず 255 にしてしまってもいいでしょうか。ちゃんと空き fd を確保してそこに dup するようにしたほうがいいのかもしれませんが。

うーん、あんまり凝ったことをするとまた別のOSの制限にひっかかるかもしれないので
255でお願いできるとうれしいなあ。
fcntlのテストが全然ないから追加したんだけど、ポータブルに動きそうなコマンドって
難しいのよねえ・・

In This Thread