拡張ライブラリがこんな感じ。
#include <ruby.h> static VALUE segv(VALUE self) { int *n; *n = 5; return Qnil; } void Init_segv() { VALUE Segv = rb_define_module("Segv"); rb_define_module_function(Segv, "segv", segv, 0); }
何にもしないと、落ちる。
~/work# cat run.rb
require 'segv'
include Segv#Signal.trap(:SEGV) do
# puts 'trap SEGV'
# exit
#endsegv
~/work/segv# ruby run.rb
run.rb:9: [BUG] Segmentation fault
ruby 1.8.5 (2006-08-25) [i386-linux]アボートしました
それで、コメントを外してSEGVをハンドルしようとしたら、プログラムが止まらない…
追記
TRAP_BEG〜TRAP_ENDで囲んでもだめだった。
うーん。。。