Allow up to 1 send from exits YJIT stat for proc test.

Add an allowed range of 0..1 for exits send stat.

In some case, the stats contain extra stat under 'exits' for 'send'.

In any other case, the stat is 0, and test passes.
From RPM build of Ruby for Fedora distro family, the exits' stats emit 1 extra send.

The commit that introduced fix and the offending test
0cba8cf414dfd8ab30edc3081645405c165a81d5 for [Bug #21266]
prevents a crash, which seems prevented here as well.

The test added by the backport fails deterministically in RPM builds
(both RHEL and Fedora) but passes when building from upstream sources
with the same Ruby 3.3.12 tag.

In the failed test we can observe the following snippet in addition to
the rest of the collected yjit stats:
```
Expected no exits, but got:
{:send=>1}
method call exit reasons:
    interrupted:          1 (100.0%)
```

Resolves: RHEL-170927
This commit is contained in:
Jarek Prokop 2026-07-21 13:00:01 +02:00
parent 8cd0892910
commit 640996833b
2 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1,32 @@
From feee246753aa097e836a79ea8437f4b8c73df7e8 Mon Sep 17 00:00:00 2001
From: Jarek Prokop <jprokop@redhat.com>
Date: Tue, 21 Jul 2026 10:32:29 +0200
Subject: [PATCH] Allow up to 1 send from exits YJIT stat for proc test.
Add an allowed range of 0..1 for exits send stat.
In some case, the stats contain extra stat under 'exits' for 'send'.
In any other case, the stat is 0, and test passes.
From RPM build of Ruby for Fedora distro family, the exits' stats emit 1 extra send.
The commit that introduced fix and the offending test
0cba8cf414dfd8ab30edc3081645405c165a81d5 for [Bug #21266]
prevents a crash, which seems prevented here as well.
---
test/ruby/test_yjit.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/ruby/test_yjit.rb b/test/ruby/test_yjit.rb
index 0d40d38872..df1b41aa16 100644
--- a/test/ruby/test_yjit.rb
+++ b/test/ruby/test_yjit.rb
@@ -1528,7 +1528,7 @@ def test_disable_stats
def test_proc_block_with_kwrest
# When the bug was present this required --yjit-stats to trigger.
- assert_compiles(<<~RUBY, result: {extra: 5})
+ assert_compiles(<<~RUBY, result: {extra: 5}, exits: {send: 0..1})
def foo = bar(w: 1, x: 2, y: 3, z: 4, extra: 5, &proc { _1 })
def bar(w:, x:, y:, z:, **kwrest) = yield kwrest

View File

@ -293,6 +293,10 @@ Patch15: ruby-3.4.0-openssl-fix-test-provider-in-fips.patch
# Fix the tests using SHA-1 Probabilistic Signature Scheme (PSS) parameters.
# https://github.com/ruby/openssl/pull/879
Patch16: ruby-3.4.2-openssl-Fix-SHA-1-PSS-tests.patch
# Workaround for a weird failure that happens only during mockbuild of Ruby src.rpm
# Cannot reproduce sufficiently so far for the issue to appear outside that environment.
# See patch's commit message for more information.
Patch17: ruby-3.3.12-Allow-up-to-1-send-from-exits-YJIT-stat-for-proc-tes.patch
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%{?with_rubypick:Suggests: rubypick}
@ -776,6 +780,7 @@ analysis result in RBS format, a standard type description format for Ruby
%patch 13 -p1
%patch 15 -p1
%patch 16 -p1
%patch 17 -p1
# Provide an example of usage of the tapset:
cp -a %{SOURCE3} .