👏

[Bug #21522] Ractor 内で意図せずスコープ外のローカル変数が参照できるバグ報告

に公開

[Bug #21522] Accessing outer locals via eval in a Ractor returns false

  • Ractor のブロック内からスコープ外のローカル変数を参照しようとするとエラーになる
foo = Object.new

Ractor.new {
  # error: can not isolate a Proc because it accesses outer variables (foo). (ArgumentError)
  p foo
}.take
  • しかし eval 経由で参照したときにエラーにならず false を返すというバグ報告
foo = Object.new

Ractor.new {
  # no error
  p eval("foo") # => false
}.take
  • 本来であればパースのタイミングでスコープ外かどうか判定しているが eval の場合だとそのあたりの判定ができない状態になっているとかなんですかね…?
  • 意図的に使わなければ発生しなさそうなバグではありますが対応するのは大変そう
GitHubで編集を提案

Discussion