Actions
Bug #20167
openCode execution isn't recorded in Ractor
Description
reproduction code¶
# frozen-string-literal: true
require "coverage"
Coverage.start
require_relative "./some_lib"
# # some_lib.rb
# class C
# def hoge(i)
# i
# end
# end
r = Ractor.new do
loop do
v = Ractor.receive
ret_v = C.new.hoge(v)
Ractor.yield ret_v
end
end
2.times do |i|
r << i
r.take
end
Coverage.result.each do |file, lines|
if file.include?("some_ractor_lib")
if lines == [1, 1, 2, nil, nil]
puts "OK"
else
puts "expected: [1, 1, 2, nil, nil]"
puts "actual: #{lines.inspect}"
end
end
end
Target ruby version¶
3.2.0+ affected
Updated by mame (Yusuke Endoh) 12 months ago
At this time, the coverage library should be able to only measure coverage for Ractor that invoked Coverage.start
. (I have not tried but invoking Coverage.start
in multiple Ractors may cause fatal problems.)
To improve this situation, probabily we need the following big modification.
-
Covearge.start
registers hooks to all existing Ractors. - The hook measures coverage data per Ractor, not globally.
-
Coverage.result
aggregates all coverage data from every Ractor.
Updated by jeremyevans0 (Jeremy Evans) 12 months ago
- Is duplicate of Bug #20158: Ractor affects Coverage results added
Actions
Like0
Like0Like0