Ruby の拡張ライブラリを書く時には、Ruby の処理を呼び出すと例外が発生する可能性があることに気をつけないといけません。たとえば以下のように some_func という関数を呼び出す wrapper method を定義したとします。 extern int some_func(int len, int *ary); VALUE sample_func(VALUE self, VALUE arg) { int *buf; int len, i, result; if (!RB_TYPE_P(arg, T_ARRAY)) rb_raise(rb_eArgError, "arg must be an Array"); len = RARRAY_LEN(arg); buf = ALLOC_N(int, len); for (i = 0; i < len; i++) { buf[i] = NU