Skip to content

[3.4] Backport PR#13360 to 3.4 branch#14573

Merged
k0kubun merged 2 commits intoruby:ruby_3_4from
Shopify:rwstauner/ruby_3_4_it-iseq-dump2
Sep 16, 2025
Merged

[3.4] Backport PR#13360 to 3.4 branch#14573
k0kubun merged 2 commits intoruby:ruby_3_4from
Shopify:rwstauner/ruby_3_4_it-iseq-dump2

Conversation

@rwstauner
Copy link
Contributor

@rwstauner rwstauner commented Sep 16, 2025

Original bug with no backports: https://bugs.ruby-lang.org/issues/21313
Original PR: #13360

This backport fixes the bug that this backport PR was attempting to address.

The following is crashing for me:

```shell
ruby --yjit --yjit-call-threshold=1 -e '1.tap { raise rescue p it }'

ruby: YJIT has panicked. More info to follow...
thread '<unnamed>' panicked at ./yjit/src/codegen.rs:2402:14:
...
```

It seems `it` sometimes points to the wrong value:

```shell
ruby -e '1.tap { raise rescue p it }'
false

ruby -e '1.tap { begin; raise; ensure; p it; end } rescue nil'
false
```

But only when `$!` is set:

```shell
ruby -e '1.tap { begin; nil; ensure; p it; end }'
1

ruby -e '1.tap { begin; nil; rescue; ensure; p it; end }'
1

ruby -e '1.tap { begin; raise; rescue; ensure; p it; end }'
1
```
@rwstauner rwstauner requested a review from k0kubun as a code owner September 16, 2025 19:47
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
@rwstauner rwstauner changed the title Backport PR#13360 to 3.4 branch [3.4] Backport PR#13360 to 3.4 branch Sep 16, 2025
@k0kubun k0kubun merged commit b5346f2 into ruby:ruby_3_4 Sep 16, 2025
75 checks passed
@k0kubun k0kubun deleted the rwstauner/ruby_3_4_it-iseq-dump2 branch September 16, 2025 20:36
@hsbt hsbt added the Backport label Dec 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants