Skip to content

Commit bd57535

Browse files
committed
feat(threads): fixed deadlock when logging a ThreadExit() event, during the logging of a thread.join line
1 parent 88a7358 commit bd57535

File tree

1 file changed

+4
-1
lines changed
  • gems/codetracer-ruby-recorder/ext/native_tracer/src

1 file changed

+4
-1
lines changed

gems/codetracer-ruby-recorder/ext/native_tracer/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use std::{
1212
};
1313

1414
use rb_sys::{
15-
rb_add_event_hook2, rb_cObject, rb_cRange, rb_cRegexp, rb_cStruct, rb_cTime,
15+
rb_add_event_hook2, rb_cObject, rb_cRange, rb_cRegexp, rb_cStruct, rb_cThread, rb_cTime,
1616
rb_check_typeddata, rb_const_defined, rb_const_get, rb_data_type_struct__bindgen_ty_1,
1717
rb_data_type_t, rb_data_typed_object_wrap, rb_define_alloc_func, rb_define_class,
1818
rb_define_method, rb_eIOError, rb_event_flag_t, rb_event_hook_flag_t, rb_event_hook_func_t,
@@ -445,6 +445,9 @@ unsafe fn to_value(
445445
type_id,
446446
};
447447
}
448+
if rb_obj_is_kind_of(val, rb_cThread) != 0 {
449+
return struct_value(recorder, tracer, "Thread", &[] as &[&str], &[], depth);
450+
}
448451
if rb_obj_is_kind_of(val, rb_cRange) != 0 {
449452
let begin_val = rb_funcall(val, recorder.id.begin, 0);
450453
let end_val = rb_funcall(val, recorder.id.end, 0);

0 commit comments

Comments
 (0)