From: elkenny@... Date: 2017-01-08T02:11:49+00:00 Subject: [ruby-core:79010] [Ruby trunk Bug#13107] def_delegators causes random errors in MRI 2.4.0 Issue #13107 has been updated by Eugene Kenny. File 0001-forwardable.rb-use-public_send-to-call-method.patch added The `mongo` gem is also affected by this bug (https://jira.mongodb.org/browse/RUBY-1191). Running the tests in the `spec/mongo/grid/stream/read_spec.rb` file reliably reproduces it. I bisected the changes to forwardable.rb between v2.3.0 and v2.4.0, and determined that the bug was introduced in r55376. I've attached a patch that fixes the problem, although it effectively reverts the optimisation from r55376, so there may be a performance impact. ---------------------------------------- Bug #13107: def_delegators causes random errors in MRI 2.4.0 https://bugs.ruby-lang.org/issues/13107#change-62419 * Author: Thomas Walpole * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- In the Capybara project we use the rack_test gem which uses def_delegators to forward last_reponse to @rack_mock_session - https://github.com/brynary/rack-test/blob/master/lib/rack/test.rb#L29 When running the Capybara test test suite calling last_reponse on a rack_test Session object will sporadically result in a TypeError from forwardable.rb TypeError: wrong argument type Integer (expected Proc) Patching around the delegator with class Rack::Test::Session def last_response @rack_mock_session.last_response end end stops the error from occurring, so it appears that something def_delegators is doing is causing problems. Unfortunately I have not yet been able to establish exactly what causes the issues to produce a simple test case. ---Files-------------------------------- 0001-forwardable.rb-use-public_send-to-call-method.patch (789 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: