Activity
From 06/17/2025 to 06/23/2025
06/23/2025
-
11:55 PM Revision 74e6bddf (git): ZJIT: Parse putspecialobject(VMCore) into Const (#13683)
- This way we get more information in HIR for the optimizer.
Fix https://github.com/Shopify/ruby/issues/587 -
10:41 PM Revision 3a9bf4a2 (git): ZJIT: Optimize frozen array aref (#13666)
- If we have a frozen array `[..., a, ...]` and a compile-time fixnum index `i`,
we can do the array load at compile-time. -
08:17 PM Misc #21399: DevMeeting-2025-07-10
- * [Feature #17473] Make Pathname to embedded class of Ruby (eregon)
* Related to that issue and discussed there, I made a PR to define most of Pathname in Ruby: https://github.com/ruby/pathname/pull/53
* It's faster, easier to read a... -
08:10 PM Feature #17473: Make Pathname to embedded class of Ruby
- I (finally) made a PR to define most of Pathname in Ruby: https://github.com/ruby/pathname/pull/53
-
07:07 PM Bug #21398: Ractor.select hangs when multiple threads submit heavy jobs concurrently
- I sent a [PR](https://github.com/ruby/ruby/pull/13682) for this but I don't know if this is the proper fix or if we should use a different mutex to wait for condvar for DNTs. I did, however, figure out why it's happening. @ko1 what are y...
-
05:43 AM Bug #21398: Ractor.select hangs when multiple threads submit heavy jobs concurrently
I'm experiencing a hang when combining `Ractor::Port` and multiple `Thread`s in Ruby 3.5.0dev (ruby-head). The script below is a modified version of the one shared in comment #1 of this issue, with adjusted parameters.
When I increase...-
06:20 PM Bug #20714: Handle optional dependencies in `bundled_gems.rb`
- For what it's worth, I did end up considering my PR a strict improvement over what we have now, but I just closed it because it was ignored for a long time. Hopefully we'll have a proper solution in the future.
-
05:56 PM Bug #21449 (Closed): Set#divide is order dependent and not working correctly
- Applied in changeset commit:git|67346a7d94b101acc00c177b01ad0aabfef605a8.
----------
[Bug #21449] Fix Set#divide{|a,b|} using Union-find structure (#13680)
* [Bug #21449] Fix Set#divide{|a,b|} using Union-find structure
Implements Uni... -
01:23 PM Bug #21449: Set#divide is order dependent and not working correctly
- pull request https://github.com/ruby/ruby/pull/13680
-
01:15 PM Bug #21449 (Closed): Set#divide is order dependent and not working correctly
- ~~~ruby
Set[0,1,2,3].divide{(_1 - _2).abs == 1}
#=> #<Set: {#<Set: {0, 1, 2, 3}>}>
Set[0,2,3,1].divide{(_1 - _2).abs == 1}
#=> #<Set: {#<Set: {0, 1, 2, 3}>}> (ruby 3.4)
#=> #<Set: {#<Set: {0, 1}>, #<Set: {2, 3, 1}>}> (ruby 3.5.0de... -
05:56 PM Revision 67346a7d (git): [Bug #21449] Fix Set#divide{|a,b|} using Union-find structure (#13680)
- * [Bug #21449] Fix Set#divide{|a,b|} using Union-find structure
Implements Union-find structure with path compression.
Since divide{|a,b|} calls the given block n**2 times in the worst case, there is no need to implement union-by-rank o... -
05:28 PM Revision db6f3979 (git): Tweaks for String#bytesize
-
03:20 PM Revision b1ce569f (git): ZJIT: `anytostring` to HIR (GH-13658)
- Pop two values from the stack, return the first if it is a string,
otherwise return string coercion of the second
Also piggybacks a fix for string subclasses skipping `to_s` for
`objtostring`.
Co-authored-by: composerinteralia <compose... -
03:15 PM Bug #21450 (Closed): Inconsistent `upcase` between `String` and `Symbol`
- Behavior for `Symbol#upcase` and `String#upcase` differs for `i` character if the `:turkic` option is present
I'd expect `val.upcase(:turkic)` behaves consistently for both cases:
```ruby
'i'.upcase(:turkic)
# "İ" with dot
:i.... -
11:03 AM Revision af6b98f7 (git): Make the critical level an enum
-
09:04 AM Revision c6dd07d6 (git): Allocate singleton classes as namespaceable if their parent are
-
09:04 AM Revision 32ee3fab (git): Shink RClass when it is known they can't be namespaced
- Even when namespaces are enabled, only a few core classes created
during init will eventually be namespaced.
For these it's OK to allocate a 320B slot to hold the extra namespace
stuff.
But for any class created post init, we know we'l... -
09:04 AM Revision ea4a53c5 (git): Avoid creating namespace table for classes that can't be namespaced.
-
09:04 AM Revision 071b9aff (git): Ensure `RCLASS_CLASSEXT_TBL` accessor is always used.
-
09:04 AM Revision 96a0c206 (git): Mark RClass instance that may be namespaced with RCLASS_NAMESPACEABLE
-
09:04 AM Revision 393e9a5f (git): Optimize `rb_namespace_available`
- Rather than to lazily check the env using a trinary
value, we can more straightforwardly check for the
env during the VM boot.
This allow `rb_namespace_available` to just be a pointer
dereference. -
02:08 AM Revision ce38cba5 (git): Merge blocks for the same condition
-
02:07 AM Revision a1d62a3b (git): [rubygems/rubygems] Handle RubyGems installing to custom dir with non-existent parent dirs
- https://github.com/rubygems/rubygems/commit/4701123601
-
02:07 AM Revision 8f009601 (git): [rubygems/rubygems] Handle `Errno::EADDRNOTAVAIL` gracefully
- As showed by the unskiped spec, on Windows trying to use the 0.0.0.0
interface raises this error, and it's raised as a generic system error
when trying to create a `bundler.lock` file. Here's is a better place to
handle that.
https://gi... -
02:07 AM Revision 7fe1fc39 (git): [rubygems/rubygems] Make `HTTP_ERRORS` list look like `FAIL_ERRORS` list
- https://github.com/rubygems/rubygems/commit/bfa6770e39
-
02:07 AM Revision c3bfce51 (git): [rubygems/rubygems] Simplify non retriable errors list
- https://github.com/rubygems/rubygems/commit/627a7615f2
-
02:07 AM Revision 627ca420 (git): [rubygems/rubygems] Move `HTTP_ERRORS` together with the other error constants
- https://github.com/rubygems/rubygems/commit/57e8ae7aa6
-
02:06 AM Revision 746e0d3e (git): [rubygems/rubygems] Deprecate unused `Bundler#SpecSet` methods
- https://github.com/rubygems/rubygems/commit/380c95ce05
-
02:06 AM Revision 7c326ee7 (git): [rubygems/rubygems] Remove usage of `Bundler::SpecSet#<<`
- https://github.com/rubygems/rubygems/commit/b556167793
-
02:06 AM Revision 7c115b86 (git): [rubygems/rubygems] Fix flaky test failures in mirror probing specs
- The mirror probing spec file was moved to our regular suite, which runs
in parallel, recently. These specs rely on starting and stopping actual
servers in localhost, but this does not play nice with parallelization,
because a spec may ki... -
01:28 AM Bug #21448: Random.urandom may fail to fall back to reading /dev/urandom on Linux < 3.17
- rhenium (Kazuki Yamaguchi) wrote in #note-2:
> FWIW `getentropy()` has recently made it into POSIX (with a slight difference in errno behavior compared to existing implementations). I think supporting it as an alternative makes sense, n...
06/22/2025
-
10:34 AM Misc #20968: `Array#fetch_values` unexpected method name in stack trace
- @mame Here is an example bug due to this change, based on the `inject` case I mentioned in https://bugs.ruby-lang.org/issues/20968#note-6.
I think this is strong enough to revert that change.
ruby-master:
```
$ ruby -e '[1,2].injec... -
09:00 AM Bug #21444 (Closed): Crash in GC after accessing `object_id` (`obj_free` called for broken object)
06/21/2025
-
09:43 PM Revision 353fa6f0 (git): Avoid allocation for positional splat for literal array keyword argument
- If all nodes in the array are safe, then it is safe to avoid
allocation for the positional splat:
```ruby
m(*a, kw: [:a]) # Safe
m(*a, kw: [meth]) # Unsafe
```
This avoids an unnecessary allocation in a Rails method call.
Details: ht... -
05:00 PM Revision d84a811f (git): [Bug #21448] Reorder trials in `fill_random_bytes`
- First try dedicated system calls, such as `getrandom` or `getentropy`,
next possible libraries, then fallback to `/dev/urandom`. -
04:08 PM Revision ec20f7fe (git): Suppress warnings
- - `ractor_sync_terminate_atfork` is unused unless fork is working
- `cr` in `vm_lock_leave` is only for debugging -
04:07 PM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- Cool, that works (for me at least). You can also close https://bugs.ruby-lang.org/issues/21444, since it was the same problem.
-
01:40 PM Bug #21445 (Closed): [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- Applied in changeset commit:git|edbd9ed46842b8cd811fba45a373bb39ee155bfb.
----------
variable.c: avoid out of bound write in `generic_field_set`
[Bug #21445] -
12:45 PM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- Thanks for the even simpler repro. I got a fix: https://github.com/ruby/ruby/pull/13675
-
10:17 AM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- I was just trying to reduce my issue in https://bugs.ruby-lang.org/issues/21444 and while I did manage to do so, I now ended up at the assertion from this bug report. So I guess they are the same issue:
```rb
class Foo
def initialize
... -
09:39 AM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- > So there must be something more than just a T_DATA.
The common denominator between the two impacted gems seem to be that they don't set: `RUBY_TYPED_FREE_IMMEDIATELY`. So something must be happening during the zombie phase. -
09:33 AM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- Much smaller repro:
```ruby
require "sqlite3"
10.times do
db = SQLite3::Database.new(":memory:")
db.__id__
db = nil
GC.stress = true
Object.new
GC.stress = false
end
``` -
09:25 AM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- Another observation:
- It reproduce with `sqlite3` and `mysql2`, but not with `postgresql` nor `trilogy`. So there must be something more than just a `T_DATA`. -
09:18 AM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- I had a bit of time to look at that this morning.
A few observations:
- It's triggered by a very specific test, that calls `__id__` on `T_DATA` objects.
- I can make it consistently fail with `GC.stress`: https://github.com/by... -
01:40 PM Revision edbd9ed4 (git): variable.c: avoid out of bound write in `generic_field_set`
- [Bug #21445]
-
10:57 AM Bug #21448 (Closed): Random.urandom may fail to fall back to reading /dev/urandom on Linux < 3.17
- Applied in changeset commit:git|1181a682a6c314c92686e3701defa1eb44068c4e.
----------
[Bug #21448] Use `getentropy(2)` only on macOS
If this is not a system call, then it is using getrandom (which would
have been tried already), and can... -
08:24 AM Bug #21448: Random.urandom may fail to fall back to reading /dev/urandom on Linux < 3.17
- FWIW `getentropy()` has recently made it into POSIX (with a slight difference in errno behavior compared to existing implementations). I think supporting it as an alternative makes sense, not just for macOS.
https://pubs.opengroup.org... -
06:26 AM Bug #21448: Random.urandom may fail to fall back to reading /dev/urandom on Linux < 3.17
- Unfortunately, despite the same signature, `getentropy` is different thing in different layers depending on the platform.
* `getentropy(3)` - a library function on Linux:
> The `getentropy()` function is implemented using `getr... -
10:57 AM Revision 0cec4a14 (git): Restore getrandom(2) path for Linux with glibc 2.36 or later
- This is a follow-up to commit b120f5e38d9c (avoid fork-unsafe arc4random
implementations, 2018-09-04).
Avoid defining a no-op fill_random_bytes_syscall() if arc4random_buf(3)
exists, but we are unsure if it is fork-safe. Check for other... -
10:19 AM Bug #21444: Crash in GC after accessing `object_id` (`obj_free` called for broken object)
- Probably the same as https://bugs.ruby-lang.org/issues/21445, during reduction I started hitting `push_mark_stack() called for broken object` instead.
-
07:52 AM Revision 1181a682 (git): [Bug #21448] Use `getentropy(2)` only on macOS
- If this is not a system call, then it is using getrandom (which would
have been tried already), and cannot be used as a replacement for the
random devices. -
04:14 AM Revision dbc59693 (git): Move a comment to the corresponding conditional block [ci skip]
-
12:15 AM Revision 6602a08a (git): ZJIT: Move ccall comments near ccall instructions (#13662)
- Don't confuse them with other nearby instructions.
06/20/2025
-
11:47 PM Bug #21447 (Closed): Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
- Fixed by commit:1d94a9e1a4351e01f851dad250ba97dad859ee70
-
03:22 AM Bug #21447 (Closed): Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
- I added an optimization to reduce implicit allocations when using parse.y in commit:3de20efc308cccc38bf9dacfffca6c626d039a06. An implementation was added for prism in commit:14bb376b79ca9140bfd36dbbad06be045f31f92e. Unfortunately, when...
-
11:46 PM Revision 1d94a9e1 (git): Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
- This was handled correctly in parse.y (NODE_COLON2), but not in
prism. This wasn't caught earlier, because I only added tests for
the optimized case and not the unoptimized case. Add tests for
the unoptimized case.
In code terms:
```ru... -
05:58 PM Revision 112ba706 (git): [ruby/openssl] ssl: add SSLContext#sigalgs= and #client_sigalgs=
- Add methods for setting supported signature algorithms, corresponding
to SSL_CTX_set1_sigalgs_list() and SSL_CTX_set1_client_sigalgs_list(),
respectively.
https://github.com/ruby/openssl/commit/6bbe58c492
Co-authored-by: Markus Jung <m... -
05:58 PM Revision 0d75dd1f (git): [ruby/openssl] ssl: update rdoc for SSLContext#ciphers= and #ciphersuites=
- https://github.com/ruby/openssl/commit/54f22395e7
-
05:58 PM Revision 444b94c0 (git): [ruby/openssl] ssl: correct array index type in build_cipher_string()
- https://github.com/ruby/openssl/commit/9c9333c07d
-
05:37 PM Bug #21375: Set[] does not call #initialize
- Ethan (Ethan -) wrote in #note-3:
> My feeling is that the base expectation is that #initialize is called on new objects.
I agree.
`Array[*args]` is equivalent to `Array.new.concat(*args)` and in that case there was no need to call #ini... - 05:13 PM Revision edfcbaca (git): thread_cleanup: set CFP to NULL before clearing ec's stack
- We clear the CFP first so that if a sampling profiler interrupts the current thread during `rb_ec_set_vm_stack`,
`thread_profile_frames` returns early instead of trying to walk the stack that's no longer set on the ec.
The early return ... -
04:52 PM Revision b6babd9a (git): ZJIT: Typofix (#13665)
-
04:43 PM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- Assigning to myself, but I might not have time to look into it before Tuesday so feel free to investigate if you so desire.
-
03:03 PM Bug #21448 (Closed): Random.urandom may fail to fall back to reading /dev/urandom on Linux < 3.17
- Origianlly reported for tmpdir: https://github.com/ruby/tmpdir/issues/50
On Linux, `Random.urandom` is expected to first attempt the `getrandom(2)` syscall (Linux >= 3.17), and fall back to reading from `/dev/urandom` if it is not sup... -
11:35 AM Revision d31d62d6 (git): Dump with debugger just once
-
09:39 AM Revision d9efc56c (git): [ruby/io-console] Ignore `^C` at interrupt
- It's something we don't expect and might be coming from somewhere
else.
https://github.com/ruby/io-console/commit/f0646b2b6a -
08:55 AM Revision 7addde1e (git): Revert to setup-ruby v1.231.0
- v1.245.0 is not working with the following issue:
https://github.com/ruby/ruby/actions/runs/15769771616/job/44464179119?pr=13661
```
D:/a/ruby/ruby/src/test/rubygems/mock_gem_ui.rb:83:in 'Gem::MockGemUi#terminate_interaction': Gem::Moc... -
08:55 AM Revision 092ea7a1 (git): Update to the latest step versions at the GitHub Actions
-
08:40 AM Revision 896f9f63 (git): CI: Run Launchable in the build directory
- As well as compilers/entrypoint.sh.
-
07:50 AM Revision 7a735c48 (git): Fix indents in macros
-
07:50 AM Revision 68d6cc6b (git): Do not fetch already fetched commits
-
06:33 AM Revision 29c7f849 (git): Use another credential for generating new releases
- 04:52 AM Revision 8ce65463 (git): Update bundled gems list as of 2025-06-20
-
03:45 AM Revision e2394167 (git): Rename token name to more descriptive
-
03:35 AM Revision 1e428366 (git): Use windows-2025 image because that have pre-installed winget
-
02:40 AM Revision fafae10d (git): Separate credential with auto_request_review and others
-
01:44 AM Revision 9e8fa9bc (git): Re-enabled to upload sarif file of scorecards
-
01:44 AM Revision 54681485 (git): Update scorecards action with the latest template file
-
12:51 AM Revision 9e33e043 (git): ZJIT: Add pass to clean CFG (#13655)
- We can fuse linked lists of blocks. This can be run any time, improves
future analyses, improves codegen, and also makes the HIR output look
nicer.
Inspired by my implementation of CleanCFG for Cinder, which was itself
inspired by Brett... -
12:16 AM Bug #21446: StackOverflow when changing visibility in reopened refinement
- It does not seem to need to reopen the refinement.
Reproduces just by changing visibility twice.
```ruby
module R
refine B do
private :a
public :a
end
end
``` -
12:16 AM Revision 2a79d7fc (git): Separate credential with dependabot and others
06/19/2025
-
06:21 PM Bug #21445: [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- GitHub is also seeing a test failure that we bisected to cd9f447be247478d2eb3da985295735cce20cb23. We're still working on narrowing it down (it's only failing in CI), so not sure yet how related it is to this crash.
-
01:23 AM Bug #21445 (Closed): [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23
- Rails CI against Ruby master branch fails
https://buildkite.com/rails/rails-nightly/builds/2398#019784d7-fbc2-4ff4-aee7-6e74eb560369
According to git bisect, this issue is triggered by cd9f447be247478d2eb3da985295735cce20cb23 .
H... -
05:16 PM Bug #21446 (Open): StackOverflow when changing visibility in reopened refinement
- ```ruby
class A
def a
:a
end
end
class B < A
end
module R
refine B do
private :a
end
end
module R
refine B do
public :a
end
end
using R
B.new.a # StackOverflow
```
I would expect it to cha... -
04:19 PM Revision 38d38bd5 (git): ZJIT: objtostring to HIR
- Add a fast path for known strings at compile time, otherwise calls method id to_s using Insn::SendWithoutBlock
Co-authored-by: composerinteralia <[email protected]>
More specific test name in zjit/src/hir.rs
Co-authored-by:... -
02:29 PM Revision 34eaa641 (git): ZJIT: Add `dupn` support
-
12:17 PM Revision 82dfd44f (git): CI: Extract `launchable_setup` function
-
12:17 PM Revision 1b018d96 (git): CI: Extract `launchable_record_session` function
-
12:17 PM Revision 87d33583 (git): CI: Store session info in variables directly
-
11:38 AM Revision 963fc0ab (git): ZJIT: Implement `opt_reverse`
-
10:49 AM Revision 2eb5ee8a (git): Remove unnecessary shebang and excutable bits [ci skip]
-
08:28 AM Revision 0be7fedd (git): Fix EnvUtil::Debugger#dump
- - Send outputs from debugger to stderr
- Use `%W` to interpolate the pid -
07:49 AM Revision d4ed7eb1 (git): Relax delta value
- https://github.com/ruby/ruby/actions/runs/15751511003/job/44397451542?pr=13649
```
1) Failure:
TestLastThread#test_last_thread [/Users/runner/work/ruby/ruby/src/test/-ext-/gvl/test_last_thread.rb:18]:
Expected |1.0 - 1.167141| (... -
05:18 AM Revision 6929542a (git): Update CGI sections under the doc directory
-
04:17 AM Revision ef2b26cc (git): `struct iseq_catch_table` is packed
-
03:54 AM Revision 912edb47 (git): Fix missing write barrier on class fields
- Found by wbcheck
klass = Class.new
200.times do |iv|
klass.instance_variable_set("@_iv_#{iv}", Object.new)
end -
02:33 AM Revision bfb14c2b (git): [DOC] Add the link to [Feature #21219]
-
02:17 AM Revision 5a199140 (git): [DOC] Fix indentation
- RDoc markdown parser requires exact 4 spaces or tab as indentation.
Also the first nested bullet list must be separated from the enclosing
bullet list item by a blank line. - 01:54 AM Revision a4c4a347 (git): Update default gems list at c2d5d2969a501b9db93ed66db9017a [ci skip]
-
01:53 AM Revision c2d5d296 (git): [ruby/weakref] v0.1.4
- https://github.com/ruby/weakref/commit/f6bd03ed54
-
01:23 AM Revision 441f18df (git): Skip to Bundler 4 directly
-
01:23 AM Revision 471da0f0 (git): [rubygems/rubygems] Use `persist-credentials: false` in template
- `actions/checkout` defaults this value to `true`, causing credentials to
be written to `.git/config`. By setting it to `false`, we lessen the
likelihood of secrets being written to disk.
https://github.com/rubygems/rubygems/commit/a751d... -
01:23 AM Revision 6d8460e0 (git): [rubygems/rubygems] Fix running gem commands in a `bundle exec` context
- They should only load plugins from gems in the bundle.
https://github.com/rubygems/rubygems/commit/a229507820 -
01:23 AM Revision 4281b95e (git): [rubygems/rubygems] Move finding eigenclass to a method
- https://github.com/rubygems/rubygems/commit/5ad0737e77
-
01:23 AM Revision 382b8ead (git): [rubygems/rubygems] Fix grammar in `bundle config` deprecation message
- https://github.com/rubygems/rubygems/commit/d23b3d61ac
-
01:23 AM Revision f3ea6c35 (git): [rubygems/rubygems] Normalize Bundler version spec filters
- https://github.com/rubygems/rubygems/commit/28b6a7cf5e
-
01:23 AM Revision 4245d522 (git): [rubygems/rubygems] Allow enabling "Bundler 3 mode" more easily
- Currently to test Bundler 3 mode we have to actually edit the version
file to simulate we're running a future version. This is inconvenient.
Instead, allow passing an environment variable, `BUNDLER_3_MODE`, to set
the "working mode" Bun... -
01:23 AM Revision af0b184e (git): [rubygems/rubygems] Never ignore gems from path sources during activation
- The "ignore" attribute is a RubyGems thing to mark when a installed gem
should be ignored for activation because its extensions are not properly
compiled.
In the case of gems from path sources, the warning is not accurate
because extens...
06/18/2025
-
10:58 PM Revision 3290d3d7 (git): ZJIT: Support invokebuiltin opcodes (#13632)
- * `invokebuiltin`
* `invokebuiltin_delegate`
* `invokebuiltin_delegate_leave`
These instructions all call out to a C function, passing EC, self, and
some number of arguments. `invokebuiltin` gets the arguments from the
stack, whereas th... - 06:09 PM Revision c57efbfb (git): Fix `heap-use-after-free` in `free_fast_fallback_getaddrinfo_entry` (#13231)
- This change addresses the following ASAN error:
```
==36597==ERROR: AddressSanitizer: heap-use-after-free on address 0x512000396ba8 at pc 0x7fcad5cbad9f bp 0x7fff19739af0 sp 0x7fff19739ae8
WRITE of size 8 at 0x512000396ba8 thread T0
... - 06:09 PM Revision 584365af (git): Ensure that memory is not freed before calling `free_fast_fallback_getaddrinfo_*` (#12661)
- Ensure that `getaddrinfo_entry` and `getaddrinfo_shared` exist before free them in the main thread.
-
05:47 PM Revision 45ddafb9 (git): Fix use-after-free when resizing exivars (#13637)
- Fix generic_ivar_set_shape_ivptr for table rebuild
[Bug #21438]
Previously GC could trigger a table rebuild of the generic ivar
st_table in the middle of calling the st_update callback. This could
cause entries to be reallocated or rea... -
05:18 PM Revision 521b2fcb (git): Add missing write barrier for hash on iseq
- Found by wbcheck
-
05:18 PM Revision 1bfd6493 (git): Add write barrier to rb_cArray_empty_frozen
- Found by wbcheck
-
05:18 PM Revision d5adf851 (git): Add write barrier to rb_cHash_empty_frozen
- Found by wbcheck
-
05:18 PM Revision 121f967b (git): More write barriers to local_iseq and parent_iseq
- Found by wbcheck
-
05:18 PM Revision 99de3890 (git): Use write barriers when loading catch table
- Found by wbcheck
-
05:18 PM Revision 61230f53 (git): Add missing write barriers to ibf_load
- Found by wbcheck
-
05:18 PM Revision db572489 (git): Fix a missing write barrier to mandatory_only_iseq
- Found by wbcheck
-
05:17 PM Revision 6b3fa235 (git): Add write barrier on tm_from_time->timew
- We want to always use time_set_timew, as timew is 64-bit even on 32-bit
platforms so we need to be careful to both write that size, but still
trigger write barriers if we end up with a heap object. -
05:17 PM Revision 0e2067df (git): Add missing write barrier to time_init_copy
-
05:17 PM Revision 7439f353 (git): Write barrier for zone on time
-
05:08 PM Revision bb0d6296 (git): Add write barrier for hash in obj_traverse_i
- We are inserting directly into the st_table, so we need to issue a write
barrier from the hash. -
05:08 PM Revision f951ce37 (git): Add missing writebarrier on move_leave
- This object was newly allocated on move_enter, so some GC may happen and
it may have been marked by move_leave, so we need to issue an
rb_gc_writebarrier_remember so that any new references are seen afer the
memcpy from the old object. -
05:08 PM Revision 89b3e471 (git): Add write barriers from Ractor::Port to Ractor
- Ractor::Port will mark the ractor, so we must issue a write barrier.
This was detected by wbcheck, but we've also seen it in CI:
verify_internal_consistency_reachable_i: WB miss (O->Y) 0x000071507d8bff80 ractor/port/Ractor::Port ra... -
02:06 PM Bug #21443 (Closed): Backport: Fix heap-use-after-free in free_fast_fallback_getaddrinfo_entry
- https://github.com/ruby/ruby/pull/13652
-
12:40 PM Bug #21443 (Closed): Backport: Fix heap-use-after-free in free_fast_fallback_getaddrinfo_entry
- Please backport the following AddressSanitizer error into Ruby 3.4
https://github.com/ruby/ruby/pull/13231
I did not find a ticket related to the original fix.
Thank you! -
12:53 PM Bug #21444 (Closed): Crash in GC after accessing `object_id` (`obj_free` called for broken object)
- ```rb
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'rubocop'
end
require 'objspace'
require 'tmpdir'
3.times { GC.start }
GC.disable
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
File.open... -
11:26 AM Revision aaa956e8 (git): Now irb is a bundled gem and needs rubygems
-
10:08 AM Feature #21442: Make tsort to bundled gems
- https://github.com/ruby/ruby/pull/13649
-
10:07 AM Feature #21442 (Assigned): Make tsort to bundled gems
- In last year, I gave up to make `tsort` to bundled gems because `set` depends `tsort`.
https://github.com/ruby/set/blob/29a253d2259e8d6d9b313dec8418ec5ed0caab08/lib/set.rb#L786
Fortunately, `set` is now core class. So, there is no ... -
08:44 AM Misc #20968: `Array#fetch_values` unexpected method name in stack trace
- I have updated the behavior to (mostly) suppress the display of `<internal:...>` frames in a backtrace. The algorithm works as follows:
* When internal frames appear in a sequence, it retains only one frame -- the one directly called ... -
05:52 AM Misc #20968 (Closed): `Array#fetch_values` unexpected method name in stack trace
- Applied in changeset commit:git|10767283dd0277a1d780790ce6bde67cf2c832a2.
----------
Exclude internal frames from backtrace
This changeset suppresses backtrace locations like
`<internal:array>:211` as much as possible.
Before the patc... -
08:15 AM Revision 4eaa245f (git): Restore ignored test target for mswin
-
07:13 AM Revision 332f83d1 (git): Enabled the released versions of bundled gems that are working fine with Ruby HEAD
- 07:06 AM Revision 13a2b9fa (git): Update bundled gems list as of 2025-06-18
-
06:39 AM Bug #21210: IO::Buffer gets invalidated on GC compaction
- I think @alanwu means the mutable buffer path (IO::Buffer.for w/ block) uses rb_str_locktmp to pin the String's malloc'ed content memory (not RString), while the immutable buffer path (IO::Buffer.for w/o block) utilizes CoW to obtain a f...
-
05:51 AM Revision 2606a36a (git): Update bundled version of debug and use the dev version of irb
-
05:51 AM Revision b7cb29b6 (git): Add a test for the previous commit
-
05:51 AM Revision 10767283 (git): Exclude internal frames from backtrace
- This changeset suppresses backtrace locations like
`<internal:array>:211` as much as possible.
Before the patch:
```
$ ruby -e '[1].fetch_values(42)'
<internal:array>:211:in 'Array#fetch': index 42 outside of array bounds: -1...1 (Index... -
05:51 AM Revision ca10c521 (git): refactor: rename bt_update_cfunc_loc to bt_backpatch_loc
- In preparation for using it to update not only cfunc frames but also
internal frames, the function (and related variable names) are chagned.
I felt that the word "backpatch" is more appropriate than the more
general verb "update" here. -
04:46 AM Bug #21312 (Closed): ruby 3.5-dev installs a gemspec for rdoc that misses dependencies
- Applied in changeset commit:git|ecf1746fa4b899692514e68719227f04f9d6c1cc.
----------
Use the original gemspec from release package of RDoc
[Bug #21312]
https://bugs.ruby-lang.org/issues/21312
https://github.com/ruby/rdoc/pull/1379 -
04:45 AM Revision f0d32ee8 (git): net-imap and irb are not working with dev version of RDoc
- Because they are required markdown.rb provided by release package.
-
04:45 AM Revision ecf1746f (git): Use the original gemspec from release package of RDoc
- [Bug #21312]
https://bugs.ruby-lang.org/issues/21312
https://github.com/ruby/rdoc/pull/1379
06/17/2025
-
10:51 PM Revision 3cfd71e7 (git): Fix minor typos in comments, specs, and docs
- Just a bit of minor cleanup
Signed-off-by: Tim Smith <[email protected]> -
10:33 PM Revision c6a66454 (git): Fix early write barrier rb_marshal_define_compat
- This write barrier occurred before the entry was added to the table, so
if GC occurred when inserting into the table, the write could be missed. -
10:32 PM Revision a7dc515c (git): Fix too early writebarrier in tally_up
- After returning from the callback in st_update is the point that the
hash table may be resized, which could trigger a GC and mark the table
being used for the tally.
RUBY_GC_LIBRARY=wbcheck WBCHECK_VERIFY_AFTER_WB=1 ./miniruby -e '(... -
10:03 PM
Bug #21441 (Closed): SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
- Applied in changeset commit:git|e3ec101cc21613550ef87b7bd8432a69c7e639de.
----------
thread_cleanup: set CFP to NULL before clearing ec's stack
We clear the CFP first so that if a sampling profiler interrupts the current thread during ... -
08:58 PM Bug #21441: SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
- I opened a PR [here](https://github.com/ruby/ruby/pull/13643).
This may need to be backported. -
08:45 PM Bug #21441 (Closed): SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
- During thread cleanup, if a ruby sampling profiler calls `thread_profile_frames` at just the wrong time, the ec's stack is cleared but the CFP still exists on the EC, so `thread_profile_frames` assumes it can walk the stack and crashes.
... - 10:03 PM Revision e3ec101c (git): thread_cleanup: set CFP to NULL before clearing ec's stack
- We clear the CFP first so that if a sampling profiler interrupts the current thread during `rb_ec_set_vm_stack`,
`thread_profile_frames` returns early instead of trying to walk the stack that's no longer set on the ec.
The early return ... -
04:46 PM Revision b0662602 (git): Follow up testunit
- * Update method names.
* Sort shuffled tests by names. -
04:46 PM Revision 1a527929 (git): Revert "Temporary pend unknown behavior of parallel tests"
- This reverts commit 980f61935f6e8331e0908dc963e60fb727ab4d8c, which
seems no longer needed. -
02:41 PM
Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
- ______________________________________________
-
07:16 AM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
- @hanazuki Thanks for the link, I wish I found that earlier. It confirms that it was already broken which is the same conclusion I came to.
hanazuki (Kasumi Hanazuki) wrote in #note-20:
> FYI: IO::Buffer is now broken (by a recent change... -
02:06 PM Revision c99cb62d (git): Fix up tool/auto-style.rb
- Do not clear the commit-wide flags per file.
-
01:28 PM Revision 8faa3232 (git): Add missing write barriers in `rb_imemo_fields_clone`.
-
01:28 PM Revision cd9f447b (git): Refactor generic fields to use `T_IMEMO/fields` objects.
- Followup: https://github.com/ruby/ruby/pull/13589
This simplify a lot of things, as we no longer need to manually
manage the memory, we can use the Read-Copy-Update pattern and
avoid numerous race conditions.
Co-Authored-By: Étienne Ba... -
01:28 PM Revision 164486a9 (git): Refactor `rb_imemo_fields_new` to not assume T_CLASS
-
01:28 PM Revision fb68721f (git): Rename `imemo_class_fields` -> `imemo_fields`
-
01:28 PM Revision 4cb0205f (git): Handle false positives in tool/auto-style.rb
-
11:51 AM Revision 0933400f (git): ZJIT: Add codegen (and FrameState) for GetConstPath
- Issue a call to rb_vm_opt_getconstant_path() like the interpreter, but
since that allocates the IC, we need to save the PC before calling. Add
FrameState to GetConstPath to get access to the PC. -
11:35 AM Revision 01ff17fa (git): ZJIT: Parse opt freeze insns to HIR
- * `opt_hash_freeze`
* `opt_ary_freeze`
* `opt_str_freeze`
* `opt_str_uminus`
Similar to `opt_neq`, but there are no args for `freeze`
Co-authored-by: ywenc <[email protected]>
Co-authored-by: Max Bernstein <[email protected]> -
11:18 AM Revision 9e5c74f2 (git): [ruby/prism] [DOC] Fix a typo in comment
- ruby/ruby#13636
https://github.com/ruby/prism/commit/e13d4f19db
Co-Authored-By: Tim Smith <[email protected]> -
11:00 AM Revision 9e839d3c (git): Optimize `benchmark/vm_ivar_of_class`
- ```
compare-ruby: ruby 3.5.0dev (2025-06-17T08:45:40Z master e9d35671d2) +PRISM [arm64-darwin24]
last_commit=[ruby/json] Fix a typo
built-ruby: ruby 3.5.0dev (2025-06-17T09:27:05Z opt-getivar-for-cl.. ed1d7cd778) +PRISM [arm64-darwin24]
... -
10:05 AM Bug #20452: Ruby 3.3 on Alpine Linux results in a relatively shallow SystemStackError exception
- Halfway on the way to 3.5 now. I want to help out if I am able to, but right now I'm not sure what the holdup is.
-
09:41 AM Revision 9647dca1 (git): [ruby/tempfile] [DOC] Fix a typo
- ruby/ruby#13636
https://github.com/ruby/tempfile/commit/366d9ccb8f
Co-Authored-By: Tim Smith <[email protected]> -
08:45 AM Revision e9d35671 (git): [ruby/json] Fix a typo
- ruby/ruby#13636
https://github.com/ruby/json/commit/6fc2c4b6ab
Co-Authored-By: Tim Smith <[email protected]> -
07:53 AM Bug #21438 (Closed): use-after-free when resizing exivars
- The remaining issue was fixed in 055fef00a1c27fdc8293114dc134ca7910b1dc79.
Backport PRs:
- 3.4: https://github.com/ruby/ruby/pull/13637
- 3.3: https://github.com/ruby/ruby/pull/13638
Note that the bug while possible is quit... -
07:30 AM Revision 89926891 (git): Adjust indent [ci]
-
07:10 AM Bug #21210: IO::Buffer gets invalidated on GC compaction
- alanwu (Alan Wu) wrote in #note-5:
> Looks like the mutable string buffer code paths pin using rb\_str\_locktmp().
Does `rb_str_locktmp()` pin? I couldn't see anything like that from the usage of the flag it sets. -
05:57 AM Bug #21210 (Closed): IO::Buffer gets invalidated on GC compaction
- Applied in changeset commit:git|8aac19d5987150cf5c45fee73c7a949ca472f488.
----------
io_buffer: Reimplement dcompact for IO::Buffer
The `source` field in IO::Buffer can have a String or an IO::Buffer
object, if not nil.
- When the `so... -
06:09 AM Revision a3f2f7b7 (git): lewagon/wait-on-check-action didn't need bot token
-
06:09 AM Revision 4e2db1ff (git): [rubygems/rubygems] Etc exemption on Windows is no longer necessary
- https://github.com/rubygems/rubygems/commit/228f59e3ab
-
06:09 AM Revision 89ce782f (git): [rubygems/rubygems] Reword a couple of specs to further clarify them
- https://github.com/rubygems/rubygems/commit/e28b5e306f
-
06:09 AM Revision 632bf3b5 (git): [rubygems/rubygems] Migrate mirror probe specs to use the compact index API
- Could potentially fix some flakies we're using and make the specs more
"modern" and simplifies them because less fallbacks are involved.
https://github.com/rubygems/rubygems/commit/30da9a1a93 -
06:09 AM Revision 3319d3d7 (git): [rubygems/rubygems] Consistently use instance variables directly
- I don't think the indirection improve things.
https://github.com/rubygems/rubygems/commit/b408b28844 -
06:09 AM Revision 0a62e82a (git): [rubygems/rubygems] Fix `gem install` sometimes compiling the wrong source files
- If a previous copy of a gem is already installed, RubyGems will not
reinstall the gem but only recompile its extensions. This seems like a
good idea, but only if the gem is being installed from the registry.
If we are installing a local... -
06:09 AM Revision 0c2f0ffa (git): [rubygems/rubygems] Refactor some logic to create extconf files for tests
- https://github.com/rubygems/rubygems/commit/9a859078ab
-
06:09 AM Revision fadcee3b (git): [rubygems/rubygems] Use `Dir.chdir` with a block
- I don't see any warnings.
https://github.com/rubygems/rubygems/commit/395df777a2 -
06:09 AM Revision 459f265b (git): [rubygems/rubygems] Cleanup dead code, RubyGems 3.3 is no longer supported
- https://github.com/rubygems/rubygems/commit/945a29a477
-
06:01 AM Revision 055fef00 (git): Free after insert in generic_ivar_set_shape_fields
- Previously we were performing a realloc and then inserting the new value
into the table. If the table was flagged as requiring a rebuild, this
could trigger GC work and marking within that GC could access the fields
freed by realloc. -
05:57 AM Revision 8aac19d5 (git): io_buffer: Reimplement dcompact for IO::Buffer
- The `source` field in IO::Buffer can have a String or an IO::Buffer
object, if not nil.
- When the `source` is a String object. The `base` field points to the
memory location of the String content, which can be embedded in
RSTRING, ... -
05:57 AM Revision 4cc58c3a (git): Revert "Mark rb_io_buffer_type references declaratively"
- This reverts commit 6012145299cfa4ab561360c78710c7f2941a7e9d.
-
05:52 AM Revision 67366413 (git): [ruby/win32-registry] Minor readme improvements and typo fixes
- - Put shell commands in code blocks so they can easily be copied from
the GitHub UI directly
- Fix a few typos
- Fix a dead link to MSDN
Signed-off-by: Tim Smith <[email protected]>
https://github.com/ruby/win32-registry/commit/61a4... -
03:30 AM Revision a60bf9e6 (git): * adjust indent
-
03:30 AM Revision c09619d9 (git): Auto-style indent
-
03:20 AM Revision 21c7131d (git): Run git without shell
-
03:20 AM Revision 9255db4b (git): Run auto-style only when pull-request
- 01:07 AM Revision 50c6bd47 (git): Update vm->self location and mark it in vm.c for consistency