From 79d90e73511dc9dfda7926802b624d6fec22fe12 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 11 Dec 2024 14:40:40 -0500 Subject: Call rb_bug_without_die when ASAN error reported This will give us the Ruby stack trace when an ASAN error is reported. --- gc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gc.c') diff --git a/gc.c b/gc.c index 774f82bb5b..f4322417b6 100644 --- a/gc.c +++ b/gc.c @@ -936,6 +936,14 @@ ruby_modular_gc_init(void) # define rb_gc_impl_copy_attributes rb_gc_functions.copy_attributes #endif +#ifdef RUBY_ASAN_ENABLED +static void +asan_death_callback(void) +{ + rb_bug_without_die("ASAN error"); +} +#endif + static VALUE initial_stress = Qfalse; void * @@ -951,6 +959,10 @@ rb_objspace_alloc(void) rb_gc_impl_objspace_init(objspace); rb_gc_impl_stress_set(objspace, initial_stress); +#ifdef RUBY_ASAN_ENABLED + __sanitizer_set_death_callback(asan_death_callback); +#endif + return objspace; } -- cgit v1.2.3