General

Profile

ko1 (Koichi Sasada)

  • Login: ko1
  • Registered on: 05/28/2008
  • Last sign in: 11/10/2026

Issues

open closed Total
Assigned issues 61 683 744
Reported issues 15 208 223

Projects

Project Roles Registered on
Ruby Committer 05/28/2008

Activity

11/12/2026

06:55 PM Ruby Revision ecb6a5cc (git): Keep curry's argument array alive across the inner call
In the call branch of `curry`, `passed` is the only reference keeping the
freshly built argument array alive, yet its backing buffer is handed to
`rb_proc_call_with_block` as `argv` via `RARRAY_CONST_PTR(passed)`. After
taking that point...
ko1 (Koichi Sasada)
12:17 AM Ruby Revision f54c8c67 (git): Do not mark the kept reply port from the Ractor wrapper
ractor_mark marks only the wrapper's direct references: the wrapper is
shareable, so following an unshareable object from it breaks the shref
rule, and the Ractor's unshareable parts are marked by the root scan
instead. The kept reply p...
ko1 (Koichi Sasada)
12:17 AM Ruby Revision ba4a7a5a (git): Wait on the kept reply port in Ractor#join, require, and autoload
Ractor#join made a Ractor::Port for each call and closed it, and a
require or autoload from a non-main Ractor made one, made it shareable,
and passed it to the main Ractor in the request. All three now wait on
the Ractor's kept reply po...
ko1 (Koichi Sasada)

11/11/2026

11:39 AM Ruby Bug #22419 (Closed): [BUG] "rb_objspace_reachable_objects_from_local: set is owned by another Ractor" when a non-main Ractor reads a class instance variable since f0439cdfa7
Applied in changeset commit:git|7fe831a84b198d617455e71505e20de7635ec749.
----------
Only the owner Ractor makes its objects shareable [Bug #22419]
Making an object shareable sets FL_SHAREABLE, the page's shareable/shref
bits, and make...
ko1 (Koichi Sasada)
11:38 AM Ruby Revision d00d4a46 (git): Let an objspace point back to the Ractor running on it
rb_gc_obj_ractor(obj) returns the living Ractor whose objspace holds
obj's page, so a caller can find the Ractor that may write obj's flags
and page bits.
The pointer is set when the objspace is made for a Ractor (the main
Ractor's in r...
ko1 (Koichi Sasada)
11:38 AM Ruby Revision d2e2d91f (git): Run Ractor-targeted postponed jobs on whichever thread takes the GVL
rb_postponed_job_trigger_for_ractor flags only threads.running_ec, which may
be a thread that has gone to sleep or exited since (with 1:1 threads it keeps
pointing at the last thread that ran, e.g. Ractor#require's). The job then
waits ...
ko1 (Koichi Sasada)
11:38 AM Ruby Revision 7fe831a8 (git): Only the owner Ractor makes its objects shareable [Bug #22419]
Making an object shareable sets FL_SHAREABLE, the page's shareable/shref
bits, and makes strings independent. Those writes belong to the owner's
objspace and are single-writer, but rb_ractor_shareable_p did them on
whatever it walked, s...
ko1 (Koichi Sasada)
11:38 AM Ruby Revision 993fd8f4 (git): Keep one reply port per Ractor for internal requests
Each wait for a share request's answer made a Ractor::Port and closed it.
Keep one per Ractor (sync.reply_port) and lend it to one wait at a time
(sync.reply_port_busy); a wait that finds it busy makes a port of its own
as before. A wai...
ko1 (Koichi Sasada)
07:37 AM Ruby Revision 58767c21 (git): Record a native thread's id again in a forked child
The child re-records nt->tid, which fork does change, but kept the
parent's nt->thread_id. No pthread implementation we know of gives the
forking thread a new pthread_t in the child (checked on glibc, where it
is the address of the thre...
ko1 (Koichi Sasada)
07:37 AM Ruby Revision 79190756 (git): Build again where pthread_t is not a scalar
configure still defines NON_SCALAR_THREAD_ID, but three places assume
a scalar pthread_t: the main-thread check in native_thread_init_stack
and Thread#name= compare an id with 0, and last_exiting_thread keeps a
pthread_t in a void *. Ch...
ko1 (Koichi Sasada)

Also available in: Atom