ruby / ruby/drb

Failures in test suite running on TruffleRuby

Open
#38 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Ruby
Stars
226
Forks
28
Avg merge
7m
Merged PRs (30d)
1

Description

Many are similar to https://github.com/ruby/drb/issues/36.
I ran on truffleruby-dev: truffleruby 25.0.0-dev-fdf602f3, like ruby 3.3.7, GraalVM CE Native [x86_64-linux]

$ bundle exec rake
Loaded suite vendor/bundle/truffleruby/3.3.7.3/gems/rake-13.2.1/lib/rake/rake_test_loader
Started
E
==============================================================================================================================
Error: test_bug16634(DRbTests::TestBug16634): ArgumentError: wrong number of arguments (given 1, expected 0)
(druby://localhost:39385) test/drb/ut_drb.rb:151:in `keyword_test1'
(druby://localhost:39385) lib/drb/drb.rb:1713:in `perform_without_block'
(druby://localhost:39385) lib/drb/drb.rb:1669:in `perform'
(druby://localhost:39385) lib/drb/drb.rb:1758:in `block (2 levels) in main_loop'
(druby://localhost:39385) <internal:core> core/kernel.rb:417:in `loop'
(druby://localhost:39385) lib/drb/drb.rb:1754:in `block in main_loop'
test/drb/test_drb.rb:364:in `test_bug16634'
vendor/bundle/truffleruby/3.3.7.3/gems/test-unit-3.6.8/lib/test/unit/ui/console/testrunner.rb:324: warning: too many arguments for format string
     361:   end
     362: 
     363:   def test_bug16634
  => 364:     assert_equal(42, @there.keyword_test1(a: 42))
     365:     assert_equal("default", @there.keyword_test2)
     366:     assert_equal(42, @there.keyword_test2(b: 42))
     367:     assert_equal({:a=>42, :b=>42}, @there.keyword_test3(a: 42, b: 42))
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_05_break(DRbTests::TestDRbAry): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
test/drb/drbtest.rb:366:in `test_05_break'
     363: 
     364:   def test_05_break
     365:     ary = []
  => 366:     @there.each do |x|
     367:       ary.push x
     368:       break if x == 4
     369:     end
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_07_break_18(DRbTests::TestDRbAry): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
(eval):3:in `test_07_break_18'
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
F
==============================================================================================================================
Failure: test_02_unknown(DRbTests::TestDRbCore)
test/drb/drbtest.rb:177:in `test_02_unknown'
     174: 
     175:     obj = @there.unknown_module
     176:     assert_kind_of(DRb::DRbUnknown, obj)
  => 177:     assert_equal('DRbTests::DRbEx::', obj.name)
     178: 
     179:     assert_raise(DRb::DRbUnknownError) do
     180:       @there.unknown_error
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
<"DRbTests::DRbEx::"> expected but was
<"DRbTests::DRbEx::FooBar">

diff:
? DRbTests::DRbEx::FooBar
==============================================================================================================================
F
==============================================================================================================================
Failure: test_06_timeout(DRbTests::TestDRbCore): [Timeout::Error] exception expected, not #<DRb::DRbConnError: execution expired>.
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:454:in `block in assert_raise'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:540:in `assert'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:453:in `assert_raise'
test/drb/drbtest.rb:224:in `block in test_06_timeout'
     221:     omit if defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # expecting a certain delay is difficult for --jit-wait CI
     222:     Timeout.timeout(60) do
     223:       ten = Onecky.new(10)
  => 224:       assert_raise(Timeout::Error) do
     225:         @there.do_timeout(ten)
     226:       end
     227:       assert_raise(Timeout::Error) do
/home/eregon/.rubies/truffleruby-dev/lib/truffle/timeout.rb:165:in `timeout'
test/drb/drbtest.rb:222:in `test_06_timeout'
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
F
==============================================================================================================================
Failure: test_11_remote_no_method_error(DRbTests::TestDRbCore): [DRb::DRbRemoteError] exception expected, not #<NoMethodError: undefined method `invoke_no_method' for an instance of DRbTests::DRbEx>.
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:454:in `block in assert_raise'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:540:in `assert'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:453:in `assert_raise'
test/drb/drbtest.rb:313:in `test_11_remote_no_method_error'
     310:   end
     311: 
     312:   def test_11_remote_no_method_error
  => 313:     assert_raise(DRb::DRbRemoteError) do
     314:       @there.remote_no_method_error
     315:     end
     316:     begin
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_03_large_ary(DRbTests::TestDRbLarge): TypeError: allocator undefined for Thread
(druby://localhost:33881) <internal:core> core/marshal.rb:1386:in `__allocate__'
(druby://localhost:33881) <internal:core> core/marshal.rb:1386:in `allocate'
(druby://localhost:33881) <internal:core> core/marshal.rb:1386:in `construct_object'
(druby://localhost:33881) <internal:core> core/marshal.rb:721:in `construct'
(druby://localhost:33881) <internal:core> core/marshal.rb:828:in `block in construct_array'
(druby://localhost:33881) <internal:core> core/integer.rb:157:in `times'
(druby://localhost:33881) <internal:core> core/marshal.rb:827:in `construct_array'
(druby://localhost:33881) <internal:core> core/marshal.rb:713:in `construct'
(druby://localhost:33881) <internal:core> core/marshal.rb:1532:in `load'
(druby://localhost:33881) lib/drb/drb.rb:626:in `block in load'
(druby://localhost:33881) lib/drb/drb.rb:624:in `synchronize'
(druby://localhost:33881) lib/drb/drb.rb:624:in `load'
(druby://localhost:33881) lib/drb/drb.rb:655:in `block in recv_request'
(druby://localhost:33881) <internal:core> core/integer.rb:157:in `times'
(druby://localhost:33881) lib/drb/drb.rb:654:in `recv_request'
(druby://localhost:33881) lib/drb/drb.rb:960:in `recv_request'
(druby://localhost:33881) lib/drb/drb.rb:1688:in `init_with_client'
(druby://localhost:33881) lib/drb/drb.rb:1700:in `setup_message'
(druby://localhost:33881) lib/drb/drb.rb:1660:in `perform'
(druby://localhost:33881) lib/drb/drb.rb:1758:in `block (2 levels) in main_loop'
(druby://localhost:33881) <internal:core> core/kernel.rb:417:in `loop'
(druby://localhost:33881) lib/drb/drb.rb:1754:in `block in main_loop'
test/drb/test_drb.rb:251:in `test_03_large_ary'
     248: 
     249:   def test_03_large_ary
     250:     ary = [Thread.current] * 10240
  => 251:     assert_equal(10240, @there.size(ary))
     252:   end
     253: 
     254:   def test_04_many_arg
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_05_break(DRbTests::TestDRbSSLAry): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
test/drb/drbtest.rb:366:in `test_05_break'
     363: 
     364:   def test_05_break
     365:     ary = []
  => 366:     @there.each do |x|
     367:       ary.push x
     368:       break if x == 4
     369:     end
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_07_break_18(DRbTests::TestDRbSSLAry): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
(eval):3:in `test_07_break_18'
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
F
==============================================================================================================================
Failure: test_06_timeout(DRbTests::TestDRbSSLCore): [Timeout::Error] exception expected, not #<DRb::DRbConnError: execution expired>.
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:454:in `block in assert_raise'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:540:in `assert'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:453:in `assert_raise'
test/drb/drbtest.rb:224:in `block in test_06_timeout'
     221:     omit if defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # expecting a certain delay is difficult for --jit-wait CI
     222:     Timeout.timeout(60) do
     223:       ten = Onecky.new(10)
  => 224:       assert_raise(Timeout::Error) do
     225:         @there.do_timeout(ten)
     226:       end
     227:       assert_raise(Timeout::Error) do
/home/eregon/.rubies/truffleruby-dev/lib/truffle/timeout.rb:165:in `timeout'
test/drb/drbtest.rb:222:in `test_06_timeout'
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
F
==============================================================================================================================
Failure: test_11_remote_no_method_error(DRbTests::TestDRbSSLCore): [DRb::DRbRemoteError] exception expected, not #<NoMethodError: undefined method `invoke_no_method' for an instance of DRbTests::DRbEx>.
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:454:in `block in assert_raise'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:540:in `assert'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:453:in `assert_raise'
test/drb/drbtest.rb:313:in `test_11_remote_no_method_error'
     310:   end
     311: 
     312:   def test_11_remote_no_method_error
  => 313:     assert_raise(DRb::DRbRemoteError) do
     314:       @there.remote_no_method_error
     315:     end
     316:     begin
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_05_break(DRbTests::TestDRbSafe1): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
test/drb/drbtest.rb:366:in `test_05_break'
     363: 
     364:   def test_05_break
     365:     ary = []
  => 366:     @there.each do |x|
     367:       ary.push x
     368:       break if x == 4
     369:     end
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_07_break_18(DRbTests::TestDRbSafe1): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
(eval):3:in `test_07_break_18'
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_05_break(DRbTests::TestDRbUNIXAry): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
test/drb/drbtest.rb:366:in `test_05_break'
     363: 
     364:   def test_05_break
     365:     ary = []
  => 366:     @there.each do |x|
     367:       ary.push x
     368:       break if x == 4
     369:     end
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_07_break_18(DRbTests::TestDRbUNIXAry): DRb::DRbConnError: connection closed
lib/drb/drb.rb:613:in `load'
lib/drb/drb.rb:668:in `recv_reply'
lib/drb/drb.rb:970:in `recv_reply'
lib/drb/drb.rb:1353:in `send_message'
lib/drb/drb.rb:1172:in `block (2 levels) in method_missing'
lib/drb/drb.rb:1331:in `open'
lib/drb/drb.rb:1171:in `block in method_missing'
lib/drb/drb.rb:1190:in `with_friend'
lib/drb/drb.rb:1170:in `method_missing'
(eval):3:in `test_07_break_18'
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
F
==============================================================================================================================
Failure: test_06_timeout(DRbTests::TestDRbUNIXCore): [Timeout::Error] exception expected, not #<DRb::DRbConnError: execution expired>.
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:454:in `block in assert_raise'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:540:in `assert'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:453:in `assert_raise'
test/drb/drbtest.rb:224:in `block in test_06_timeout'
     221:     omit if defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # expecting a certain delay is difficult for --jit-wait CI
     222:     Timeout.timeout(60) do
     223:       ten = Onecky.new(10)
  => 224:       assert_raise(Timeout::Error) do
     225:         @there.do_timeout(ten)
     226:       end
     227:       assert_raise(Timeout::Error) do
/home/eregon/.rubies/truffleruby-dev/lib/truffle/timeout.rb:165:in `timeout'
test/drb/drbtest.rb:222:in `test_06_timeout'
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
F
==============================================================================================================================
Failure: test_11_remote_no_method_error(DRbTests::TestDRbUNIXCore): [DRb::DRbRemoteError] exception expected, not #<NoMethodError: undefined method `invoke_no_method' for an instance of DRbTests::DRbEx>.
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:454:in `block in assert_raise'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:540:in `assert'
vendor/bundle/truffleruby/3.3.7.3/bundler/gems/test-unit-ruby-core-04bbdf8d1f83/lib/core_assertions.rb:453:in `assert_raise'
test/drb/drbtest.rb:313:in `test_11_remote_no_method_error'
     310:   end
     311: 
     312:   def test_11_remote_no_method_error
  => 313:     assert_raise(DRb::DRbRemoteError) do
     314:       @there.remote_no_method_error
     315:     end
     316:     begin
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
E
==============================================================================================================================
Error: test_DRbObject_id_dereference(TestDRbObjectTimerIdConv): ArgumentError: wrong number of arguments (given 1, expected 2)
lib/drb/timeridconv.rb:65:in `define_finalizer'
lib/drb/timeridconv.rb:65:in `on_gc'
lib/drb/timeridconv.rb:58:in `invoke_keeper'
lib/drb/timeridconv.rb:35:in `block in add'
/home/eregon/.rubies/truffleruby-dev/lib/mri/monitor.rb:215:in `mon_synchronize'
lib/drb/timeridconv.rb:31:in `add'
lib/drb/timeridconv.rb:92:in `to_id'
lib/drb/drb.rb:1563:in `to_id'
lib/drb/drb.rb:1889:in `to_id'
lib/drb/drb.rb:1133:in `initialize'
test/drb/test_drbobject.rb:20:in `drb_eq'
test/drb/test_drbobject.rb:25:in `test_DRbObject_id_dereference'
     22:   end
     23: 
     24:   def test_DRbObject_id_dereference
  => 25:     drb_eq(Foo.new)
     26:     drb_eq(Foo)
     27:     drb_eq(File)
     28:     drb_eq(Enumerable)
<internal:core> core/throw_catch.rb:36:in `catch'
<internal:core> core/throw_catch.rb:36:in `catch'
==============================================================================================================================
Finished in 143.951986199 seconds.
------------------------------------------------------------------------------------------------------------------------------
122 tests, 511 assertions, 7 failures, 11 errors, 0 pendings, 0 omissions, 0 notifications
85.2459% passed

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Run bundle exec rake under the reported TruffleRuby version and reproduce the failures. Review the referenced tests in test/drb/test_drb.rb and test/drb/drbtest.rb, then trace the reported paths through lib/drb/drb.rb. Done means the TruffleRuby test suite no longer reports these failures or errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
distributed-systems, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.