Thank you for your input Peter and Kunshan, I greatly appreciate it. As you may know, I am no GC expert :) ### Parallel marking For parallel marking, I agree that the vast majority of all TypedData mark functions are thread-safe. I was...luke-gru (Luke Gruber)
Our current implementation of parallel sweeping has the sweep thread run both concurrently with the mutator and in parallel with the Ruby GC thread. I would prefer a bit that represents the safety in both situations. For MMTk, since it d...luke-gru (Luke Gruber)
CRuby `TypedData` types are used internally in the VM and in C extensions and currently any `free` functions for these types are run with the VM lock held as well as the VM barrier (or, in the case of MMTk, are not freed in parallel). In...luke-gru (Luke Gruber)
Can you please provide the output of `lscpu` and/or `uname -a` along with the version of `gcc`? What happens when you install this exact Ruby version without pkgsrc, like from git or a tarball? Thanks.luke-gru (Luke Gruber)
Oh yeah, thanks. There's even a helpful comment for it. I think changing `rb_gc_update_tbl_refs` to only move values probably makes sense. We could add something like `rb_mark_hash_nopin_values` where it marks values for moving but pins ...luke-gru (Luke Gruber)
Looking into this further, it looks like `gc_update_table_refs` is only used once internally, with the finalizer_table. It looks to me like it's used wrong there because the key (finalized object) is not pinned so can be moved, but the s...luke-gru (Luke Gruber)
Nice catch! I think this would only be a problem if the key was a number that was also a valid pointer into the Ruby heap and it happened to point to a T_MOVED object. If it's another pointer from malloc or xmalloc it shouldn't be an iss...luke-gru (Luke Gruber)
A note to whoever backports this (which could be me, I'm just waiting ~ 1 week and checking various CIs after the merge): https://github.com/ruby/ruby/pull/16362 should be backported as well, they are really 1 fix in 2 separate commit...luke-gru (Luke Gruber)
I'm getting a segfault when running your minimal reproduction script on my Macbook Pro (`Darwin Mac 25.2.0 Darwin Kernel Version 25.2.0 (Apple Silicon)`). I get the segfault when compiling under all 3 `GETADDRINFO_IMPL` implementations ...luke-gru (Luke Gruber)