Issue #13298 has been updated by Greg L.

File test_enum_559.txt added

Added SEGV log.

Also, listed method calls sort with two items, and faults.  Next call does the same with three items.  No error.  Hence,

3. Any ideas?

----------------------------------------
Bug #13298: mingw SEGV TestEnumerable#test_callcc
https://bugs.ruby-lang.org/issues/13298#change-63405

* Author: Greg L
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* 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)


-- 
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>