[#104307] Float truncate — Eustáquio Rangel <eustaquiorangel@...>
Hi!
4 messages
2021/06/16
[ruby-core:104159] [Ruby master Bug#13298] mingw SEGV TestEnumerable#test_callcc
From:
xtkoba+ruby@...
Date:
2021-06-04 03:41:31 UTC
List:
ruby-core #104159
Issue #13298 has been updated by xtkoba (Tee KOBAYASHI).
Note that there are two related issues, for which the solutions conflict with each other:
* #9710: no __builtin_setjmp on x64-mingw
* #15348: use __builtin_setjmp on mingw64
----------------------------------------
Bug #13298: mingw SEGV TestEnumerable#test_callcc
https://bugs.ruby-lang.org/issues/13298#change-92334
* Author: MSP-Greg (Greg L)
* Status: Assigned
* Priority: Normal
* Assignee: nobu (Nobuyoshi Nakada)
* ruby -v: ruby 2.5.0dev (2017-03-09 trunk 57821) [x64-mingw32]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
First week in January, when I first started building, I had a SEGV in test-all occurring in TestEnumerable#test_callcc. I patched around it, but decided it was time to see if I could find a solution.
The issue occurs in [test/ruby/test_enum.rb:559-570](https://github.com/ruby/ruby/blob/d6873af4bdc99914f20f6184966fa840c91bdf10/test/ruby/test_enum.rb#L559-L570). Below is the code:
```ruby
assert_raise(RuntimeError) do
c = nil
o = Object.new
class << o; self; end.class_eval do
define_method(:<=>) do |x|
callcc {|c2| c ||= c2 }
0
end
end
[o, o].sort_by {|x| x }
c.call
end
```
While trying to determine the problem in a separate test environment, I stumbled across an odd solution.
Add the line `c.to_s` immediately before the `c.call` line. My system no longer stops.
I'd be happy to do a PR, but I can only test on Windows.
Two questions --
1. Might all of tests that involve `callcc` or `Continuation` be moved into another test file? Since it is considered 'obsolete'... I'd be happy to do.
2. Rather odd that this fixes the issue. Any ideas?
```diff
--- test/ruby/test_enum.rb.orig Thu Mar 09 07:54:37 2017
+++ test/ruby/test_enum.rb Thu Mar 09 11:39:07 2017
@@ -568,2 +568,3 @@
[o, o].sort_by {|x| x }
+ c.to_s
c.call
```
---Files--------------------------------
test_enum_559.txt (10.6 KB)
x64-mingw32-callcc-test.rb (434 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>