General

Profile

ko1 (Koichi Sasada)

  • Login: ko1
  • Registered on: 05/28/2008
  • Last sign in: 07/13/2026

Issues

open closed Total
Assigned issues 77 653 730
Reported issues 14 206 220

Projects

Project Roles Registered on
Ruby Committer 05/28/2008

Activity

07/14/2026

08:32 AM Ruby Revision 18a0354a (git): Remove a dying coroutine thread from the living set before its handoff
coroutine_thread_terminated designated the successor first
(thread_sched_to_dead_common) and only then removed the dying thread
from the living set. The removal's VM-lock work (ractor_check_blocking
and a possible barrier join) then ran...
ko1 (Koichi Sasada)
08:32 AM Ruby Revision d6464c28 (git): Count every Ractor barrier joiner again
The is_running check added by 3fa1c8708 guarded against a terminating
thread joining the barrier after leaving the running set. Since the
previous commit such a thread leaves the living set before handing over
its scheduler slot, so eve...
ko1 (Koichi Sasada)
08:32 AM Ruby Revision 7c6a3088 (git): Add a stress test for a thread terminating during a compaction barrier
Exercises a short-lived thread terminating while another Ractor drives
GC.compact barriers, the scenario fixed by the previous commits.
Skipped when the GC does not implement compaction (e.g. MMTk).
Co-Authored-By: Claude Opus 4.8 (1M c...
ko1 (Koichi Sasada)
08:32 AM Ruby Revision c2992bbd (git): Reset the Ractor barrier state in the child after fork
A fork taken while the parent holds the VM barrier (e.g. rb_gc_before_fork)
leaves the child with barrier_waiting set and a barrier owner that no longer
exists, so the next barrier in the child could never complete. Reset the
barrier fie...
ko1 (Koichi Sasada)
08:32 AM Ruby Revision 6a098a07 (git): Assert the serial-epilogue ordering invariants
Encode the safety argument of the epilogue reorder as VM_ASSERTs: a
non-last dying thread still owns its scheduler slot when it leaves the
living set (its VM-lock work stays a counted running thread), and the
last thread's reverse order ...
ko1 (Koichi Sasada)
08:32 AM Ruby Revision fc6ff6fb (git): ractor: guard the port VALUE across receive/send
ractor_port_receive/send derive a raw 'struct ractor_port *rp' from self's
embedded (RUBY_TYPED_EMBEDDABLE) data and keep using it across a GC
safepoint: receive parks, and send allocates the basket. self is only kept
alive movably (rb_g...
ko1 (Koichi Sasada)
08:32 AM Ruby Revision d418ff68 (git): Add a test for forking while other Ractors are alive
Forking with live Ractors takes a VM barrier in the parent and the child
inherits scheduler/barrier state that must be reset. General regression
coverage for the parent-side fork barrier and the child teardown, checking
the surviving Rac...
ko1 (Koichi Sasada)

07/11/2026

03:03 AM Ruby Revision 3fa1c870 (git): Do not count a not-yet-running thread as a Ractor barrier waiter
`rb_ractor_sched_barrier_join` unconditionally did `barrier_waiting_cnt++`.
A thread can reach it (via `vm_lock_enter`) while its Ractor's
`sched.running` is set but the thread is not yet in the VM running set
(`sched.is_running == false...
ko1 (Koichi Sasada)
02:01 AM Ruby Revision ca20425f (git): Avoid a stale TLS execution context in fiber_switch after NT migration
`fiber_current()` reads `GET_EC()`, which the compiler may inline as a
thread-pointer-relative TLS access whose base is cached in a callee-saved
register. `coroutine_transfer` preserves callee-saved registers across the
stack switch, so...
ko1 (Koichi Sasada)

07/10/2026

05:38 AM Ruby Revision a1392b96 (git): Make mark_object_ary per-Ractor
Objects registered with rb_gc_register_mark_object were pinned in a single
vm->mark_object_ary. Give each Ractor its own (rb_ractor_t.mark_object_ary,
created lazily) and mark it from ractor_mark; the main Ractor's list is also
marked f...
ko1 (Koichi Sasada)

Also available in: Atom