Age | Commit message (Collapse) | Author |
|
0130e17a410d60a10e7041ce98748b8de6946971,32b7dcfb56a417c1d1c354102351fc1825d653bf,79cc566ab4cdf75f125ecf413a27d353a9756c08: [Backport #18394]
Always enabled read barrier even on GC.compact
Some objects can survive the GC before compaction, but get collected in
the second compaction. This means we could have objects reference
T_MOVED during "free" in the second, compacting GC. If that is the
case, we need to invalidate those "moved" addresses. Invalidation is
done via read barrier, so we need to make sure the read barrier is
active even during `GC.compact`.
This also means we don't actually need to do one GC before compaction,
we can just do the compaction and GC in one step.
---
gc.c | 20 +++-----------------
1 file changed, 3 insertions(+), 17 deletions(-)
Fix more assumptions about the read barrier
This is a continuation of 0130e17a410d60a10e7041ce98748b8de6946971. We
need to always use the read barrier
---
gc.c | 10 ----------
1 file changed, 10 deletions(-)
Make during_compacting flag in GC one bit
Commit c32218de1ba094223420a4ea017707f48d0009c5 turned during_compacting
flag to 2 bits to support the case when there is no write barrier. But
commit 32b7dcfb56a417c1d1c354102351fc1825d653bf changed compaction to
always enable the write barrier. This commit cleans up some of the
leftover code.
---
gc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
intern/select/posix.h: remove unused parameter from rb_fd_dup
This unused parameter seems to be accidently introduced by https://github.com/ruby/ruby/commit/9e6e39c
---
include/ruby/internal/intern/select/posix.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
[Bug #18382] Fix crash in compaction for
ObjectSpace.trace_object_allocations
ObjectSpace.trace_object_allocations can crash when auto-compaction is
enabled.
---
ext/objspace/object_tracing.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
[ruby/zlib] [Bug #18358] Fix crash in zlib when in progress
When Zlib::Inflate#inflate or Zlib::Deflate#deflate is called
recursively inside the block, a crash can occur because of an
use-after-free bug.
https://github.com/ruby/zlib/commit/50fb8a0338
---
ext/zlib/zlib.c | 117 ++++++++++++++++++++++++++++++++-----------------
test/zlib/test_zlib.rb | 10 ++++-
2 files changed, 85 insertions(+), 42 deletions(-)
|
|
[ruby/zlib] Synchronize access to zstream to prevent segfault in
multithreaded use
I'm not sure whether this handles all multithreaded use cases,
but this handles the example that crashes almost immediately
and does 10,000,000 total deflates using 100 separate threads.
To prevent the tests from taking forever, the committed test
for this uses only 10,000 deflates across 10 separate threads,
which still causes a segfault in the previous implementation
almost immediately.
Fixes [Bug #17803]
https://github.com/ruby/zlib/commit/4b1023b3f2
---
ext/zlib/zlib.c | 33 ++++++++++++++++++++++++++-
test/zlib/test_zlib.rb | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 93 insertions(+), 1 deletion(-)
|
|
cf831f49189c4a890da6845e39199a5dfaf4fb48,3260602fa3d905ba310b9afbc5365ee52cb53d62:
zlib: fix Gzip{Writer,Reader}.new fails with a O_TMPFILE file
---
ext/zlib/zlib.c | 18 ++++++++++++++----
test/zlib/test_zlib.rb | 21 +++++++++++++++++++++
2 files changed, 35 insertions(+), 4 deletions(-)
Adjusted indents [ci skip]
---
ext/zlib/zlib.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
Fix -Wundef warnings for HAVE_RB_EXT_RACTOR_SAFE
* See [Feature #17752]
---
ext/cgi/escape/escape.c | 2 +-
ext/monitor/monitor.c | 2 +-
ext/racc/cparse/cparse.c | 2 +-
ext/zlib/zlib.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
|
|
[ruby/zlib] Resume zstream if available [Bug #10961]
---
ext/zlib/zlib.c | 6 ++++++
1 file changed, 6 insertions(+)
|
|
|
|
|
|
f18a0b7654d471101b207e7fe553e12a25398e45,77e1b477297a48e285d34b21e8d30ab4b46bf90c,c483aa8394fc26e341666db66938b1d6fc2cbb8e,f2e39e5fed498b51ae914ed42ec51ae578330583,6aaa1c4d09249baae93d5bb7fba585be420c4fee,923b3652247aa17ac99dc45cb1cd0654fa08d976,950c7a12efa19d73bed10d377368a50664cae32c,69ce9e4187589335124077029496ee293d4e9189,ddb87396349fa4699153d5c4c7569c2e0186adfc,09e7a0c4a4fba18e3308e4f8cb4b8b5b52b41d20,298d65b1e4f3019af7fc9b905390b56736f5fd0e,2f3edf28f3a251bac2cf3b47b46b372faac71e8e:
[ruby/rdoc] Follow-up rubygems
Use test-unit assertions instead of minitest.
https://github.com/ruby/rdoc/commit/d6a6209d7f
---
test/rdoc/test_rdoc_rubygems_hook.rb | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
[ruby/rdoc] Add an alias for test-unit with older versions of
RubyGems
https://github.com/ruby/rdoc/commit/b8d68fdd87
---
test/rdoc/test_rdoc_rubygems_hook.rb | 3 +++
1 file changed, 3 insertions(+)
[ruby/rdoc] Rwrite test-case for rubygems_hook without Gem::TestCase
https://github.com/ruby/rdoc/commit/f8d1087ce5
---
test/rdoc/test_rdoc_rubygems_hook.rb | 38 +++++++++++++++++++-----------------
1 file changed, 20 insertions(+), 18 deletions(-)
[ruby/rdoc] Update test/rdoc/test_rdoc_rubygems_hook.rb
https://github.com/ruby/rdoc/commit/fb264c4cc4
Co-authored-by: Nobuyoshi Nakada <[email protected]>
---
test/rdoc/test_rdoc_rubygems_hook.rb | 4 ++++
1 file changed, 4 insertions(+)
[ruby/rdoc] Use pend instead of skip
https://github.com/ruby/rdoc/commit/8460a36d84
---
test/rdoc/test_rdoc_rubygems_hook.rb | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Close UserInteraction for tests to fix leaked file descriptors
---
test/rdoc/test_rdoc_rubygems_hook.rb | 2 ++
1 file changed, 2 insertions(+)
Make temporary directory under the regular location
---
test/rdoc/test_rdoc_rubygems_hook.rb | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
Clear default configurations
Remove environment variables which can affect the default
configurations.
---
test/rdoc/test_rdoc_rubygems_hook.rb | 13 +++++++++++++
1 file changed, 13 insertions(+)
Clear rdoc options in the global rubygems configuration
---
test/rdoc/test_rdoc_rubygems_hook.rb | 2 ++
1 file changed, 2 insertions(+)
Dispose the global rubygems configuration wholely
---
test/rdoc/test_rdoc_rubygems_hook.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Discard RDOCOPT environment variable to make tests stable
---
test/rdoc/test_rdoc_rubygems_hook.rb | 1 +
1 file changed, 1 insertion(+)
[ruby/rdoc] Prefer omit to pend
These conditions are not temporary, rather platform dependent.
https://github.com/ruby/rdoc/pull/815#discussion_r654660411
https://github.com/ruby/rdoc/commit/92545fa250
---
test/rdoc/test_rdoc_rubygems_hook.rb | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
Bacause the GitHub Actions workflow for MinGW failed on 'where check'
|
|
[Actions] mingw - use ruby/setup-ruby@v1 again
---
.github/workflows/mingw.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
The `include`d set should be expanded values [ci skip]
While the `matrix` level values are expanded from the production
of each arrays, `include`d set should be consist from expanded
single values.
---
.github/workflows/mingw.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
Fix weird MinGW failure notifications
It's been "MinGW / Array", but it will be "MinGW MINGW64 / check" or
"MinGW UCRT64 / check" by this.
---
.github/workflows/mingw.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
e0a5c3d2b71dfad038d7562fdd33f02ffd79232d,7d55f1b6b6b9777a8bd665f6c5ed6a64c7fa2e9b:
[MinGW] Set job names
---
.github/workflows/mingw.yml | 1 +
1 file changed, 1 insertion(+)
[Actions] use windows-2022 for mingw
MSP-Greg/ruby-setup-ruby@win-ucrt-1
---
.github/workflows/mingw.yml | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
|
|
ec032e86faf9ac128ac51e3394d9b4001a374b38,8acb2a9b4069f55f71a80c747fc7c6bcb686abb7:
[MinGW] Clear prefix and move the directory to DESTDIR
Also the destination will be created at the installation.
---
.github/workflows/mingw.yml | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
[MinGW] Use autogen
---
.github/workflows/mingw.yml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
These failures are caused by the incompatibility in keyword argument
treatment in rspec-mocks.
I fix the expectations in the bundler/rubygems_integration_spec.rb.
These tests are not touched in the master branch.
It seems that the following patch also fix the failures.
But I believe the expectations in these tests are wrong. We should pass a Hash literal explicitly.
--- a/common.mk
+++ b/common.mk
@@ -1365,7 +1365,7 @@ yes-test-bundler-precheck: main
no-test-bundler-prepare: no-test-bundler-precheck
yes-test-bundler-prepare: yes-test-bundler-precheck
$(XRUBY) -C "$(srcdir)" bin/gem install --no-document \
- --install-dir .bundle --conservative "rspec:~> 3.8" "rake:~> 13.0" "parallel_tests:~> 2.29"
+ --install-dir .bundle --conservative "rspec-core:= 3.10.1" "rspec-expectations:= 3.10.1" "rspec-mocks:= 3.10.2" "rake:~> 13.0" "parallel_tests:~> 2.29"
RSPECOPTS =
BUNDLER_SPECS =
|
|
[rubygems/rubygems] Fix spec to not touch the network
And not depend on the state of rack's master branch, in particular, on
their Ruby support range.
https://github.com/rubygems/rubygems/commit/9ea4baffac
---
spec/bundler/commands/remove_spec.rb | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
fb4cf204a662a8cd9dafef6f31f2bd0db9129abe,fa0279d947c3962c3f8c32852278d3ebb964cb19: [Backport #17725]
use me->def instead of me for opt_table
`vm_opt_method_table` is me=>bop table to manage the optimized
methods (by specialized instruction). However, `me` can be invalidated
to invalidate the method cache entry.
[Bug #17725]
To solve the issue, use `me-def` instead of `me` which simply copied
at invalidation timing.
A test by @jeremyevans https://github.com/ruby/ruby/pull/4376
---
test/ruby/test_method.rb | 15 +++++++++++++++
vm.c | 11 +++++------
2 files changed, 20 insertions(+), 6 deletions(-)
should not share same `def` for specialized method
Because the key of redefine table is `def`, `def` should be
unique for each optimized method (`alias` is not allowed).
---
array.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
5086c25f6015558877f85c3f1c014780b08fd3ce,3ff0a0b40c2e1fbdad2286f1dafe837f822d0e0d: [Backport #16936]
Properly exclude test cases.
Lets consider the following scenario:
~~~
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):001:0> p suite
OpenSSL::TestEC
=> OpenSSL::TestEC
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):002:0> p all_test_methods
["test_ECPrivateKey", "test_ECPrivateKey_encrypted", "test_PUBKEY", "test_check_key", "test_derive_key", "test_dh_compute_key", "test_dsa_sign_asn1_FIPS186_3", "test_ec_group", "test_ec_key", "test_ec_point", "test_ec_point_add", "test_ec_point_mul", "test_generate", "test_marshal", "test_sign_verify", "test_sign_verify_raw"]
=>
["test_ECPrivateKey",
"test_ECPrivateKey_encrypted",
"test_PUBKEY",
"test_check_key",
"test_derive_key",
"test_dh_compute_key",
"test_dsa_sign_asn1_FIPS186_3",
"test_ec_group",
"test_ec_key",
"test_ec_point",
"test_ec_point_add",
"test_ec_point_mul",
"test_generate",
"test_marshal",
"test_sign_verify",
"test_sign_verify_raw"]
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):003:0> p filter
/\A(?=.*)(?!.*(?-mix:(?-mix:memory_leak)|(?-mix:OpenSSL::TestEC.test_check_key)))/
=> /\A(?=.*)(?!.*(?-mix:(?-mix:memory_leak)|(?-mix:OpenSSL::TestEC.test_check_key)))/
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):004:0> method = "test_check_key"
=> "test_check_key"
~~~
The intention here is to exclude the `test_check_key` test case.
Unfortunately this does not work as expected, because the negative filter
is never checked:
~~~
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):005:0> filter === method
=> true
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):006:0> filter === "#{suite}##{method}"
=> false
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):007:0> filter === method || filter === "#{suite}##{method}"
=> true
~~~
Therefore always filter against the fully qualified method name
`#{suite}##{method}`, which should provide the expected result.
However, if plain string filter is used, keep checking also only the
method name.
This resolves [Bug #16936].
---
tool/lib/test/unit.rb | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
Filter method names only if filtering method name only
If sole `filter` option doesn't seem including test case name,
match with method name only.
And if the filter is a Regexp or String, it never matches method
name symbols.
---
tool/lib/test/unit.rb | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
|
|
Fix documentation for String#{<<,concat,prepend}
These methods mutate and return the receiver, they don't create
and return a new string.
Fixes [Bug #18241]
---
string.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
|
|
Fix documentation of #<=> and #casecmp [ci skip]
Descriptions for return values of -1 and 1 were reversed.
---
string.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
Specify -c to emit pch with clang (#4423)
[Bug #17836]
---
mjit_worker.c | 1 +
1 file changed, 1 insertion(+)
|
|
test/openssl/test_cipher: skip AES-CCM tests on OpenSSL <= 1.1.1b
AES CCM mode in OpenSSL <= 1.1.1b was overly strict in the parameters
assignment order. This has been relaxed by OpenSSL 1.1.1c.
https://github.com/openssl/openssl/commit/b48e3be947ddc5da6b5a86db8341081c72b9a4ee
The test case is failing on Ubuntu 18.04 because it still uses the
initial 1.1.1 release and has the issue:
http://rubyci.s3.amazonaws.com/graviton2/ruby-master/log/20210316T120003Z.fail.html.gz
---
test/openssl/test_cipher.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
Make use of the check in rb_alloc_tmp_buffer2.
https://hackerone.com/reports/1328463
When parsing cookies, only decode the values
Bump version
Co-authored-by: Nobuyoshi Nakada <[email protected]>
Co-authored-by: Yusuke Endoh <[email protected]>
|
|
|
|
|
|
|
|
f367b4ffe739453e87e55f955138b0ce662942b7,31a757a4426f1ac8c479313e01542940386fc2fe,837cbea64b74d464bfbfb10e6c81a8f92c6eee71:
assert_equal accepts an expected value as the first argument
---
test/psych/test_coder.rb | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
Make the test pass with the old libyaml
I have no idea what result is right, but it fails with libyaml 0.1.7
(bundled with Ubuntu 18.04) anyway.
---
test/psych/test_coder.rb | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
test/psych/test_coder.rb: Suppress non-parenthesis warnings
http://rubyci.s3.amazonaws.com/debian9/ruby-master/log/20210518T093002Z.log.html.gz
```
/home/chkbuild/chkbuild/tmp/build/20210518T093002Z/ruby/test/psych/test_coder.rb:277: warning: ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator
```
---
test/psych/test_coder.rb | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
e1b03b0c2b2449a7794f4701bab8b2382eb15116,007e439fe965871c73127928f7244ebb96a86e58:
Enable VM_ASSERT in --jit CIs (#4543)
---
.github/workflows/mjit.yml | 2 +-
ractor.c | 6 +++---
vm_core.h | 6 +++---
vm_method.c | 2 +-
4 files changed, 8 insertions(+), 8 deletions(-)
Do not expect ec on rb_vm_bugreport
because a SEGV might happen on an MJIT worker. As you can clearly see
from `if (vm && ec) {`, ec is not guaranteed to exist here.
---
vm_dump.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
5680c38c75aeb5cbd219aafa8eb48c315f287d97,f5d20411386ff2552ff27661387ddc4bae1ebc30: [Backport #17573]
Use valid `ec` for postponed job.
Postponed job can be registered from non-Ruby thread, which means
`ec` in TLS can be NULL. In this case, use main thread's `ec` instead.
See https://github.com/ruby/ruby/pull/4108
and https://github.com/ruby/ruby/pull/4336
---
vm_trace.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
Avoid assert failure when NULL EC is expected
After 5680c38c75aeb5cbd219aafa8eb48c315f287d97, postponed job APIs now
expect to be called on native threads not managed by Ruby and handles
getting a NULL execution context. However, in debug builds the change
runs into an assertion failure with GET_EC() which asserts that EC is
non-NULL. Avoid the assertion failure by passing `false` for `expect_ec`
instead as the intention is to handle when there is no EC.
Add a test from John Crepezzi and John Hawthorn to exercise this
situation.
See GH-4108
See GH-5094
[Bug #17573]
Co-authored-by: John Hawthorn <[email protected]>
Co-authored-by: John Crepezzi <[email protected]>
---
ext/-test-/postponed_job/postponed_job.c | 31 ++++++++++++++++++++++++++
test/-ext-/postponed_job/test_postponed_job.rb | 7 ++++++
vm_trace.c | 2 +-
3 files changed, 39 insertions(+), 1 deletion(-)
|
|
Delegate keywords from Enumerable#to_a to #each
Fixes [Bug #18289]
---
enum.c | 2 +-
test/ruby/test_enum.rb | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
|
|
[Bug #18329] Fix crash when calling non-existent super method
The cme is NULL when a method does not exist, so check it before
accessing the callcache.
---
test/ruby/test_super.rb | 31 +++++++++++++++++++++++++++++++
vm_insnhelper.c | 3 ++-
2 files changed, 33 insertions(+), 1 deletion(-)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|