1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/ext
卜部昌平 eb92159d72 Revert https://github.com/ruby/ruby/pull/2486
This reverts commits: 10d6a3aca7 8ba48c1b85 fba8627dc1 dd883de5ba
6c6a25feca 167e6b48f1 7cb96d41a5 3207979278 595b3c4fdd 1521f7cf89
c11c5e69ac cf33608203 3632a812c0 f56506be0d 86427a3219 .

The reason for the revert is that we observe ABA problem around
inline method cache.  When a cache misshits, we search for a
method entry.  And if the entry is identical to what was cached
before, we reuse the cache.  But the commits we are reverting here
introduced situations where a method entry is freed, then the
identical memory region is used for another method entry.  An
inline method cache cannot detect that ABA.

Here is a code that reproduce such situation:

```ruby
require 'prime'

class << Integer
  alias org_sqrt sqrt
  def sqrt(n)
    raise
  end

  GC.stress = true
  Prime.each(7*37){} rescue nil # <- Here we populate CC
  class << Object.new; end

  # These adjacent remove-then-alias maneuver
  # frees a method entry, then immediately
  # reuses it for another.
  remove_method :sqrt
  alias sqrt org_sqrt
end

Prime.each(7*37).to_a # <- SEGV
```
2019-10-03 12:45:24 +09:00
..
-test- ext/-test-/enumerator_kw/enumerator_kw.c: remove unused variable 2019-10-01 08:57:50 +09:00
bigdecimal
cgi/escape
continuation
coverage Revert https://github.com/ruby/ruby/pull/2486 2019-10-03 12:45:24 +09:00
date
dbm
digest
etc
fcntl
fiber
fiddle
gdbm
io [ruby/io-console] Defer creating VT query string 2019-09-26 09:59:27 +09:00
json Make rb_scan_args handle keywords more similar to Ruby methods (#2460) 2019-09-25 11:18:49 -07:00
nkf
objspace
openssl Fix keyword argument separation issues in OpenSSL::SSL::SSLSocket#sys{read,write}_nonblock 2019-09-26 08:01:53 -07:00
pathname Fix more keyword argument separation issues in Pathname 2019-09-26 08:01:53 -07:00
psych
pty
racc/cparse
rbconfig/sizeof
readline
ripper Changed numbered parameter prefix 2019-09-24 21:57:54 +09:00
rubyvm
sdbm
socket
stringio [ruby/stringio] Bump up the version 2019-09-29 18:55:34 +09:00
strscan
syslog Honor Syslog::Logger#level overrides 2019-09-26 15:01:44 -07:00
win32
win32ole
zlib [ruby/zlib] Fix for older ruby 2.6 or earlier 2019-09-29 18:53:11 +09:00
.document
extmk.rb
Setup
Setup.atheos
Setup.nt