👏
[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の場合だとそのあたりの判定ができない状態になっているとかなんですかね…? - 意図的に使わなければ発生しなさそうなバグではありますが対応するのは大変そう
Discussion