あおきです。

もとは ruby-talk での報告なんですが、ぼくには手に負えなく
なってきたので知恵を貸してください。
元記事は [ruby-talk:31735] からのスレッドです。

[環境]

  FreeBSD/Alpha (4.4-RELEASE)
  ruby 1.6.6 (2001-12-26) [alpha-freebsd4]
  racc 1.4.x
  rdtool 0.6.10

[現象]

  alpha-freebsd4 上で RDtool 0.6.10 の rdblockparser.ry を
  racc でコンパイルすると ruby が SEGV で落ちる。

    racc  rd/rdblockparser.ry
    /usr/local/lib/ruby/site_ruby/1.6/racc/output.rb:239: [BUG] Segmentation fault
    ruby 1.6.6 (2001-12-26) [alpha-freebsd4]
    *** Signal 6

  スタックトレース

    felix# gdb ruby
    GNU gdb 4.18
    Copyright 1998 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain
    conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This GDB was configured as "alpha-unknown-freebsd"...
    (no debugging symbols found)...
    (gdb) run -S racc rd/rdblockparser.ry
    Starting program: /usr/local/bin/ruby -S racc rd/rdblockparser.ry
    (no debugging symbols found)...(no debugging symbols found)...
    (no debugging symbols found)...(no debugging symbols found)...
    (no debugging symbols found)...(no debugging symbols found)...
    Program received signal SIGSEGV, Segmentation fault.
    0x1600eb488 in init_regs () from /usr/local/lib/libruby.so.16
    (gdb)

  同じ現象が起きているかたはいらっしゃるでしょうか?


[状況]

  とりあえず原因として
    * Racc の拡張モジュールが Alpha と相性が悪い
    * Ruby のバグ
  の二つを想定して、その確認として以下のことをやってもらいました。

  (1) Racc の拡張モジュールのバグ?

  拡張モジュールなしで racc を動かしてみる。具体的には $: から
  alpha-freebsd4 の入ってるものを外して動かす。
  → 拡張モジュールなしでもまったく同じ落ちかたをした。
     Racc 自体になんか Ruby を刺激するものがあるらしい。

  (2) Ruby のバグ?

  落ちる場所はわかっているので、ここでやっていること
  (連続正規表現マッチ) を再現するスクリプトを実行して
  もらった。テストスクリプトは [ruby-talk:32090] について
  いるものです。
  → 落ちない。直接的に、初期化してないメモリをさわって
     落ちてるというわけではないらしい。


他にはどんな原因が考えられるでしょうか?
またどういう情報があればいいでしょうか。
-------------------------------------------------------------------
青木峰郎