eightbitraptor (Matt V-H)
- Login: eightbitraptor
- Email: matt@eightbitraptor.com, matt.valentinehouse@shopify.com
- Registered on: 12/06/2019
- Last sign in: 10/04/2026
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
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...
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... -
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. -
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]
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... -
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... -
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... -
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... -
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...