mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
![]() This change fixes the bug described in https://bugs.ruby-lang.org/issues/17880. Checking `ractor_shareable_p` will cause the method to call back into Ruby. Anything calling this method can't be a leaf instruction, otherwise it could crash. By adding `attr bool leaf = false` we no longer crash because it marks the function as not a leaf. Here's a simplified reproduction script: ```ruby require "set" class Id attr_reader :db_id def initialize(db_id) @db_id = db_id end def ==(other) other.class == self.class && other.db_id == db_id end alias_method :eql?, :== def hash 10 end def <=>(other) db_id <=> other.db_id if other.is_a?(self.class) end end class Namespace IDS = Set[ Id.new(1).freeze, Id.new(2).freeze, Id.new(3).freeze, Id.new(4).freeze, ].freeze class << self def test?(id) IDS.include?(id) end end end p Namespace.test?(Id.new(1)) p Namespace.test?(Id.new(5)) ``` Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> |
||
---|---|---|
.. | ||
-ext- | ||
base64 | ||
benchmark | ||
bigdecimal | ||
cgi | ||
coverage | ||
csv | ||
date | ||
did_you_mean | ||
digest | ||
drb | ||
dtrace | ||
erb | ||
etc | ||
excludes | ||
fiber | ||
fiddle | ||
fileutils | ||
fixtures/fake_sorted_set_gem | ||
io | ||
irb | ||
json | ||
lib | ||
logger | ||
mkmf | ||
monitor | ||
net | ||
nkf | ||
objspace | ||
open-uri | ||
openssl | ||
optparse | ||
ostruct | ||
pathname | ||
psych | ||
racc | ||
rdoc | ||
readline | ||
reline | ||
resolv | ||
rinda | ||
ripper | ||
ruby | ||
rubygems | ||
socket | ||
stringio | ||
strscan | ||
syslog | ||
uri | ||
win32ole | ||
yaml | ||
zlib | ||
runner.rb | ||
test_abbrev.rb | ||
test_delegate.rb | ||
test_extlibs.rb | ||
test_find.rb | ||
test_forwardable.rb | ||
test_ipaddr.rb | ||
test_mutex_m.rb | ||
test_observer.rb | ||
test_open3.rb | ||
test_pp.rb | ||
test_prettyprint.rb | ||
test_pstore.rb | ||
test_pty.rb | ||
test_rbconfig.rb | ||
test_securerandom.rb | ||
test_set.rb | ||
test_shellwords.rb | ||
test_singleton.rb | ||
test_sorted_set.rb | ||
test_syslog.rb | ||
test_tempfile.rb | ||
test_time.rb | ||
test_timeout.rb | ||
test_tmpdir.rb | ||
test_trick.rb | ||
test_tsort.rb | ||
test_unicode_normalize.rb | ||
test_weakref.rb |