[ruby-core:122208] [Ruby Bug#21354] Symbol#to_proc is not ractor safe

Issue #21354 has been reported by luke-gru (Luke Gruber). ---------------------------------------- Bug #21354: Symbol#to_proc is not ractor safe https://bugs.ruby-lang.org/issues/21354 * Author: luke-gru (Luke Gruber) * Status: Open * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- There is caching in `Symbol#to_proc` (`rb_sym_to_proc`) that makes the assumption that we're always in the main ractor. With multiple ractors, this caching logic is not ractor-safe in that cached procs created in one ractor can leak into other ractors. In a debug build, this results in a `ractor_confirm_belonging` assertion failure. Ruby code that reproduces the issue: ```ruby :inspect.to_proc Ractor.new do :inspect.to_proc end.take ``` -- https://bugs.ruby-lang.org/

Issue #21354 has been updated by luke-gru (Luke Gruber). PR here: https://github.com/ruby/ruby/pull/13380 ---------------------------------------- Bug #21354: Symbol#to_proc is not ractor safe https://bugs.ruby-lang.org/issues/21354#change-113357 * Author: luke-gru (Luke Gruber) * Status: Open * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- There is caching in `Symbol#to_proc` (`rb_sym_to_proc`) that makes the assumption that we're always in the main ractor. With multiple ractors, this caching logic is not ractor-safe in that cached procs created in one ractor can leak into other ractors. In a debug build, this results in a `ractor_confirm_belonging` assertion failure. Ruby code that reproduces the issue: ```ruby :inspect.to_proc Ractor.new do :inspect.to_proc end.take ``` -- https://bugs.ruby-lang.org/

Issue #21354 has been updated by nobu (Nobuyoshi Nakada). Assignee set to ko1 (Koichi Sasada) Backport changed from 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN to 3.2: REQUIRED, 3.3: REQUIRED, 3.4: REQUIRED ---------------------------------------- Bug #21354: Symbol#to_proc is not ractor safe https://bugs.ruby-lang.org/issues/21354#change-113360 * Author: luke-gru (Luke Gruber) * Status: Open * Assignee: ko1 (Koichi Sasada) * Backport: 3.2: REQUIRED, 3.3: REQUIRED, 3.4: REQUIRED ---------------------------------------- There is caching in `Symbol#to_proc` (`rb_sym_to_proc`) that makes the assumption that we're always in the main ractor. With multiple ractors, this caching logic is not ractor-safe in that cached procs created in one ractor can leak into other ractors. In a debug build, this results in a `ractor_confirm_belonging` assertion failure. Ruby code that reproduces the issue: ```ruby :inspect.to_proc Ractor.new do :inspect.to_proc end.take ``` -- https://bugs.ruby-lang.org/

Issue #21354 has been updated by byroot (Jean Boussier). Assignee changed from ko1 (Koichi Sasada) to ractor ---------------------------------------- Bug #21354: Symbol#to_proc is not ractor safe https://bugs.ruby-lang.org/issues/21354#change-113362 * Author: luke-gru (Luke Gruber) * Status: Closed * Assignee: ractor * Backport: 3.2: REQUIRED, 3.3: REQUIRED, 3.4: REQUIRED ---------------------------------------- There is caching in `Symbol#to_proc` (`rb_sym_to_proc`) that makes the assumption that we're always in the main ractor. With multiple ractors, this caching logic is not ractor-safe in that cached procs created in one ractor can leak into other ractors. In a debug build, this results in a `ractor_confirm_belonging` assertion failure. Ruby code that reproduces the issue: ```ruby :inspect.to_proc Ractor.new do :inspect.to_proc end.take ``` -- https://bugs.ruby-lang.org/

Issue #21354 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 3.2: REQUIRED, 3.3: REQUIRED, 3.4: REQUIRED to 3.2: REQUIRED, 3.3: DONE, 3.4: REQUIRED ruby_3_3 commit:d5c8fd2043f4425c3fe2a87558dfbd80ebff9911 merged revision(s) commit:f6cbf499bc98b851034fffb49fcbb59d495f6f7b. ---------------------------------------- Bug #21354: Symbol#to_proc is not ractor safe https://bugs.ruby-lang.org/issues/21354#change-113753 * Author: luke-gru (Luke Gruber) * Status: Closed * Assignee: ractor * Backport: 3.2: REQUIRED, 3.3: DONE, 3.4: REQUIRED ---------------------------------------- There is caching in `Symbol#to_proc` (`rb_sym_to_proc`) that makes the assumption that we're always in the main ractor. With multiple ractors, this caching logic is not ractor-safe in that cached procs created in one ractor can leak into other ractors. In a debug build, this results in a `ractor_confirm_belonging` assertion failure. Ruby code that reproduces the issue: ```ruby :inspect.to_proc Ractor.new do :inspect.to_proc end.take ``` -- https://bugs.ruby-lang.org/

Issue #21354 has been updated by k0kubun (Takashi Kokubun). Backport changed from 3.2: REQUIRED, 3.3: DONE, 3.4: REQUIRED to 3.2: REQUIRED, 3.3: DONE, 3.4: DONE ruby_3_4 commit:82e05dc945e3e2c5ab22be661f6caf6c7436461f merged revision(s) commit:f6cbf499bc98b851034fffb49fcbb59d495f6f7b. ---------------------------------------- Bug #21354: Symbol#to_proc is not ractor safe https://bugs.ruby-lang.org/issues/21354#change-114034 * Author: luke-gru (Luke Gruber) * Status: Closed * Assignee: ractor * Backport: 3.2: REQUIRED, 3.3: DONE, 3.4: DONE ---------------------------------------- There is caching in `Symbol#to_proc` (`rb_sym_to_proc`) that makes the assumption that we're always in the main ractor. With multiple ractors, this caching logic is not ractor-safe in that cached procs created in one ractor can leak into other ractors. In a debug build, this results in a `ractor_confirm_belonging` assertion failure. Ruby code that reproduces the issue: ```ruby :inspect.to_proc Ractor.new do :inspect.to_proc end.take ``` -- https://bugs.ruby-lang.org/
participants (5)
-
byroot (Jean Boussier)
-
k0kubun (Takashi Kokubun)
-
luke-gru (Luke Gruber)
-
nagachika (Tomoyuki Chikanaga)
-
nobu (Nobuyoshi Nakada)