General

Profile

eightbitraptor (Matt V-H)

Issues

open closed Total
Assigned issues 2 21 23
Reported issues 1 32 33

Projects

Project Roles Registered on
Ruby Committer 03/09/2023

Activity

10/06/2026

09:11 AM Ruby Bug #22390: ruby 3.4 -> 4.0 upgrade GC changes causing >2x RSS increase
@mame I've already started looking into this with https://github.com/ruby/ruby/pull/19170 so I'll take this one from @peterzhu2118 eightbitraptor (Matt V-H)

10/05/2026

06:08 PM Ruby Revision ee4013b9 (git): Count global GC cycles per Ractor in GC.stat
GC.stat(:global_gc_count) now reports the stop-the-world global cycles
the current Ractor started, instead of mirroring the process-wide count,
so the values can be summed across Ractors. GC.stat(:global_gc_count,
scope: :global) gives t...
eightbitraptor (Matt V-H)

09/30/2026

11:48 AM Ruby Bug #22389 (Closed): Hang on GC.compact
Applied in changeset commit:git|e131720215251851efab1811a24c4d59a0fc979d.
----------
Use pthread_sigmask in the GC read barrier signal handler
sigprocmask() is unspecified in multithreaded processes; on macOS it
left SIGSEGV/SIGBUS blo...
eightbitraptor (Matt V-H)
11:47 AM Ruby Revision 6141c568 (git): Unprotect all objspaces before a global compaction updates references
Match the per-objspace ordering of gc_compact_finish (unprotect, then
update) across objspaces, so the update pass never faults on a foreign
protected page and abandons that page's moves.
eightbitraptor (Matt V-H)
11:47 AM Ruby Revision e1317202 (git): Use pthread_sigmask in the GC read barrier signal handler
sigprocmask() is unspecified in multithreaded processes; on macOS it
left SIGSEGV/SIGBUS blocked on the faulting thread, so a second
read-barrier fault was never delivered and the process hung on the
faulting instruction. [Bug #22389]
eightbitraptor (Matt V-H)

09/25/2026

06:24 PM Ruby Feature #22277 (Closed): Make `rb_gc_register_address` Ractor-local
Applied in changeset commit:git|2ad6b99a98058ce25de2d1d536f291b93d893834.
----------
GC: scope rb_gc_register_address to the calling Ractor
The registered_globals list made every Ractor's GC scan every slot under
a shared lock. This co...
eightbitraptor (Matt V-H)
06:24 PM Ruby Revision 3ebb1b2c (git): dir.c: keep GC-registered globals shareable or unregistered
last_cwd is set on init in the main Ractor, but Dir.pwd attempts to
store into it. When this is done on a child Ractor we violate the
invariant that the owning and registering Ractor must be the same. On a
normal build the use-after-free...
eightbitraptor (Matt V-H)
06:24 PM Ruby Revision 43b1e17d (git): json: reject non-shareable default sort_keys proc from non-main Ractors
JSON::State.default_sort_keys_proc is registered at extension load time
so it's owned by the main Ractor.
When we implement the registration table on each Ractor storing another
Ractor's unshareable Proc into that slot leaves a dangling...
eightbitraptor (Matt V-H)
06:24 PM Ruby Revision 2ad6b99a (git): GC: scope rb_gc_register_address to the calling Ractor
The registered_globals list made every Ractor's GC scan every slot under
a shared lock. This commit splits it into per-Ractor lists.
We also maintain a global registry that references every Ractor that has
ever registered so that unregi...
eightbitraptor (Matt V-H)
06:24 PM Ruby Revision bca1314e (git): GC: verify consistency of Ractor local registered addresses.
Now that registrations are Ractor-scoped, a store of another Ractor's
unshareable object through a registered address is a use-after-free
waiting for the owner's next GC.
This commit introduces a method to catch it in debug and ASAN bui...
eightbitraptor (Matt V-H)

Also available in: Atom