Project

General

Profile

Bug #16759

MinGW 2.5 - SEGV bug with Binding#local_variable_set

Added by MSP-Greg (Greg L) 8 months ago. Updated 5 months ago.

Status:
Open
Priority:
Normal
Target version:
-
ruby -v:
Ruby MinGW 2.5
[ruby-core:97724]

Description

A failure with MinGW 2.5.8 appeared in ruby/spec CI from the below in core/binding/local_variable_set_spec.rb. I believe the specs passed on 2.5.7:

it "raises a NameError on global access" do
  bind = binding
  -> { bind.local_variable_set(:$0, "") }.should raise_error(NameError)
end

it "raises a NameError on special variable access" do
  bind = binding
  -> { bind.local_variable_set(:$~, "") }.should raise_error(NameError)
  -> { bind.local_variable_set(:$_, "") }.should raise_error(NameError)
end

Working locally, the below code failed on both 2.5.7 and 2.5.8, but passed on mswin head & MinGW 2.6 thru head:

[:$0, :$~, :$_].each do |v|
  a = -> (bind) do
    bind.local_variable_set(v, '')
  end
  begin
    a[binding]
  rescue => e
    puts "#{v}  #{e.class}"
  end

I checked other uses, see https://github.com/MSP-Greg/ruby-testing/blob/master/binding-local-variable.rb. I ran the file in Actions CI on both Ubuntu & Windows, see the 'binding issue' step on any job at:
https://github.com/MSP-Greg/ruby-testing/actions/runs/71232731

Also available in: Atom PDF