Project

General

Profile

Actions

Bug #373

closed

MingwでIO#dupがブロックする

Added by wanabe (_ wanabe) over 16 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.2dev (2009-11-06 trunk 25671) [i386-mingw32]
Backport:
[ruby-dev:35648]

Description

=begin
ワナベと申します。
ruby-list に送った不具合を改めてこちらにも書かせていただきます。

Mingw 上の trunkで、test/ruby/test_io.rb の test_dup のように
パイプを最大まで作成してから IOオブジェクトの dup を繰り返すと
処理が停止します。

$ ./ruby -ve '
a = []
loop{a.push IO.pipe} rescue nil
loop {a.push(p a[0][0].dup)}'
ruby 1.9.0 (2008-07-24 revision 18196) [i386-mingw32]
#IO:0xbbdbe0 # ここで処理が止まる

また以下の結果から、msvcrt の問題のように思えます。

$ cat test.c
#include <stdio.h>
#include <io.h>
int main(int argc, char **argv) {
int n = 0;
while(_dup(0) != -1) n++;
printf("n = %i\n", n);
_dup(0);
printf("fin\n");
return 0;
}

$ gcc -mno-cygwin test.c && ./a.exe
n = 2045 // ← CTRL+C で中断するまで処理が止まる

$ gcc -mno-cygwin test.c -lmsvcr71 && ./a.exe
n = 2045
fin

--
ワナベ
=end


Files

test_io_noblock.patch (490 Bytes) test_io_noblock.patch wanabe (_ wanabe), 11/06/2009 07:40 PM
test_io_noblock.patch (490 Bytes) test_io_noblock.patch wanabe (_ wanabe), 11/06/2009 07:59 PM

Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #1500: test_io runs forever in windowsThird Party's Issuenobu (Nobuyoshi Nakada)05/21/2009Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0