ruby-changes:29358
From: nobu <ko1@a...>
Date: Wed, 19 Jun 2013 15:11:26 +0900 (JST)
Subject: [ruby-changes:29358] nobu:r41410 (trunk): gc.c: more info
nobu 2013-06-19 15:11:15 +0900 (Wed, 19 Jun 2013) New Revision: 41410 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41410 Log: gc.c: more info * gc.c (gc_mark_children): show more info for broken object. Modified files: trunk/ChangeLog trunk/gc.c Index: ChangeLog =================================================================== --- ChangeLog (revision 41409) +++ ChangeLog (revision 41410) @@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed Jun 19 15:11:13 2013 Nobuyoshi Nakada <nobu@r...> + + * gc.c (gc_mark_children): show more info for broken object. + Wed Jun 19 14:04:41 2013 Kazuhiro NISHIYAMA <zn@m...> * test/ruby/envutil.rb (EnvUtil#rubybin): remove unnecessary Index: gc.c =================================================================== --- gc.c (revision 41409) +++ gc.c (revision 41410) @@ -105,6 +105,8 @@ static ruby_gc_params_t initial_params = https://github.com/ruby/ruby/blob/trunk/gc.c#L105 #define nomem_error GET_VM()->special_exceptions[ruby_error_nomemory] +void rb_gcdebug_print_obj_condition(VALUE obj); + #if USE_RGENGC /* RGENGC_DEBUG: * 1: basic information @@ -3397,6 +3399,11 @@ gc_mark_children(rb_objspace_t *objspace https://github.com/ruby/ruby/blob/trunk/gc.c#L3399 break; default: +#ifdef GC_DEBUG + rb_gcdebug_print_obj_condition((VALUE)obj); +#endif + if (BUILTIN_TYPE(obj) == T_NONE) rb_bug("rb_gc_mark(): %p is T_NONE", (void *)obj); + if (BUILTIN_TYPE(obj) == T_ZOMBIE) rb_bug("rb_gc_mark(): %p is T_ZOMBIE", (void *)obj); rb_bug("rb_gc_mark(): unknown data type 0x%x(%p) %s", BUILTIN_TYPE(obj), (void *)obj, is_pointer_to_heap(objspace, obj) ? "corrupted object" : "non object"); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/