diff options
| author | Koichi Sasada <ko1@atdot.net> | 2022-02-14 16:10:18 +0900 |
|---|---|---|
| committer | Koichi Sasada <ko1@atdot.net> | 2022-02-14 17:17:55 +0900 |
| commit | 76e594d5157bd763636adb096d4aa06688ac03ac (patch) | |
| tree | a0f3d521db115f766c647a2686a08f39a1cc9817 /spec/ruby/core/array/shared | |
| parent | 838031170c10471fc88ff43133b3b2a2d0c8aa75 (diff) | |
fix GC event synchronization
(1) gc_verify_internal_consistency() use barrier locking
for consistency while `during_gc == true` at the end
of the sweep on `RGENGC_CHECK_MODE >= 2`.
(2) `rb_objspace_reachable_objects_from()` is called without
VM synchronization and it checks `during_gc != true`.
So (1) and (2) causes BUG because of `during_gc == true`.
To prevent this error, wait for VM barrier on `during_gc == false`
and introduce VM locking on `rb_objspace_reachable_objects_from()`.
http://ci.rvm.jp/results/trunk-asserts@phosphorus-docker/3830088
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/5552
Diffstat (limited to 'spec/ruby/core/array/shared')
0 files changed, 0 insertions, 0 deletions
