[#108552] [Ruby master Bug#18782] Race conditions in autoload when loading the same feature with multiple threads. — "ioquatix (Samuel Williams)" <noreply@...>
Issue #18782 has been reported by ioquatix (Samuel Williams).
11 messages
2022/05/14
[ruby-core:108744] [Ruby master Bug#18779] `GC.compact` and other compaction related methods should be defined as rb_f_notimplement on non supported platforms.
From:
"jaruga (Jun Aruga)" <noreply@...>
Date:
2022-05-31 10:26:30 UTC
List:
ruby-core #108744
Issue #18779 has been updated by jaruga (Jun Aruga). > no, I requested it, but it's the release manager of each branch that is supposed to do the backport. Sorry for my mistake. The "3.0: REQUIRED, 3.1: REQUIRED" (not DONE) shows the statuses clearly. > These two commits are on master. The backported commits will likely be widely different as there was many changes in compaction APIs between 3.0 and master. I see. How about changes between 3.1 and master? Many changes? I want to see the backport at least on Ruby 3.1. Ah I found the 2 commits you shared on the PR below. But the commits were rebased on the master. That's why I could not find those on the master. https://github.com/ruby/ruby/pull/5934/commits I think the 2 commits on the master are below. https://github.com/ruby/ruby/commit/0de1495f358e9b892dfa63d4b74f59b1d2903703 https://github.com/ruby/ruby/commit/0c36ba53192c5a0d245c9b626e4346a32d7d144e ---------------------------------------- Bug #18779: `GC.compact` and other compaction related methods should be defined as rb_f_notimplement on non supported platforms. https://bugs.ruby-lang.org/issues/18779#change-97804 * Author: byroot (Jean Boussier) * Status: Closed * Priority: Normal * Backport: 2.7: WONTFIX, 3.0: REQUIRED, 3.1: REQUIRED ---------------------------------------- I received several bug report on native gems using `GC.verify_compaction_references` in their test suite. Examples: - https://github.com/msgpack/msgpack-ruby/pull/275/files - https://github.com/Shopify/bootsnap/pull/414/files I think that when `!GC_COMPACTION_SUPPORTED`, rather than raise `NotImplementedError`, we should instead define these methods as `rb_f_notimplement` like `Process.fork` on Windows. This way `GC.respond_to?(:compact)` would be a proper way to test for compaction support. Unfortunately, these methods are defined through `.rb` files with `Primitive`, and I don't know wether it's possible to check `GC_COMPACTION_SUPPORTED` from there, nor if it's possible to define a `rb_f_notimplement` method. cc @tenderlovemaking -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>