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

ruby-changes:9489

From: yugui <ko1@a...>
Date: Thu, 25 Dec 2008 18:57:46 +0900 (JST)
Subject: [ruby-changes:9489] Ruby:r21028 (ruby_1_9_1): merges r20971 from trunk into ruby_1_9_1.

yugui	2008-12-25 18:56:12 +0900 (Thu, 25 Dec 2008)

  New Revision: 21028

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21028

  Log:
    merges r20971 from trunk into ruby_1_9_1.
    * error.c, vm_dump.c: change message by rb_bug().

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/error.c
    branches/ruby_1_9_1/vm_dump.c

Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 21027)
+++ ruby_1_9_1/ChangeLog	(revision 21028)
@@ -1,3 +1,7 @@
+Wed Dec 24 22:36:06 2008  Koichi Sasada  <ko1@a...>
+
+	* error.c, vm_dump.c: change message by rb_bug().
+
 Wed Dec 24 21:57:39 2008  Koichi Sasada  <ko1@a...>
 
 	* compile.c (iseq_peephole_optimize): fix typo.
Index: ruby_1_9_1/error.c
===================================================================
--- ruby_1_9_1/error.c	(revision 21027)
+++ ruby_1_9_1/error.c	(revision 21028)
@@ -207,10 +207,17 @@
 
     if (fwrite(buf, 1, len, out) == len ||
 	fwrite(buf, 1, len, (out = stdout)) == len) {
+
 	fputs("[BUG] ", out);
 	vfprintf(out, fmt, args);
 	fprintf(out, "\n%s\n\n", ruby_description);
+
 	rb_vm_bugreport();
+
+	fprintf(out,
+		"[NOTE]\n"
+		"You may encounter a bug of Ruby interpreter. Bug reports are welcome.\n"
+		"For details: http://www.ruby-lang.org/bugreport.html\n\n");
     }
 }
 
Index: ruby_1_9_1/vm_dump.c
===================================================================
--- ruby_1_9_1/vm_dump.c	(revision 21027)
+++ ruby_1_9_1/vm_dump.c	(revision 21028)
@@ -580,9 +580,16 @@
 	SDR();
 
 	bt = rb_make_backtrace();
-	if (TYPE(bt) == T_ARRAY)
-	for (i = 0; i < RARRAY_LEN(bt); i++) {
-	    dp(RARRAY_PTR(bt)[i]);
+
+	if (bt) {
+	    fprintf(stderr, "-- Ruby level backtrace information"
+		    "-----------------------------------------\n");
+
+	    for (i = 0; i < RARRAY_LEN(bt); i++) {
+		VALUE str = RARRAY_PTR(bt)[i];
+		fprintf(stderr, "%s\n", RSTRING_PTR(str));
+	    }
+	    fprintf(stderr, "\n");
 	}
     }
 
@@ -592,13 +599,20 @@
     {
 	static void *trace[MAX_NATIVE_TRACE];
 	int n = backtrace(trace, MAX_NATIVE_TRACE);
+	char **syms = backtrace_symbols(trace, n);
 	int i;
 
-	fprintf(stderr, "-- backtrace of native function call (Use addr2line) --\n");
+	fprintf(stderr, "-- C level backtrace information "
+		"-------------------------------------------\n");
 	for (i=0; i<n; i++) {
-	    fprintf(stderr, "%p\n", trace[i]);
+	    char *info = syms ? syms[i] : "";
+	    fprintf(stderr, "%p %s\n", trace[i], info);
 	}
-	fprintf(stderr, "-------------------------------------------------------\n");
+	fprintf(stderr, "\n");
+
+	if (syms) {
+	    free(syms);
+	}
     }
 #endif
 }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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