Actions
Backport #9463
closedSEGV when calling GC.start in a finalizer
Status:
Closed
Assignee:
Description
minimum reproduce code:
raise_proc = proc do |id|
GC.start
end
3.times do
ObjectSpace.define_finalizer(Object.new, raise_proc)
end
to fix this, need to backport r33361 and r33460.
Updated by usa (Usaku NAKAMURA) almost 11 years ago
- Related to Bug #9205: Assertion failed: heap_pages_deferred_final == 0 added
Updated by usa (Usaku NAKAMURA) almost 11 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
Applied in changeset r44762.
merge revision(s) 33361,33460: [Backport #9463]
* gc.c (slot_sweep, rb_gc_finalize_deferred)
(rb_objspace_call_finalizer, rb_gc): run finalizers
sequencially. [ruby-dev:44562]
* gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):
should use ATOMIC_EXCHANGE() to check the previous value.
[ruby-dev:44596] [Bug #5439]
Actions
Like0
Like0Like0