From: pegacorn jp Date: 2008-11-03T09:33:54+09:00 Subject: [ruby-dev:37016] [Bug #705] sample/test.rb:1829: [BUG] Segmentation fault チケット #705 が更新されました。 (by pegacorn jp) r19078 の変更で、 marshal_load が、load_ensure で解放した領域を使用するようになって ヒープを破壊しています。 static VALUE load_ensure(arg) struct load_arg *arg; { if (!DATA_PTR(arg->wrapper)) return 0; st_free_table(arg->symbols); st_free_table(arg->data); /* <-- ここで解放 */ DATA_PTR(arg->wrapper) = 0; arg->wrapper = 0; return 0; } static VALUE marshal_load(argc, argv) int argc; VALUE *argv; { (省略) v = rb_ensure(load, (VALUE)&arg, load_ensure, (VALUE)&arg); RBASIC(arg.data)->klass = rb_cHash; /* <-- ここで使用 */ return v; } ---------------------------------------- http://redmine.ruby-lang.org/issues/show/705 ---------------------------------------- http://redmine.ruby-lang.org