[#26266] pragma on ripper — nobuyoshi nakada <nobuyoshi.nakada@...>

なかだです。

15 messages 2005/06/02

[#26312] rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org>

最近、とあるプログラム(五月雨)が、無限ループに陥ることが何回かありました。

32 messages 2005/06/09
[#26323] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/10

In article <TYOMLEM04Rqf69aZbLA0000002d@tyomlvem02.e2k.ad.ge.com>,

[#26329] Re: rb_gc_mark_threads spin — nobu@... 2005/06/10

なかだです。

[#26331] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/11

In article <200506101543.j5AFhToG009328@sharui.nakada.niregi.kanuma.tochigi.jp>,

[#26333] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/11

In article <8764wlil9l.fsf@m17n.org>,

[#26334] Re: rb_gc_mark_threads spin — nobu@... 2005/06/11

なかだです。

[#26337] Re: rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org> 2005/06/11

In article <200506111335.j5BDZkoG019423@sharui.nakada.niregi.kanuma.tochigi.jp>,

[#26405] WEBrick DoS vulnerability — Tanaka Akira <akr@...17n.org>

NetBSD 2.0 で WEBrick を使って HTTP サーバを動かした場合、クライアント

24 messages 2005/06/29
[#26477] Re: WEBrick DoS vulnerability — GOTOU Yuuzou <gotoyuzo@...> 2005/07/08

ごとうゆうぞうです。

[#26480] Re: WEBrick DoS vulnerability — Tanaka Akira <akr@...17n.org> 2005/07/08

In article <20050708.175802.957830318.gotoyuzo@sawara.does.notwork.org>,

[#26481] Re: WEBrick DoS vulnerability — GOTOU Yuuzou <gotoyuzo@...> 2005/07/08

In message <87fyupzgcq.fsf@m17n.org>,

[#26421] Subversion — Shugo Maeda <shugo@...>

前田です。

24 messages 2005/06/30
[#26422] Re: Subversion — Yukihiro Matsumoto <matz@...> 2005/06/30

まつもと ゆきひろです

[#26423] Re: Subversion — "U.Nakamura" <usa@...> 2005/06/30

こんにちは、なかむら(う)です。

[ruby-dev:26269] Re: IO.select dumps core

From: Tanaka Akira <akr@...17n.org>
Date: 2005-06-02 15:25:29 UTC
List: ruby-dev #26269
In article <200506012321.j51NLSY4022931@sharui.nakada.niregi.kanuma.tochigi.jp>,
  nobu@ruby-lang.org writes:

> あまりFD_SETSIZEを避ける必要もないとは思いますが。

ふむ。

[ruby-dev:26264] では避けるようにしていただいたので説得の必要はなくなっ
たのですが、もう少し考えてみました。

どうも私は howmany で求めたサイズは fd_set がビット列であるということ
を仮定していることが気になっているようです。つまり、fd_set がビット列
でなく、たとえば Windows みたいな構造だと、sizeof(fd_set) は
howmany(FD_SETSIZE, NFDBITS) よりもずっと大きくなる可能性が有って、変
なことが起こるのではなかろうか、というわけです。

もちろん Windows では howmany はつかわないようになっているわけですし、
また、ビット列でなければ NFDBITS はないはずだといわれればそれはそうか
もしれないと思います。また、実際にそういう変なことが起こる環境を知って
いるかといわれれば知らないので、現時点では実際の問題は示せないんですが。

> どちらかといえば、[ruby-core:05088]のようにselect()がソケットし
> か扱えない環境では、ソケット以外を別扱いにするコードを含めたほ
> うがいいのかも知れません。

ふむ。

>> poll にすれば救える環境って存在するのかなぁ?
>
> SysVベース?

これはデフォルトの FD_SETSIZE よりも多くの fd は select が扱えないが、
poll なら扱えるという環境があるか、という疑問なんですが、さて。

調べてみると... http://vce.ce-lab.net/docs/linuxtune-en.html によれば
Linux 2.2 の select はカーネルの中で FD_SETSIZE を使っていてその制約が
あったそうです。もしかしたら、そういうシステムでは poll を使うと
FD_SETSIZE 以上の fd を救えるのかもしれません。

まぁ、効率の点では poll はよくない場合もあるという話があるようですし、
poll に挑戦するのは実際に poll で救えるケースがわかってからで遅くはな
いとは思いますが。
http://www.purplet.demon.co.uk/linux/select/pollprob.html

In article <200506020045.j520jXY4024170@sharui.nakada.niregi.kanuma.tochigi.jp>,
  nobu@ruby-lang.org writes:

> +    int m = howmany(n + 1, NFDBITS) * NFDBITS;
> +    int o = howmany(fds->maxfd, NFDBITS) * NFDBITS;

> +    int size = howmany(max, NFDBITS) * NFDBITS;

この 3つで NFDBITS を乗じていますが、そうじゃなくて sizeof(fd_mask) だ
と思います。

あと、rb_io_wait_readable の

       rb_ensure(wait_readable, (VALUE)&rfds,
                 (VALUE (*)_((VALUE)))rb_fd_zero, (VALUE)&rfds);

の rb_fd_zero は rb_fd_term でしょうか?

rb_io_wait_writable も同様です。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread