Skip to content

[pull] master from ruby:master#743

Merged
pull[bot] merged 17 commits intoturkdevops:masterfrom
ruby:master
Feb 3, 2026
Merged

[pull] master from ruby:master#743
pull[bot] merged 17 commits intoturkdevops:masterfrom
ruby:master

Conversation

@pull
Copy link

@pull pull bot commented Feb 3, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

hsbt and others added 17 commits February 3, 2026 16:13
They are cancelled after new permission.

IBM/actionspz#75

Other Ubuntu jobs unexpectedly terminated with their cancellation.
Fix: ruby/json#929

When calling `cState_partial_generate` from `mHash_to_json` or other
`to_json` funcs, `VState` becomes unreachable very quickly, hence the
compiler may optimize it out of the stack, and make it invisible to
the GC stack scanning. This is particularly liekly given how aggressively
we inline.

Repro:

```ruby
require 'json'

test_data = {
  "flag" => true,
  "data" => 10000.times.map { [1.0] },
  :flag => false,
}

10.times do
  test_data.to_json
end
```

But in practice the cause was just that the issued warning calls
Hash#inspect on a big hash, which triggers GC.

So it can be triggered even more reliably with:

```ruby
require 'json'

module JSON
  module Common
    def self.on_mixed_keys_hash(...)
      GC.start
    end
  end
end

test_data = {
  "flag" => true,
  "data" => 10000.times.map { [1.0] },
  :flag => false,
}

test_data.to_json
```

ruby/json@79b6e168ba
This was for pre Ruby 2.4 support which we dropped a while ago.

ruby/json@b11ce01ca6
in target_thread test to avoid such failure:

```
1) Failure:
  TestSetTraceFunc#test_enable_target_thread [/tmp/ruby/src/trunk/test/ruby/test_settracefunc.rb:2595]:
  <[#<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>]> expected but was
  <[#<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>,
   #<Thread:0x000078ca3d778460 run>]>.
```
to show C level backtrace for the following failure:

```
  1) Error:
TestObjSpaceRactor#test_undefine_finalizer:
Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (10 sec)
pid 861177 killed by SIGTERM (signal 15)
|
    /tmp/ruby/src/trunk-yjit/test/objspace/test_ractor.rb:17:in 'TestObjSpaceRactor#test_undefine_finalizer'
```
to avoid such case:
```
  1) Failure:
TestProcess#test_wait_exception [/tmp/ruby/src/trunk-asserts-nopara/test/ruby/test_process.rb:1588]:
[ruby-dev:49176] [Bug #11340]: 3.696015712 seconds to interrupt Process.wait.
Expected 3.696015712 to be < 3.
```
for the following failure

```
    1) Error:
  TestClass#test_safe_multi_ractor_subclasses_list_mutation:
  Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (10 sec)
  pid 814469 killed by SIGTERM (signal 15)
  |
      /tmp/ruby/src/trunk_gcc14/test/ruby/test_class.rb:922:in 'TestClass#test_safe_multi_ractor_subclasses_list_mutation'
```
for the following failure:
```
    1) Error:
  TestRefinement#test_refining_module_repeatedly:
  Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_in_out_err expired timeout (10 sec)
  pid 56455 exit 0
  | ok
  |

      /Users/runner/work/ruby/ruby/src/test/ruby/test_refinement.rb:2258:in 'TestRefinement#test_refining_module_repeatedly'
```
for the following failure:

```
      1) Timeout:
    TestResolvDNS#test_multiple_servers_with_timeout_and_truncated_tcp_fallback
```
raise when assert_linear_performance measures only zeros to check the following error:

```
  1) Error:
TestRegexp#test_linear_performance:
Test::Unit::ProxyError: nil can't be coerced into Integer
    /home/opc/ruby/src/master/test/ruby/test_regexp.rb:2301:in 'TestRegexp#test_linear_performance'
```
…ranslator

Closes ruby/prism#3899

Also better compatibility by only dropping
the last token if it is actually EOF

ruby/prism@128ab52be9
@pull pull bot locked and limited conversation to collaborators Feb 3, 2026
@pull pull bot added the ⤵️ pull label Feb 3, 2026
@pull pull bot merged commit 4bf1cb0 into turkdevops:master Feb 3, 2026
1 check failed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants