Bug #13305
Updated by decuplet (Nikita Shilnikov) over 7 years ago
The problem occurs on MRI 2.4.0 and the latest trunk only (2017-03-13 trunk 57944). After running `Coverage.start` code defines the same method few times but every time the size of the method increases. Occasionally MRI can fail on attempt to get the coverage result. The bug can be reproduced quite easily with the following two files a.rb ```ruby ~~~ ruby require 'coverage' Coverage.start require_relative './b' add_method(Class.new) Coverage.result ``` ~~~ b.rb ```ruby ~~~ ruby REPEATS = 400 def add_method(target) REPEATS.times do target.class_eval(<<~RUBY, __FILE__, __LINE__ + 1) def foo #{"\n" * rand(REPEATS)} end 1 RUBY end end ``` ~~~ Run `ruby a.rb` to reproduce the bug. Several runs may be required before MRI fails, but for me it fails on almost every run. Note that passing filename and line number to `class_eval` is important, so as adding `1` after the method definition. The crash report attached to the issue.