[#39464] Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

25 messages 2004/04/01
[#39608] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

遅い反応&File.fnmatchは使った事ない&ruby-devの方では

[#39609] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

File.fnmatch(と Dir.glob)をちょっと使ってみたのですが、

[#39610] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/05/02

山本です。

[#39611] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39613] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39616] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39620] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39621] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/03

まつもと ゆきひろです

[#39622] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[ruby-list:39541] Webrick + ruby-mswin32 で Errno::EINVAL

From: Ken-ichi HASHIMOTO <ken@...14m.org>
Date: 2004-04-12 13:16:27 UTC
List: ruby-list #39541
橋本です。

ruby-mswin32の問題だと思うのですが、webrickを使った場合しか
再現方法が分かっていません。
今まで悩んでいたのですが、調査にも詰まってきたので、
皆様のお力をお借りしたくご報告させていただきます。

現象:
 webrickでwebサーバを動作させ、ローカルからブラウザで
 多くの要求を出すとSOCKETが例外を出す。
 ログを最後に書いておきます。

再現コード:
--------------------
require 'webrick'
s=WEBrick::HTTPServer.new(
		:BindAddress    => "127.0.0.1",
		:Port           => 23456
	)
trap("INT"){ s.shutdown }
s.start
--------------------

再現方法:
  インターネットエクスプローラから該当アドレスにアクセスし
  多重に要求を出す。
  例:
    IE から http://localhost:23456/ にアクセスし、その後
    リロードをたくさん(F5攻撃)行う。

再現環境
  ruby 1.8.1 mswin 版
  ruby 1.9.0 mswin 版

  OS Windows 2000 Pro + SP4
  CPU Mobile P3 850MHz
  MEM 384M

その他情報:
  以前から調査を行っていた時の記憶です。
  (事実と異なる場合があるかもしれませんが、参考になればと思い書いておきます)
  ・ruby 1.6 mswin版でも発生していた
  ・場合によるが、gets で発生する場合と write で発生する場合がある
    (例えば、rthmlなファイルを処理した時、writeで同様に発生する場合もある)
  ・writeの場合、socket に対して << でデータを書いているが、 socket に
    send を行ったところ、再現しなくなったように思える
    (しかし、getsで発生するようになるので、本当に大丈夫か分からない)
  ・Linux では発生していないっぽい
    (昔の調査でやっていたため、もしかすると勘違いかも)
  ・IO(io.c) の バッファリング の処理付近で発生しているっぽい
    (
     Scoket系の個所にトレース文を入れてコンパイルしてみたが、
     Errno::EINVAL を発生させる場所は見つかっていない。
     IO の 例外を出す付近で発生させてる事を確認した事を覚えている
    )

  ・単純なソケットの要求処理をRUBY thread で多重処理させても
    発生しなかった(負荷だけの問題だけではないらしい)

憶測:
  ・Winsock と ファイルディスクリプタに関する何かが windowsだと何か変?
    (Win95とかだと問題があるとかいう事を聞いた事がある)
  ・IO系と、RubyのThreadに関して、mswin32版だと相性が悪い?

ログ:
>ruby bug.rb
[2004-04-12 21:21:55] INFO  WEBrick 1.3.1
[2004-04-12 21:21:55] INFO  ruby 1.8.1 (2004-04-02) [i386-mswin32]
[2004-04-12 21:21:55] INFO  WEBrick::HTTPServer#start: pid=2060 port=23456
LAPIS2 - - [12/Apr/2004:21:22:18 東京 (標準時)] "GET / HTTP/1.1" 404 271
- -> /
LAPIS2 - - [12/Apr/2004:21:22:22 東京 (標準時)] "GET / HTTP/1.1" 404 271
- -> /
LAPIS2 - - [12/Apr/2004:21:22:27 東京 (標準時)] "GET / HTTP/1.1" 404 271
- -> /
[2004-04-12 21:22:28] ERROR Errno::EINVAL: Invalid argument
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:307:in `gets'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:307:in `__send__'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:307:in `_read_data'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:306:in `timeout'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/timeout.rb:55:in `timeout'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:306:in `_read_data'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:317:in `read_line'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:207:in `read_request_line'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httprequest.rb:80:in `parse'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/httpserver.rb:46:in `run'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:150:in `start_thread'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:144:in `start'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:144:in `start_thread'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:94:in `start'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:89:in `each'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:89:in `start'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:79:in `start'
        C:/OtherProgramFiles/Ruby/lib/ruby/1.8/webrick/server.rb:79:in `start'
        bug.rb:8

>d:\ruby-1.9\bin\ruby bug.rb
[2004-04-12 21:29:16] INFO  WEBrick 1.3.1
[2004-04-12 21:29:16] INFO  ruby 1.9.0 (2004-04-02) [i386-mswin32]
[2004-04-12 21:29:16] INFO  WEBrick::HTTPServer#start: pid=2048 port=23456
[2004-04-12 21:29:40] ERROR `/' not found.
LAPIS2 - - [12/Apr/2004:21:29:40 東京 (標準時)] "GET / HTTP/1.1" 404 271
- -> /
[2004-04-12 21:29:45] ERROR `/' not found.
LAPIS2 - - [12/Apr/2004:21:29:45 東京 (標準時)] "GET / HTTP/1.1" 404 271
- -> /
[2004-04-12 21:29:45] ERROR Errno::EINVAL: Invalid argument
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:307:in `gets'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:307:in `__send__'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:307:in `_read_data'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:306:in `timeout'
        d:/ruby-1.9/lib/ruby/1.9/timeout.rb:55:in `timeout'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:306:in `_read_data'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:317:in `read_line'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:207:in `read_request_line'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httprequest.rb:80:in `parse'
        d:/ruby-1.9/lib/ruby/1.9/webrick/httpserver.rb:49:in `run'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:153:in `start_thread'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:147:in `start'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:147:in `start_thread'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:97:in `start'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:89:in `each'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:89:in `start'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:79:in `start'
        d:/ruby-1.9/lib/ruby/1.9/webrick/server.rb:79:in `start'
        bug.rb:8

--
Ken-ichi HASHIMOTO
E-Mail ken@club.h14m.org

In This Thread

Prev Next