[#11952] NORETURN — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

24 messages 2001/01/10
[#11956] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11957] Re: NORETURN — matz@... (Yukihiro Matsumoto) 2001/01/10

まつもと ゆきひろです

[#11958] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11959] CVS branches (Re: Re: NORETURN) — matz@... (Yukihiro Matsumoto) 2001/01/10

[#12087] string#index, gsub, []= のバグ? — Beyond <beyond@...>

18 messages 2001/01/27
[#12091] Re: string#index, gsub, []= のバグ? — matz@... (Yukihiro Matsumoto) 2001/01/27

まつもと ゆきひろです

[ruby-dev:12087] string#index, gsub, []= のバグ?

From: Beyond <beyond@...>
Date: 2001-01-27 12:08:40 UTC
List: ruby-dev #12087
はじめまして。Beyondと申します。
よろしくお願いいたします。

さて、cgi.rb を使っていて、test1.rb のようなコードを実行すると、以下のよ
うなエラーメッセージを出して止まります。

/usr/local/lib/ruby/1.6/cgi.rb:966: [BUG] Segmentation fault
ruby 1.6.2 (2000-12-25) [i686-linux]
Aborted (core dumped)

で、cgi.rb の966行目は CGI#pretty なので、その関数を整理した結果、
test2.rb のような簡単なコードでも、同様のエラーで止まることが分かりまし
た。

test2.rb:8: [BUG] Segmentation fault
ruby 1.6.2 (2000-12-25) [i686-linux]
Aborted (core dumped)

・正規表現でindex
・gsub
・[]= で、文字列の長さを長くする
と言うのを、この順番で、何回も繰り返すと駄目なようです。index を文字列で
行うようにした場合、数万回程度のループでは正常に動きました。

繰り返し回数(maxの値)が小さいときは正常に動きます。RedHat6.2 および、
Windows2000 + cygwin 上の、ruby 1.6.2 で確認いたしました。

--- test1.rb
#! /usr/local/bin/ruby

require "cgi"

$max = 2000;

cgi = CGI.new( "html3" );
cgi.out {
  cgi.html ( "PRETTY" ) {
    cgi.body {
      cgi.table() {
        (0 .. $max).collect {
          cgi.tr {
            "aa";
          }
        }.join( "" );
      }
    }
  }
}
---

--- test2.rb
lines = "T" * 1024;
re    = /T/;
max   = 5000;

(0 ... max).each { |i|
  lines.index( re );
  "a".gsub( "", "" );
  lines[ 2...3 ] = "aaa";
}
---

---------------------
Beyond

In This Thread

Prev Next