General

Profile

ko1 (Koichi Sasada)

  • Login: ko1
  • Registered on: 05/28/2008
  • Last sign in: 08/16/2026

Issues

open closed Total
Assigned issues 75 658 733
Reported issues 16 206 222

Projects

Project Roles Registered on
Ruby Committer 05/28/2008

Activity

08/16/2026

07:57 PM Ruby Revision 8c7c80f4 (git): coroutine: do not write to the target after switching away
coroutine_transfer() restores target->from after the switch, that is,
after this coroutine is resumed -- by then it may have been resumed by
someone else and target may be freed.
With M:N threads it usually is: a Ruby thread parks by tr...
ko1 (Koichi Sasada)
05:35 PM Ruby Revision d8f0457c (git): Load did_you_mean before the GC compact stress block
TestException#test_detailed_message_under_gc_compact_stress calls
Exception#detailed_message inside EnvUtil.under_gc_compact_stress. The
first error display of a process lazily requires the decoration gems
(error_highlight, did_you_mean...
ko1 (Koichi Sasada)
05:21 PM Ruby Revision 168eada4 (git): thread: replace the timed-waiter list with a hierarchical timer wheel
timer_thread_register_waiting kept the timed waiters on a single list
sorted by deadline, inserting with a linear scan. A server whose
connections share one timeout value -- every keep-alive loop -- makes
each insert walk the whole list...
ko1 (Koichi Sasada)
06:07 AM Ruby Revision 973c45fc (git): Ractor: let ruby_vm_destruct wait for the postmortem epilogue
Since "Ractor: the dying thread collects its own objspace post-mortem"
(e768a87a17), a dying Ractor thread runs rb_ractor_postmortem_free()
after thread_sched_to_dead() (its GVL is gone) and after
rb_ractor_living_threads_remove() -> vm_...
ko1 (Koichi Sasada)
03:15 AM Ruby Revision 6b71dd21 (git): btest/test_thread.rb: make the NPROC test CPU-count independent
The test added by 6f176c8925 warmed two ractors before dropping
RLIMIT_NPROC, assuming every subsequent Ractor.new would attempt to
spawn a shared native thread and raise ThreadError. However,
native_thread_check_and_create_shared widen...
ko1 (Koichi Sasada)

08/14/2026

09:16 PM Ruby Revision 65a071aa (git): GC: fix page pool advised_count underflow on 64KiB-page systems
page_pool_reclaim() advises (madvise) cold page bodies only when the OS
page size is smaller than HEAP_PAGE_SIZE, because the first OS page of a
body holds the in-body freelist link and the arena tag and must be
spared. On systems whose...
ko1 (Koichi Sasada)
04:35 PM Ruby Revision dce74ebf (git): thread: free a shared native thread's resources when it retires
A retiring shared thread -- ractor_sched_deq giving itself back, or a
thread rejoining a full pool (nt->retiring) -- just returned from
nt_start, leaking its rb_native_thread: the struct, the coroutine
context, the condvars and the sigal...
ko1 (Koichi Sasada)
04:35 PM Ruby Revision 582b3ef3 (git): thread: harden the M:N scheduler's latent overflow and error paths
None of these is reachable with default settings; each is a mine for a
configuration or platform that steps on it.
- timer_thread_set_timeout: a sleeper's deadline further away than
INT_MAX ms truncated to a negative timeout, i.e. an ...
ko1 (Koichi Sasada)
04:35 PM Ruby Revision f3456dbf (git): thread: M:N scheduler cleanups
- verify_waiting_list compared w->data.timeout with itself, so the
sorted-order assert was vacuously true and the waiting list's O(n)
insert has been unverified even on debug builds.
- timer_thread_register_waiting repeated the rel ...
ko1 (Koichi Sasada)
04:35 PM Ruby Revision 477fd8a3 (git): thread: let timed fd waits ride the M:N scheduler
thread_io_wait() sent every fd wait with a timeout to the blocking
region (ppoll on a dedicated native thread), even under M:N. A
pattern like IO#wait_readable(0.5) -- WEBrick's keepalive loop, or
any flag-polling wait -- therefore cost...
ko1 (Koichi Sasada)

Also available in: Atom