Applied in changeset commit:git|9a2ffd8e5448e0c2ac4ae58d0ef02afc195f2cb8. ---------- Fix sending backtraces across ractors [Bug #21818] Currently exceptions can be sent across ractors, but because of a limitation in the TypedData API,...byroot (Jean Boussier)
[Bug #21818] Currently exceptions can be sent across ractors, but because of a limitation in the TypedData API, the exception backtrace is duped as an empty backtrace. The problem is that backtraces are embedded objects, hence the clas...byroot (Jean Boussier)
Applied in changeset commit:git|53099633e208b43e26a8ee3c6fdd936e2943b0d5. ---------- Make `ruby_xfree_sized` and `ruby_xrealloc_sized` public [Feature #21861]byroot (Jean Boussier)
(https://github.com/ruby/strscan/pull/201) GC compaction was introduced in Ruby 2.7. Embedded Structs was introduced in Ruby 3.3. When enabled, the `struct strscanner` is stored directly inside the object slot, meaning reading the stru...byroot (Jean Boussier)
A rare crash I observed in production. I unfortunately don't have a reproduction, but perhaps this will ring a bell to someone. ``` #4 0x0000aaaac9afb1b8 [PAC] in sigsegv (sig=11, info=0xaaaaff573e30, ctx=0xaaaaff573eb0) at signal.c...byroot (Jean Boussier)
So for the record, I managed to remove our dependency on `nkf`, and the issue seem to have disappeared so far. So this suggest `nkf` is indeed the root cause, but that is weird because I looked at the extension, and it's really not do...byroot (Jean Boussier)
So it appears that when duplicating a class in another box, we copy the class variables table, but not its entries, causing both boxes to think they own that memory, resulting in a double free. I have a fix for the specific reproducer...byroot (Jean Boussier)