From: jean.boussier@... Date: 2021-03-24T12:08:42+00:00 Subject: [ruby-core:102991] [Ruby master Bug#17581] Ruby 3.0 backtrace sometimes returns empty array Issue #17581 has been updated by byroot (Jean Boussier). @jeremyevans I'm not sure this was properly fixed: ```ruby def label p caller.first end def label_caller label end p RUBY_VERSION puts 'raw call' label_caller puts 'call from group_by' [1].group_by { label_caller } ``` 2.7.2: ``` "2.7.2" raw call "/tmp/caller_locations.rb:6:in `label_caller'" call from group_by "/tmp/caller_locations.rb:6:in `label_caller'" ``` `ruby_3_0` branch (and `master` I presume): ``` "3.0.0" raw call "/tmp/caller_locations.rb:6:in `label_caller'" call from group_by "/tmp/caller_locations.rb:2:in `label'" ``` ---------------------------------------- Bug #17581: Ruby 3.0 backtrace sometimes returns empty array https://bugs.ruby-lang.org/issues/17581#change-91055 * Author: HParker (Adam Hess) * Status: Closed * Priority: Normal * Assignee: jeremyevans0 (Jeremy Evans) * ruby -v: ruby 3.0.0dev (2020-09-04T16:41:35Z master de30450d91) [x86_64-darwin19] * Backport: 2.5: DONTNEED, 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONE ---------------------------------------- ```ruby class Foo def bar p caller(1,1) end end [Foo.new].group_by(&:bar) ``` 3.0: [] 2.7: ["test2.rb:6:in `each'"] A similar thing happens when asking for a larger part of the backtrace: ```ruby class Foo def bar p caller(0,4) end end [Foo.new].group_by(&:bar) ``` 3.0: ["test2.rb:3:in `bar'", "test2.rb:6:in `each'", "test2.rb:6:in `group_by'"] 2.7: ["test2.rb:3:in `bar'", "test2.rb:6:in `each'", "test2.rb:6:in `group_by'", "test2.rb:6:in `
'"] I suspect it was introduced by: https://github.com/ruby/ruby/commit/3b24b7914c16930bfadc89d6aff6326a51c54295 Since it seems to have to do with which frames are returned, though I haven't verified since the commit is difficult to revert. -- https://bugs.ruby-lang.org/ Unsubscribe: