Actions
Bug #19781
closedStack consistency error with tailcall and YJIT enabled
Description
src = <<-EOS
def apply_one_and_two(&block)
[1, p(1)]
end
def add_one_and_two
apply_one_and_two(&:+)
end
EOS
RubyVM::InstructionSequence.new(
"proc {|_|_.class_eval {#{src}}}",
__FILE__, __FILE__, 1,
tailcall_optimization: true,
trace_instruction: false,
).eval[self.singleton_class]
def entry
add_one_and_two
end
entry
This script causes "Stack consistency error" with ruby --yjit-call-threshold=1
on any YJIT-enabled build (3.1, 3.2, and master).
Updated by k0kubun (Takashi Kokubun) over 1 year ago
- Related to Feature #19780: Remove tailcall_optimization support added
Updated by k0kubun (Takashi Kokubun) over 1 year ago
- Status changed from Open to Closed
Applied in changeset git|e1104017e3080fd432c0b5fdc3ae6e004ffd0834.
YJIT: Fix cfp inconsistency on tailcall (#8107)
[Bug #19781]
Updated by nagachika (Tomoyuki Chikanaga) 4 months ago
- Backport changed from 3.0: DONTNEED, 3.1: REQUIRED, 3.2: REQUIRED to 3.0: DONTNEED, 3.1: REQUIRED, 3.2: DONE
ruby_3_2 2ac8e2049bad37da38576b1ed263713c66eba2c9 merged revision(s) e1104017e3080fd432c0b5fdc3ae6e004ffd0834.
Actions
Like0
Like0Like0Like0