1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* vm_dump.c (HAVE_BACKTRACE): fallback to 0.

* vm_dump.c (rb_vm_bugreport): show "Other runtime information"
  header only when available.
* vm_dump.c (rb_vm_bugreport): get rid of modifying the content of
  VM directly.
* vm_dump.c (rb_vm_bugreport): check if vm is non-null.
  Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
  Thank you.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2011-11-11 08:09:48 +00:00
parent 0d746627af
commit 05e7354864
2 changed files with 40 additions and 8 deletions

View file

@ -1,3 +1,17 @@
Fri Nov 11 17:09:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_dump.c (HAVE_BACKTRACE): fallback to 0.
* vm_dump.c (rb_vm_bugreport): show "Other runtime information"
header only when available.
* vm_dump.c (rb_vm_bugreport): get rid of modifying the content of
VM directly.
* vm_dump.c (rb_vm_bugreport): check if vm is non-null.
Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
Thank you.
Fri Nov 11 12:36:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com> Fri Nov 11 12:36:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* io.c (pipe_open): Remove fflush(stdin). it's no effect. * io.c (pipe_open): Remove fflush(stdin). it's no effect.

View file

@ -593,6 +593,9 @@ bugreport_backtrace(void *arg, VALUE file, int line, VALUE method)
#if defined(__FreeBSD__) && defined(__OPTIMIZE__) #if defined(__FreeBSD__) && defined(__OPTIMIZE__)
#undef HAVE_BACKTRACE #undef HAVE_BACKTRACE
#endif #endif
#ifndef HAVE_BACKTRACE
#define HAVE_BACKTRACE 0
#endif
#if HAVE_BACKTRACE #if HAVE_BACKTRACE
# include <execinfo.h> # include <execinfo.h>
#elif defined(_WIN32) #elif defined(_WIN32)
@ -774,7 +777,15 @@ dump_thread(void *arg)
void void
rb_vm_bugreport(void) rb_vm_bugreport(void)
{ {
rb_vm_t *vm = GET_VM(); #ifdef __linux__
# define PROC_MAPS_NAME "/proc/self/maps"
#endif
#ifdef PROC_MAPS_NAME
enum {other_runtime_info = 1};
#else
enum {other_runtime_info = 0};
#endif
const rb_vm_t *const vm = GET_VM();
if (vm) { if (vm) {
int i = 0; int i = 0;
SDR(); SDR();
@ -823,22 +834,29 @@ rb_vm_bugreport(void)
fprintf(stderr, "\n"); fprintf(stderr, "\n");
#endif /* HAVE_BACKTRACE */ #endif /* HAVE_BACKTRACE */
fprintf(stderr, "-- Other runtime information " if (other_runtime_info || vm) {
"-----------------------------------------------\n\n"); fprintf(stderr, "-- Other runtime information "
{ "-----------------------------------------------\n\n");
}
if (vm) {
int i; int i;
VALUE name;
fprintf(stderr, "* Loaded script: %s\n", StringValueCStr(vm->progname)); name = vm->progname;
fprintf(stderr, "* Loaded script: %s\n", StringValueCStr(name));
fprintf(stderr, "\n"); fprintf(stderr, "\n");
fprintf(stderr, "* Loaded features:\n\n"); fprintf(stderr, "* Loaded features:\n\n");
for (i=0; i<RARRAY_LEN(vm->loaded_features); i++) { for (i=0; i<RARRAY_LEN(vm->loaded_features); i++) {
fprintf(stderr, " %4d %s\n", i, StringValueCStr(RARRAY_PTR(vm->loaded_features)[i])); name = RARRAY_PTR(vm->loaded_features)[i];
fprintf(stderr, " %4d %s\n", i, StringValueCStr(name));
} }
fprintf(stderr, "\n"); fprintf(stderr, "\n");
}
#if __linux__ {
#ifdef PROC_MAPS_NAME
{ {
FILE *fp = fopen("/proc/self/maps", "r"); FILE *fp = fopen(PROC_MAPS_NAME, "r");
if (fp) { if (fp) {
fprintf(stderr, "* Process memory map:\n\n"); fprintf(stderr, "* Process memory map:\n\n");