From: matz@... (Yukihiro Matsumoto) Date: 1999-10-17T01:38:11+09:00 Subject: [ruby-dev:8039] Re: ruby 1.4.2 sometimes crashes on m68k-linux まつもと ゆきひろです In message "[ruby-dev:8035] ruby 1.4.2 sometimes crashes on m68k-linux" on 99/10/16, akira yamada / やまだあきら writes: |Ruby の Debian パッケージについてバグ報告がきたんですが, |Ruby 自体のバグではなかろうか? ということなんで |こちらにメールしてみます. | |内容としては以下に添付した通りです. |今のところ m68k アーキテクチャについてのみの報告ですね. ちょっと見た限り考えられるのは、GC関連ですね。つまり、なんら かの理由で f に格納されているIOオブジェクトが既にGCされてし まうとこのような症状が発生しそうです。extの状態によって発生 したりしなかったりというのもGCを疑わせます。 しかし、ローカル変数 f がオブジェクトをポイントしているのに GCされちゃうというのはかなり考えにくいです。可能性は * m68kのコンパイラのバグ * rb_io_close()を呼んでから、fclose()が呼ばれるまでの間に GCが発生した のいずれかでしょう。しかし、ソースを見る限り後者のタイミング にGC発生の可能性は無いような気がするんですが。 -- Hi, I'm author of Ruby. |Ok, some facts: | | - The crash happens when "miniruby -Xext extmk.rb" gets to the | ext/sockets dir. The process receives a SIGILL during load of | ext/socket/extconf.rb. I suspect something wrong with GC (garbage collection). Possiblities are: * a bug in m69k gcc (local variable handling). * GC occurred between invocations rb_io_close() and fclose(), even though I couldn't find any point where GC may be started. The latter is rare possibility, but I still can't deny. How about changing VALUE f; into volatile VALUE f; and see whether the situation will change or not? matz.