[ruby-cvs:50525] ko1:r43383 (trunk): * vm_trace.c: exterminate Zombies.
ko1 at ruby-lang.org
ko1 at ruby-lang.org
Tue Oct 22 15:24:55 JST 2013
ko1 2013-10-22 15:24:54 +0900 (Tue, 22 Oct 2013)
New Revision: 43383
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43383
Log:
* vm_trace.c: exterminate Zombies.
There is a bug that T_ZOMBIE objects are not collected.
Because there is a pass to miss finalizer postponed job
with multi-threading. This patch solve this issue.
* vm_trace.c (rb_postponed_job_register_one): set
RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(th) if another same job
is registered.
There is a possibility to remain a postponed job without
interrupt flag.
* vm_trace.c (rb_postponed_job_register_one): check interrupt
carefully.
* vm_trace.c (rb_postponed_job_register_one): use additional space
to avoid buffer full.
* gc.c (gc_finalize_deferred_register): check failure.
* thread.c (rb_threadptr_execute_interrupts): check
`postponed_job_interrupt' immediately. There is a possibility
to miss this flag.
Modified files:
trunk/ChangeLog
trunk/gc.c
trunk/thread.c
trunk/vm_trace.c
More information about the ruby-cvs
mailing list