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/