[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]