Actions
Bug #18646
closedInconsistent behavior for the targeted TracePoints in ruby 2.6-2.7 and 3+
Description
Ruby 2.6 introduced the API for targeted tracepoints.
But for some reason, before ruby 3.0, tracepoints looks exclusive per iseq.
Consider an example:
def somemethod
puts 1
puts 2
puts 3
end
tp1 = TracePoint.new(:line) { |tp| puts 'This is tp1'}
tp2 = TracePoint.new(:line) { |tp| puts 'This is tp2'}
method_iseq = RubyVM::InstructionSequence.of(method :somemethod)
tp1.enable(target: method_iseq, target_line: 2)
tp2.enable(target: method_iseq, target_line: 4)
somemethod
Ruby 2.6-2.7 prints :
1
2
This is tp2
3
And this is unexpected, because we have 2 tracepoints and expecting both to work. But actually, only last enabled does.
Ruby 3+ work as expected:
This is tp1
1
2
This is tp2
3
Would be really nice to have consistent 3+ behavior everywhere
Actions
Like0
Like0Like0Like0