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

14 messages 2011/11/29

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

From: Ayumu Aizawa <ayumu.aizawa@...>
Date: 2011-11-14 17:03:05 UTC
List: ruby-dev #44868
近永さんありがとうございます。
r33753 でなおしておきました。

2011年11月15日1:41 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
> 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