From: naruse@... Date: 2021-03-11T11:34:45+00:00 Subject: [ruby-core:102827] [Ruby master Bug#17636] Race condition in check_rvalue_consistency_force when using ractors Issue #17636 has been updated by naruse (Yui NARUSE). Backport changed from 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: REQUIRED to 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: DONE ruby_3_0 d3863cb2e80f27d26b521b2c957b21feacb900de merged revision(s) 07ab172ebef28bb82c2650694548d123802d6c22. ---------------------------------------- Bug #17636: Race condition in check_rvalue_consistency_force when using ractors https://bugs.ruby-lang.org/issues/17636#change-90886 * Author: peterzhu2118 (Peter Zhu) * Status: Closed * Priority: Normal * Assignee: ko1 (Koichi Sasada) * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: DONE ---------------------------------------- [GitHub PR](https://github.com/ruby/ruby/pull/4191) When `RGENGC_CHECK_MODE` is enabled and we use multiple ractors, there is a race condition in `check_rvalue_consistency_force` that causes an assertion to fail. It happens when a page is created during the call to `is_pointer_to_heap`, which causes the binary search to fail. # Reproduction ```ruby NUM_RACTORS = 10 rs = NUM_RACTORS.times.map do |i| Ractor.new(i) do |i| arr = [] 10_000.times do |j| arr << "foo.#{i}.#{j}" end arr end end arrs = rs.map { |r| r.take } ``` The crash log is attached below in `crash.log`. ---Files-------------------------------- crash.log (20.1 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: