From: Nikolai Lugovoi Date: 2009-10-06T22:18:47+09:00 Subject: [ruby-core:25969] [Bug #2181] Segmentation fault for test/drb/* -- possible bug in Marshal/GC Bug #2181: Segmentation fault for test/drb/* -- possible bug in Marshal/GC http://redmine.ruby-lang.org/issues/show/2181 Author: Nikolai Lugovoi Status: Open, Priority: Normal Category: core ruby -v: ruby 1.9.2dev (2009-10-06) [i686-linux] After changeset r25230 in marshal.c I see some segfaults (at various places)when running make test-all or only test suite test/drb/*, see attached file test-crash.txt Removing gc marks for elements of struct load_arg seems to fix the problem: --- a/marshal.c +++ b/marshal.c @@ -971,16 +971,6 @@ check_load_arg(struct load_arg *arg, ID sym) static void clear_load_arg(struct load_arg *arg); static void -mark_load_arg(void *ptr) -{ - struct load_arg *p = ptr; - if (!ptr) - return; - rb_mark_tbl(p->data); - rb_mark_hash(p->compat_tbl); -} - -static void free_load_arg(void *ptr) { clear_load_arg(ptr); @@ -995,7 +985,7 @@ memsize_load_arg(const void *ptr) static const rb_data_type_t load_arg_data = { "load_arg", - mark_load_arg, free_load_arg, memsize_load_arg + NULL, free_load_arg, memsize_load_arg }; static VALUE r_entry(VALUE v, struct load_arg *arg); ---------------------------------------- http://redmine.ruby-lang.org