SEGVをハンドルしようとした…

拡張ライブラリがこんな感じ。

#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
#end

segv
~/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で囲んでもだめだった。
うーん。。。