From: "ioquatix (Samuel Williams) via ruby-core" Date: 2022-12-17T23:44:59+00:00 Subject: [ruby-core:111325] [Ruby master Bug#13298] mingw SEGV TestEnumerable#test_callcc Issue #13298 has been updated by ioquatix (Samuel Williams). I also found that the `if (0)` is required in Ruby 3.2 in order to build locally in the Ruby Installler Dev Kit otherwise it crashes as indicated. ---------------------------------------- Bug #13298: mingw SEGV TestEnumerable#test_callcc https://bugs.ruby-lang.org/issues/13298#change-100702 * 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/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/