Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,14 @@
#include "builtin.h"
#include "shape.h"

// TODO: Don't export this function in modular GC, instead MMTk should figure out
// how to combine GC thread backtrace with mutator thread backtrace.
void
rb_gc_print_backtrace(void)
{
rb_print_backtrace(stderr);
}

unsigned int
rb_gc_vm_lock(const char *file, int line)
{
Expand Down
1 change: 1 addition & 0 deletions gc/gc.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ MODULAR_GC_FN void rb_gc_initialize_vm_context(struct rb_gc_vm_context *context)
MODULAR_GC_FN void rb_gc_worker_thread_set_vm_context(struct rb_gc_vm_context *context);
MODULAR_GC_FN void rb_gc_worker_thread_unset_vm_context(struct rb_gc_vm_context *context);
MODULAR_GC_FN void rb_gc_move_obj_during_marking(VALUE from, VALUE to);
MODULAR_GC_FN void rb_gc_print_backtrace();
#endif

#if USE_MODULAR_GC
Expand Down
5 changes: 5 additions & 0 deletions gc/mmtk/mmtk.c
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,11 @@ rb_mmtk_gc_thread_bug(const char *msg, ...)
vsnprintf(objspace->crash_context.crash_msg, sizeof(objspace->crash_context.crash_msg), msg, args);
va_end(args);

fprintf(stderr, "-- GC thread backtrace "
"-------------------------------------------\n");
rb_gc_print_backtrace();
fprintf(stderr, "\n");

rb_mmtk_resume_mutators();

sleep(5);
Expand Down