Bug #19299
closedYJIT panicked while holding VM lock acquired at ./yjit/src/core.rs:1693. Aborting...
Description
Attached is the backtrace.
The code is a moderately complex view with partials and translations. The panic happens specifically when i call a translation t('...')
but if i simplify the view code around that call the panic goes away. I'm trying to create a simplified way to recreate it without giving you the full application.
I'll keep trying, unless the backtrace is enough.
Files
Updated by alanwu (Alan Wu) about 2 years ago
Thank you for the report! I was able to reproduce the issue
with the logs you posted, so no worries about reducing your app.
It happens with yield
and a block with a lot of local variables
and it should be specific to ARM:
def foo
yield
end
30.times do
foo do
a1=a2=a3=a4=a5=a6=a7=a8=a9=a10=a11=a12=a13=a14=a15=a16=a17=a18=a19=a20=a21=a22=a23=a24=a25=a26=a27=a28=a29=a30 = 0
end
end
I submitted a PR to fix this issue.
Updated by k0kubun (Takashi Kokubun) about 2 years ago
- Backport changed from 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN to 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED, 3.2: REQUIRED
Updated by alanwu (Alan Wu) about 2 years ago
- Status changed from Open to Closed
Applied in changeset git|43ff0c2c488c80aaf83b486d45bcd4a92ebe3848.
YJIT: Fix yield
into block with >=30 locals on ARM
It's a register spill issue. Fix by moving the Qnil fill snippet to
after registers are released.
[Bug #19299]
Updated by naruse (Yui NARUSE) about 2 years ago
- Backport changed from 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED, 3.2: REQUIRED to 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED, 3.2: DONE
ruby_3_2 97c32b49e2fe4de8b57ce05146e63b2aa64c7a44 merged revision(s) 43ff0c2c488c80aaf83b486d45bcd4a92ebe3848.