岩室@富士通です。

In message "[ruby-dev:8627] Re: [BUG?] core dump `ruby -r debug'"
    on 99/12/11, Yukihiro Matsumoto <matz / netlab.co.jp> writes:
> |と言って死にました。
> 
> むむむ。Linuxでは動くんですけどねえ。

  もう少し調べてみました。

  ・gcc-2.95 -> gcc-2.95.2 に変更 …… 変化なし。

  ・最適化を外す(CFLAGSから-O2を削除する)と動く。

  ・`-O2'から`-O'に下げてみてもダメ。

  ・gdb経由のバックトレースは以下の通り。(註: 最適化は`-O')

> % env LD_LIBRARY_PATH=`pwd` gdb ./ruby
> GNU gdb 4.18
<略>
> This GDB was configured as "sparc-sun-solaris2.6"...
> (gdb) r -I./lib -r debug
> Starting program: /net/bar/export/src/ruby/cvs/ruby/./ruby -I./lib -r debug
> 
> Program received signal SIGSEGV, Segmentation fault.
> call_trace_func (event=0xef70df38 "end", file=0x85608 "./lib/debug.rb", 
>     line=399, self=0, id=0, klass=26368) at ruby.h:523
> 523         return BUILTIN_TYPE(obj);

  止まったところ。

> (gdb) p *(struct RBasic *)obj
> Cannot access memory at address 0x6700.

  おそらくコケた直接的原因。

> (gdb) bt
> #0  call_trace_func (event=0xef70df38 "end", file=0x85608 "./lib/debug.rb", 
>     line=399, self=0, id=0, klass=26368) at ruby.h:523
> #1  0xef6aab1c in module_setup (module=259760, node=0x3f740) at eval.c:2991
> #2  0xef6aa2d4 in rb_eval (self=374600, node=0x3f728) at eval.c:2904
> #3  0xef6a3d24 in eval_node (self=374600) at eval.c:1034
> #4  0xef6b0040 in rb_load (fname=4017357372, wrap=-277607284) at eval.c:4768
> #5  0xef6b0a90 in rb_f_require (obj=0, fname=315584) at eval.c:4944
> #6  0xef6b0b24 in rb_require (fname=0xeffffb20 "debug") at eval.c:4957
> #7  0xef6f936c in require_libraries () at ruby.c:249
> #8  0xef6fa128 in proc_options (argc=0, argv=0xeffff9e4) at ruby.c:629
> #9  0xef6faf5c in ruby_process_options (argc=4, argv=0xeffff9d4) at ruby.c:997
> #10 0xef6a3c68 in ruby_options (argc=4, argv=0xeffff9d4) at eval.c:1008
> #11 0x10e54 in main (argc=4, argv=0xeffff9d4, envp=0xeffff9e8) at main.c:38

  バックトレース。最適化をOFFにするとcall_trace_funcの引数klassの値は
本来(?)の値になっているっぽいです。(あんまり根性入れて調べてないので……)

  スタックフレームとか操作している部分が付近にあるよーですので、もしか
してgccの最適化の問題? # うぁぁぁ(^^;
-- 
岩室元典 [E-Mail: vmi / kw.netlaputa.ne.jp / iwa / mmp.fujitsu.co.jp]
「流行ってるの?                          ([雑誌] ねこめ〜わく …とか いろいろ
  流行ってるの? ぴこぴこはんまー?」        「ぴこぴこぶんぶん」竹本泉/宙出版)