summaryrefslogtreecommitdiff
path: root/gc.h
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2024-01-18 12:57:01 +0900
committernagachika <nagachika@ruby-lang.org>2024-01-18 12:57:01 +0900
commit99c9aeef4b4417120e30b145cf98e1bc68a2a0de (patch)
tree92c572cbdc8ce5c6d5401c4efbe15d0de16cca51 /gc.h
parent3302e251dccec1e981945ab19d316d0856c68bf6 (diff)
merge revision(s) b8a3f1bd456f92866c4a7bd83235f78c574784a8:
Fix crash in tracing object allocations ObjectSpace.trace_object_allocations_start could crash since it adds a TracePoint for when objects are freed. However, TracePoint could crash since it modifies st tables while inside the GC that is trying to free the object. This could cause a memory allocation to happen which would crash if it triggers another GC. See a crash log: http://ci.rvm.jp/results/trunk@ruby-sp1/4373707 --- ext/objspace/depend | 1 + ext/objspace/object_tracing.c | 7 +++++++ gc.h | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-)
Diffstat (limited to 'gc.h')
-rw-r--r--gc.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/gc.h b/gc.h
index b2356444c6..23218c1a9e 100644
--- a/gc.h
+++ b/gc.h
@@ -116,8 +116,6 @@ int ruby_get_stack_grow_direction(volatile VALUE *addr);
const char *rb_obj_info(VALUE obj);
const char *rb_raw_obj_info(char *const buff, const size_t buff_size, VALUE obj);
-VALUE rb_gc_disable_no_rest(void);
-
struct rb_thread_struct;
size_t rb_size_pool_slot_size(unsigned char pool_id);
@@ -142,6 +140,8 @@ void rb_objspace_each_objects_without_setup(
size_t rb_gc_obj_slot_size(VALUE obj);
+VALUE rb_gc_disable_no_rest(void);
+
RUBY_SYMBOL_EXPORT_END
#endif /* RUBY_GC_H */