| "git clone --depth 1 https://github.com/ruby/ruby.git trunk-gc-asserts" exit with 0. |
| Cloning into 'trunk-gc-asserts'... |
| Updating files: 72% (8114/11201) |
| "./autogen.sh" exit with 0. |
| "autoconf" exit with 0. |
| "/tmp/ruby/src/trunk-gc-asserts/configure --prefix=/tmp/ruby/install/trunk-gc-asserts --disable-install-doc --enable-shared" exit with 0. |
| configure: WARNING: something wrong with CXXFLAGS="" |
| "make update-download DEFS=\"-DRGENGC_CHECK_MODE=2\"" exit with 0. |
| Cloning into '/tmp/ruby/src/trunk-gc-asserts/gems/src/power_assert'... |
| From https://github.com/ruby/power_assert |
| * branch a7dab941153b233d3412e249d25da52a6c5691de -> FETCH_HEAD |
| HEAD is now at a7dab94 Merge pull request #56 from k-tsj/fix-failures-on-head |
| Cloning into '/tmp/ruby/src/trunk-gc-asserts/gems/src/matrix'... |
| Cloning into '/tmp/ruby/src/trunk-gc-asserts/gems/src/prime'... |
| Cloning into '/tmp/ruby/src/trunk-gc-asserts/gems/src/debug'... |
| From https://github.com/ruby/debug |
| * branch cf469f2b21710727abdd153b25a1e5123b002bb0 -> FETCH_HEAD |
| HEAD is now at cf469f2 The debug gem can abort when stepping into a rescue clause: |
| Cloning into '/tmp/ruby/src/trunk-gc-asserts/gems/src/repl_type_completor'... |
| Cloning into '/tmp/ruby/src/trunk-gc-asserts/gems/src/ostruct'... |
| From https://github.com/ruby/ostruct |
| * branch 50d51248bec5560a102a1024aff4174b31dca8cc -> FETCH_HEAD |
| HEAD is now at 50d5124 Use `Ractor#value` as `Ractor#take` is removed |
| "make update-src DEFS=\"-DRGENGC_CHECK_MODE=2\"" exit with 0. |
| "make after-update DEFS=\"-DRGENGC_CHECK_MODE=2\"" exit with 0. |
| + cp /tmp/ruby/src/trunk-gc-asserts/enc/jis/props.h.blt /tmp/ruby/src/trunk-gc-asserts/enc/jis/props.h |
| "make miniruby DEFS=\"-DRGENGC_CHECK_MODE=2\"" exit with 0. |
| /tmp/ruby/src/trunk-gc-asserts/variable.c: In function ‘iterate_over_shapes_with_callback’: |
| /tmp/ruby/src/trunk-gc-asserts/variable.c:2244:1: warning: control reaches end of non-void function [-Wreturn-type] |
| 2244 | } |
| | ^ |
| At top level: |
| cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics |
| cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics |
| cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics |
| "make ruby DEFS=\"-DRGENGC_CHECK_MODE=2\"" exit with 0. |
| "make all DEFS=\"-DRGENGC_CHECK_MODE=2\"" exit with 0. |
| /tmp/ruby/src/trunk-gc-asserts/.bundle/gems/rbs-3.9.4/ext/rbs_extension/main.c: In function ‘Init_rbs_extension’: |
| /tmp/ruby/src/trunk-gc-asserts/.bundle/gems/rbs-3.9.4/ext/rbs_extension/main.c:24:3: warning: multi-line comment [-Wcomment] |
| 24 | // grep -o 'INTERN("\([^"]*\)")' ext/rbs_extension/parser.c \ |
| | ^ |
| At top level: |
| cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics |
| cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics |
| cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics |
| "make install DEFS=\"-DRGENGC_CHECK_MODE=2\"" exit with 0. |
| "make yes-btest TESTOPTS='-q -j4'" exit with 512. |
| FFFFFFFFFFFFFFFFFF#1285 test_ractor.rb:138: |
| n = 3 |
| n.times.map{ |
| Ractor.new{ |
| 10_000.times{ rand.to_s } |
| :ok |
| } |
| }.map(&:value) |
| #=> nil (expected "[:ok, :ok, :ok]") |
| #1290 test_ractor.rb:210: |
| def test n |
| rs = (1..n).map do |i| |
| Ractor.new(i) do |i| |
| "r#{i}" |
| end |
| end |
| as = [] |
| all_rs = rs.dup |
| |
| n.times{ |
| r, obj = Ractor.select(*rs) |
| as << [r, obj] |
| rs.delete(r) |
| } |
| |
| if as.map{|r, o| r.object_id}.sort == all_rs.map{|r| r.object_id}.sort && |
| as.map{|r, o| o}.sort == (1..n).map{|i| "r#{i}"}.sort |
| 'ok' |
| else |
| 'ng' |
| end |
| (...snip) |
| #=> nil (expected "[\"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\", \"ok\"]") |
| #1305 test_ractor.rb:490: |
| class C |
| def initialize freeze |
| @a = 1 |
| @b = :sym |
| @c = 'frozen_str' |
| @c.freeze if freeze |
| @d = true |
| end |
| end |
| |
| def check obj1 |
| obj2 = Ractor.new obj1 do |obj| |
| obj |
| end.value |
| |
| obj1.object_id == obj2.object_id |
| end |
| |
| results = [] |
| results << check(C.new(true)) # false |
| results << check(C.new(true).freeze) # true |
| (...snip) |
| #=> nil (expected "[false, true, false]") |
| #1322 test_ractor.rb:807: |
| class C |
| @int = 1 |
| @str = '-1000'.dup |
| @fstr = '100'.freeze |
| |
| def self.int = @int |
| def self.str = @str |
| def self.fstr = @fstr |
| end |
| |
| module M |
| @int = 2 |
| @str = '-2000'.dup |
| @fstr = '200'.freeze |
| |
| def self.int = @int |
| def self.str = @str |
| def self.fstr = @fstr |
| end |
| |
| a = Ractor.new{ C.int }.value |
| (...snip) |
| #=> nil (expected "333") |
| #1332 test_ractor.rb:990: |
| counts = [] |
| counts << Ractor.count |
| ractors = (1..3).map { Ractor.new { Ractor.receive } } |
| counts << Ractor.count |
| |
| ractors[0].send('End 0').join |
| sleep 0.1 until ractors[0].inspect =~ /terminated/ |
| counts << Ractor.count |
| |
| ractors[1].send('End 1').join |
| sleep 0.1 until ractors[1].inspect =~ /terminated/ |
| counts << Ractor.count |
| |
| ractors[2].send('End 2').join |
| sleep 0.1 until ractors[2].inspect =~ /terminated/ |
| counts << Ractor.count |
| |
| counts.inspect |
| #=> nil (expected "[1, 4, 3, 2, 1]") |
| #1352 test_ractor.rb:1317: |
| N = 1_000 |
| Ractor.new{ |
| a = [] |
| 1_000.times.map{|i| |
| Thread.new(i){|i| |
| Thread.pass if i < N |
| a << Ractor.store_if_absent(:i){ i } |
| a << Ractor.current[:i] |
| } |
| }.each(&:join) |
| a.uniq.size |
| }.value |
| #=> nil (expected "1") |
| #1354 test_ractor.rb:1357: |
| N = 100000 |
| 2.times.map{ |
| Ractor.new{ |
| N.times{|i| -(i.to_s)} |
| } |
| }.map{|r| r.value}.join |
| #=> nil (expected "100000100000") |
| #1355 test_ractor.rb:1366: |
| N = 100000 |
| a, b = 2.times.map{ |
| Ractor.new{ |
| N.times.map{|i| -(i.to_s)} |
| } |
| }.map{|r| r.value} |
| N.times do |i| |
| unless a[i].equal?(b[i]) |
| raise [a[i], b[i]].inspect |
| end |
| end |
| :ok |
| #=> nil (expected "ok") |
| #1356 test_ractor.rb:1383: |
| 2.times.map{ |
| Ractor.new do |
| 50000.times do |
| obj = +'' |
| obj.instance_variable_set("@a", 1) |
| obj.instance_variable_set("@b", 1) |
| obj.instance_variable_set("@c", 1) |
| obj.instance_variable_defined?("@a") |
| end |
| end |
| }.map{|r| r.value}.join |
| #=> nil (expected "5000050000") |
| #1358 test_ractor.rb:1411: |
| GC.disable |
| Ractor.new {} |
| raise "not ok" unless GC.disable |
| |
| foo = [] |
| 10.times { foo << 1 } |
| |
| GC.start |
| |
| 'ok' |
| #=> nil (expected "ok") |
| #1359 test_ractor.rb:1425: |
| port = Ractor::Port.new |
| workers = (0...8).map do |
| Ractor.new port do |port| |
| loop do |
| 10_000.times.map { Object.new } |
| port << Time.now |
| end |
| end |
| end |
| |
| 1_000.times { port.receive } |
| "ok" |
| #=> nil (expected "ok") |
| #1365 test_ractor.rb:1517: |
| class C1; def self.foo = 1; end |
| class C2; def self.foo = 2; end |
| class C3; def self.foo = 3; end |
| class C4; def self.foo = 5; end |
| class C5; def self.foo = 7; end |
| class C6; def self.foo = 11; end |
| class C7; def self.foo = 13; end |
| class C8; def self.foo = 17; end |
| |
| LN = 10_000 |
| RN = 10 |
| CS = [C1, C2, C3, C4, C5, C6, C7, C8] |
| rs = RN.times.map{|i| |
| Ractor.new(CS.shuffle){|cs| |
| LN.times.sum{ |
| cs.inject(1){|r, c| r * c.foo} # c.foo invalidates method cache entry |
| } |
| } |
| } |
| |
| n = CS.inject(1){|r, c| r * c.foo} * LN |
| (...snip) |
| #=> nil (expected "true") |
| #1367 test_ractor.rb:1550: |
| r = Ractor.new do |
| Ractor.receive |
| GC.start |
| :ok |
| end |
| |
| obj = begin |
| raise |
| rescue => e |
| e = Marshal.load(Marshal.dump(e)) |
| end |
| |
| r.send obj, move: true |
| r.value |
| #=> nil (expected "ok") |
| #1375 test_ractor.rb:1692: |
| Module.new do |
| def require feature |
| return Ractor._require(feature) unless Ractor.main? |
| super |
| end |
| Object.prepend self |
| set_temporary_name 'Ractor#require' |
| end |
| |
| Ractor.new{ |
| begin |
| require 'tempfile' |
| Tempfile.new |
| rescue SystemStackError |
| # prism parser with -O0 build consumes a lot of machine stack |
| Data.define(:fileno).new(1) |
| end |
| }.value.fileno > 0 |
| #=> nil (expected "true") |
| #1378 test_ractor.rb:1749: |
| autoload :Tempfile, 'tempfile' |
| |
| r = Ractor.new do |
| begin |
| Tempfile.new |
| rescue SystemStackError |
| # prism parser with -O0 build consumes a lot of machine stack |
| Data.define(:fileno).new(1) |
| end |
| end |
| r.value.fileno > 0 |
| #=> nil (expected "true") |
| #1380 test_ractor.rb:1779: |
| 2.times.map do |
| Ractor.new do |
| 1000.times do |
| Object.instance_method(:itself).bind_call(self) |
| end |
| end |
| end.each(&:join) |
| GC.start |
| :ok.itself |
| #=> nil (expected "ok") |
| #1396 test_ractor.rb:2049: |
| port = Ractor::Port.new |
| workers = (0...8).map do |
| Ractor.new port do |port| |
| loop do |
| 100.times.map { Class.new } |
| port << nil |
| end |
| end |
| end |
| |
| 100.times { port.receive } |
| |
| 'ok' |
| #=> nil (expected "ok") |
| #1406 test_ractor.rb:2192: |
| r = Ractor.new do |
| 'ok' |
| end |
| |
| RN = 10 |
| |
| rs = RN.times.map do |
| Ractor.new r do |r| |
| begin |
| Ractor.main << r.value |
| Ractor.main << r.value # this ractor can get same result |
| rescue Ractor::Error => e |
| Ractor.main << e.message |
| end |
| end |
| end |
| |
| (RN+1).times.map{ |
| Ractor.receive |
| }.tally.sort |
| #=> nil (expected "[[\"Only the successor ractor can take a value\", 9], [\"ok\", 2]]") |
| FAIL 18/2022 tests failed |
| make: *** [uncommon.mk:908: yes-btest] Error 1 |
| "make yes-test-basic TESTS='-j4'" exit with 0. |
| "make yes-test-all TESTOPTS='--stderr-on-failure' TESTS='-j4'" exit with 512. |
| 1) Error: |
| TestRactor#test_require_raises_and_no_ractor_belonging_issue: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 73701 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/ruby/test_ractor.rb:83:in 'TestRactor#test_require_raises_and_no_ractor_belonging_issue' |
| 2) Error: |
| RactorCompatibilityTest#test_variable_name_suggestion_works_in_ractor: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 56711 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/did_you_mean/test_ractor_compatibility.rb:100:in 'RactorCompatibilityTest#test_variable_name_suggestion_works_in_ractor' |
| 3) Error: |
| RactorCompatibilityTest#test_class_name_suggestion_works_in_ractor: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 68975 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/did_you_mean/test_ractor_compatibility.rb:7:in 'RactorCompatibilityTest#test_class_name_suggestion_works_in_ractor' |
| 4) Error: |
| RactorCompatibilityTest#test_pattern_key_name_suggestion_works_in_ractor: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 73715 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/did_you_mean/test_ractor_compatibility.rb:61:in 'RactorCompatibilityTest#test_pattern_key_name_suggestion_works_in_ractor' |
| 5) Error: |
| RactorCompatibilityTest#test_method_name_suggestion_works_in_ractor: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 73724 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/did_you_mean/test_ractor_compatibility.rb:43:in 'RactorCompatibilityTest#test_method_name_suggestion_works_in_ractor' |
| 6) Error: |
| TestTmpdir#test_ractor: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 394335 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/test_tmpdir.rb:136:in 'TestTmpdir#test_ractor' |
| 7) Error: |
| TestISeq#test_mandatory_only_redef: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 394650 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/ruby/test_iseq.rb:849:in 'TestISeq#test_mandatory_only_redef' |
| 8) Error: |
| TestEtc#test_ractor_parallel: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (6000.0 sec) |
| pid 63395 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/etc/test_etc.rb:180:in 'TestEtc#test_ractor_parallel' |
| 9) Error: |
| URI::TestCommon#test_ractor: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 395489 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/uri/test_common.rb:76:in 'URI::TestCommon#test_ractor' |
| 10) Error: |
| TestObjSpaceRactor#test_copy_finalizer: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 394930 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/objspace/test_ractor.rb:36:in 'TestObjSpaceRactor#test_copy_finalizer' |
| 11) Error: |
| TestObjSpaceRactor#test_undefine_finalizer: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 395499 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/objspace/test_ractor.rb:17:in 'TestObjSpaceRactor#test_undefine_finalizer' |
| 12) Error: |
| TestEnv#test_frozen_in_ractor: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (1000.0 sec) |
| pid 400860 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/ruby/test_env.rb:1378:in 'TestEnv#test_frozen_in_ractor' |
| 13) Error: |
| TestSocketAddrinfo#test_ractor_shareable: |
| Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (6000.0 sec) |
| pid 396501 killed by SIGABRT (signal 6) (core dumped) |
| | |
| /tmp/ruby/src/trunk-gc-asserts/test/socket/test_addrinfo.rb:364:in 'TestSocketAddrinfo#test_ractor_shareable' |
| make: *** [uncommon.mk:975: yes-test-all] Error 13 |
| "make yes-test-rubyspec MSPECOPT='--error-output stderr -j' TESTS='-j4'" exit with 0. |