Project

General

Profile

Actions

Bug #6441

closed

IO.pipe on ENFILE

Added by naruse (Yui NARUSE) about 10 years ago. Updated over 9 years ago.

Status:
Rejected
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.0.0dev (2012-05-16 trunk 35659) [x86_64-netbsd6.99.5]
Backport:
[ruby-dev:45640]

Description

今の Ruby は open(2) などで、errno=ENFILE が発生した場合、
すなわち fd を使いきっている場合には、rb_gc() を呼び、IO オブジェクトを GC して、
fd が解放されないか試み、それでもダメだったら諦めるとしています。

しかし、IO.pipe の場合はこれに失敗することがあります。
これは、lazy sweep が上記の目的のため T_FILE の場合は直ちに sweep することにしている所、
pipe の場合はその例外にあたらないからです。

Actions

Also available in: Atom PDF