[#39989] TCPSocket.new でスレッドが止まる。 — take_tk <ggb03124@...>

たけ(tk)です。

15 messages 2004/09/02

[#40018] yaml.rbとdate.rbを組み合わせて使った際の問題 — "Keisuke Minami" <keisuke@...>

こんにちは。三並と申します。

14 messages 2004/09/07
[#40020] Re: yaml.rbとdate.rbを組み合わせて使った際の問題 — IWATSUKI Hiroyuki <don@...> 2004/09/07

岩月と申します。

[ruby-list:40011] FreeBSD portsdb.rb が [BUG] Segmentation fault

From: Mitsuru Ogino <ogino@...>
Date: 2004-09-06 12:09:55 UTC
List: ruby-list #40011
荻野と申します。

FreeBSD 関連の ML の方が良いのかもとも思いましたが、落ちているのは 
Ruby のようですのでこちらに書かせていただきます。問題があればご指導下
さい。

# http://www.ruby-lang.org/ja/ の目次(左側の部分)に「バグかも知れな
# いと思ったら」的なポインタがあるとうれしいと思いました。

Subject の通り、FreeBSD にて portupgrade, portinstall 系のコマンドが使
用できなくなりました。ports tree を cvs で更新して INDEX を再構築しよ
うとしてからのことです。

ruby は ruby-1.8.2-preview2 だと思いますが、FreeBSD 5.2.1-RELEASE-p8 
上で ports current からインストールしました。

    $ /usr/local/bin/ruby18 -v
    ruby 1.8.2 (2004-07-29) [i386-freebsd5]

です。

ここで、たとえば portupgrade -na を実行すると、

    # portupgrade -na
    --->  Reading default options: -v -L /var/log/portupgrade-%s::%s.log
    --->  Session started at: Mon, 06 Sep 2004 20:57:52 +0900
    [Failed `Inappropriate file type or format'] [Updating the portsdb
    <format:bdb1_btree> in /usr/ports ... - 11735 port entries found
    .........1000.........2000.........3000.........4000.........5000
    .........6000.........7000.........8000....
    /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:587:
    [BUG] Segmentation fault
    ruby 1.8.2 (2004-07-29) [i386-freebsd5]

となります(適当に改行してあります)。問題の箇所は、cat -n から見ると
ころ、こんなようなコードです。

   413      case db_driver
   414      when :bdb_btree
   415        @db = BDB::Btree.open @db_file, nil, 'w+', 0664, *@db_params
   416      when :bdb_hash
   417        @db = BDB::Hash.open @db_file, nil, 'w+', 0664, *@db_params
   418      when :bdb1_btree
   419        @db = BDB1::Btree.open @db_file, 'w+', 0664, *@db_params
   420      when :bdb1_hash
   421        @db = BDB1::Hash.open @db_file, 'w+', 0664, *@db_params
   422      else
   423        File.unlink(@db_file) if File.exist?(@db_file)
   424  
   425        @db = DBM.open(@db_filebase, 0664)
   426      end
(略)
   584              @origins << origin
   585              @pkgnames << pkgname
   586  
=> 587              @db[origin] = port_info
   588              @db[pkgname.to_s] = origin


こういった場合の対処は良く分かっていませんので的はずれかも知れませんが、
とりあえず ports から ruby18 を CFLAGS=-g を指定して再インストールし、
gdb /usr/local/bin/ruby18 を実行して run して見ました。すると、

    Program received signal SIGSEGV, Segmentation fault.
    0x282270a6 in memmove () from /lib/libc.so.5

と表示されて止まったので、bt と入力して以下の結果を得ました。とりあえ
ず 20行くらいを載せてみます。

#0  0x282270a6 in memmove () from /lib/libc.so.5
#1  0x08511400 in ?? ()
#2  0x28222efd in __bt_split () from /lib/libc.so.5
#3  0x2822268e in __bt_split () from /lib/libc.so.5
#4  0x2821d537 in __bt_put () from /lib/libc.so.5
#5  0x282680f1 in bdb1_put () from /usr/local/lib/ruby/site_ruby/1.8/i386-freebsd5/bdb1.so
#6  0x2826816d in bdb1_assign () from /usr/local/lib/ruby/site_ruby/1.8/i386-freebsd5/bdb1.so
#7  0x280acbf1 in call_cfunc (func=0x28268130 <bdb1_assign>, recv=135418120, len=2, argc=2, 
    argv=0xbfbf6420) at eval.c:5411
#8  0x2809f3b4 in rb_call0 (klass=135573200, recv=135418120, id=333, oid=333, argc=2, 
    argv=0xbfbf6420, body=0x814a69c, nosuper=0) at eval.c:5536
#9  0x2809fe4c in rb_call (klass=135573200, recv=135418120, mid=333, argc=2, argv=0xbfbf6420, 
    scope=0) at eval.c:5757
#10 0x28099d38 in rb_eval (self=135481640, n=0x82a06a8) at eval.c:3239
#11 0x28099420 in rb_eval (self=135481640, n=0x829fb40) at eval.c:3064
#12 0x2809d8e5 in rb_yield_0 (val=138652440, self=135481640, klass=0, flags=0, avalue=2)
    at eval.c:4745
#13 0x2809dd2b in rb_yield_values (n=-1) at eval.c:4851
#14 0x28090b94 in each_with_index_i (val=138663600, memo=0x8124fc8) at enum.c:802
#15 0x2809d8cc in rb_yield_0 (val=138663600, self=134724024, klass=0, flags=0, avalue=0)
    at eval.c:4742
#16 0x2809dca1 in rb_yield (val=138663600) at eval.c:4827
#17 0x280bbd6f in rb_io_each_line (argc=0, argv=0x0, io=135417940) at io.c:1537
#18 0x280acb9d in call_cfunc (func=0x280bbcec <rb_io_each_line>, recv=135417940, len=-1, argc=0, 
    argv=0x0) at eval.c:5402
#19 0x2809f3b4 in rb_call0 (klass=134689884, recv=135417940, id=3833, oid=3833, argc=0, argv=0x0, 
    body=0x807313c, nosuper=0) at eval.c:5536
#20 0x2809fe4c in rb_call (klass=134689884, recv=135417940, mid=3833, argc=0, argv=0x0, scope=1)
    at eval.c:5757


以上、とりあえずご報告しておきます。必要な情報の取り方があればお教え下
さい。よろしくお願いいたします。

-- 
荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず
Verama Systems

Key fingerprint = 7F26 5414 1805 F31B 1617  10B7 C117 07AE 1691 9BD1

In This Thread

Prev Next