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 Make Kernel#{Pathname,BigDecimal,Complex} return argument if given correct type 2019-09-21 16:10:37 -07:00
cgi/escape Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
continuation Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
coverage Revert https://github.com/ruby/ruby/pull/2486 2019-10-03 12:45:24 +09:00
date date_parse.c: trim off 2019-08-12 20:41:11 +09:00
dbm Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
digest Check metadata a bit more 2019-08-23 13:00:17 +09:00
etc drop-in type check for rb_define_module_function 2019-08-29 18:34:09 +09:00
fcntl Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
fiber
fiddle Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
gdbm Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
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 Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
objspace Rename NODE_ARRAY to NODE_LIST to reflect its actual use cases 2019-09-07 13:56:29 +09:00
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 ext/psych/yaml/api.c: Suppress a "variable set but not used" warning 2019-08-24 20:31:16 +09:00
pty rb_ensure now free from ANYARGS 2019-08-27 15:52:26 +09:00
racc/cparse rb_catch now free from ANYARGS 2019-08-27 15:52:26 +09:00
rbconfig/sizeof Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
readline drop-in type check for rb_define_singleton_method 2019-08-29 18:34:09 +09:00
ripper Changed numbered parameter prefix 2019-09-24 21:57:54 +09:00
rubyvm Added depend files 2019-07-14 01:31:29 +09:00
sdbm Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
socket Support timeout for Addrinfo 2019-09-10 10:10:59 +09:00
stringio [ruby/stringio] Bump up the version 2019-09-29 18:55:34 +09:00
strscan Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
syslog Honor Syslog::Logger#level overrides 2019-09-26 15:01:44 -07:00
win32 Include ruby/assert.h in ruby/ruby.h so that assertions can be there 2019-07-14 17:58:03 +09:00
win32ole Fix call-seq of OpenSSL.fips_mode and WIN32OLE_METHOD#name [ci skip] 2018-11-01 07:25:50 +00:00
zlib [ruby/zlib] Fix for older ruby 2.6 or earlier 2019-09-29 18:53:11 +09:00
.document ext/.document: follow-up r59734 2017-09-03 13:31:34 +00:00
Setup
Setup.atheos
Setup.nt
extmk.rb Revert "DEBUG: dump mkmf.log" 2019-09-19 20:57:57 +09:00