[#86520] [Ruby trunk Bug#14681] `syswrite': stream closed in another thread (IOError) — samuel@...
Issue #14681 has been reported by ioquatix (Samuel Williams).
3 messages
2018/04/12
[#86755] [Ruby trunk Feature#14723] [WIP] sleepy GC — normalperson@...
Issue #14723 has been reported by normalperson (Eric Wong).
6 messages
2018/04/29
[ruby-core:86536] [Ruby trunk Bug#14686] Windows - uninitialized constant Fiddle::Function::STDCALL, test issue
From:
Greg.mpls@...
Date:
2018-04-13 00:54:12 UTC
List:
ruby-core #86536
Issue #14686 has been reported by MSP-Greg (Greg L).
----------------------------------------
Bug #14686: Windows - uninitialized constant Fiddle::Function::STDCALL, test issue
https://bugs.ruby-lang.org/issues/14686
* Author: MSP-Greg (Greg L)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: ruby 2.6.0dev (2018-04-12 trunk 63140) [x64-mingw32]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
While testing the test/ruby folder with frozen-string, I came across a few issues. More later...
I had the following failures in test_rubyoptions.rb, which were due to output on stderr:
```
3) Failure:
TestRubyOptions#test_frozen_string_literal_debug [E:/GitHub/ruby/test/ruby/test_rubyoptions.rb:986]:
[["--disable=gems", "--enable-frozen-string-literal", "--debug"], "+\"foo\#{123}bar\" << \"bar\""].
1. [2/2] Assertion for "stderr"
| <[]> expected but was
| <["Exception `NameError' at C:/ruby26_64/lib/ruby/2.6.0/fiddle/import.rb:160 - uninitialized constant Fiddle::Function::STDCALL"]>.
4) Failure:
TestRubyOptions#test_debug [E:/GitHub/ruby/test/ruby/test_rubyoptions.rb:83]:
1. [2/2] Assertion for "stderr"
| <[]> expected but was
| <["Exception `NameError' at C:/ruby26_64/lib/ruby/2.6.0/fiddle/import.rb:160 - uninitialized constant Fiddle::Function::STDCALL"]>.
```
The code in questions is https://github.com/ruby/ruby/blob/trunk/ext/fiddle/lib/fiddle/import.rb#L158-L164, as follows:
```ruby
CALL_TYPE_TO_ABI = Hash.new { |h, k|
raise RuntimeError, "unsupported call type: #{k}"
}.merge({ :stdcall => (Function::STDCALL rescue Function::DEFAULT),
:cdecl => Function::DEFAULT,
nil => Function::DEFAULT
}).freeze
private_constant :CALL_TYPE_TO_ABI
```
Changing it to the following removed failures:
```ruby
CALL_TYPE_TO_ABI = Hash.new { |h, k|
raise RuntimeError, "unsupported call type: #{k}"
}.merge({ :stdcall => defined?(Function::STDCALL) ? Function::STDCALL :
Function::DEFAULT,
:cdecl => Function::DEFAULT,
nil => Function::DEFAULT
}).freeze
private_constant :CALL_TYPE_TO_ABI
```
I haven't worked much with Fiddle, but I checked for the existence of STDCALL in the listed ruby-loco build, the 2.5.1 RubyInstaller2 build, and a recent local vc14 trunk build. It did not exist in any of the three builds. Hence, I don't know if this is a correct fix...
Patch attached. Thanks, Greg
---Files--------------------------------
fiddle_import.rb.patch (666 Bytes)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>