From 69e77e81dc10945ac6327717bd480db78004f65a Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Thu, 26 Nov 2020 20:35:24 -0800 Subject: [PATCH] Run rb_print_backtrace first on ruby_on_ci Unfortunately we couldn't see a C backtrace with the previous commit http://ci.rvm.jp/results/trunk-random2@phosphorus-docker/3272697. --- gc.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gc.c b/gc.c index 48c14553f8..7fe4f8c609 100644 --- a/gc.c +++ b/gc.c @@ -4598,7 +4598,13 @@ static void read_barrier_signal(int sig, siginfo_t * info, void * data) { extern int ruby_on_ci; - if (ruby_on_ci) { // read_barrier_handler may crash. Report a backtrace first on CI. + if (ruby_on_ci) { // `read_barrier_handler` may crash. Report backtraces first on CI. +# if HAVE_BACKTRACE // `rb_bug_without_die` may crash on `control_frame_dump`. Report a C backtrace first. + fprintf(stderr, "-- C level backtrace (read_barrier_signal) " + "-------------------------------------------\n"); + rb_print_backtrace(); + fprintf(stderr, "\n"); +# endif extern void rb_bug_without_die(const char *fmt, ...); rb_bug_without_die("died with read_barrier_signal installed"); }