summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean byroot Boussier <jean.boussier+github@shopify.com>2023-02-06 23:30:00 +0100
committerJean Boussier <jean.boussier@gmail.com>2023-02-06 23:30:35 +0100
commitc19defd02665492de7147572714ebe692260c849 (patch)
treeabc68e28c4bc4c09e289ca85e09db8124b4ac8b7
parentc30602e64ce437be86180590eee27b0b6ed83a16 (diff)
Revert "Only emit circular dependency warning for owned thread shields"
This reverts commit fa49651e05a06512e18ccb2f54a7198c9ff579de.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/7256
-rw-r--r--internal/thread.h1
-rw-r--r--load.c3
-rw-r--r--spec/ruby/core/kernel/shared/require.rb10
-rw-r--r--spec/ruby/fixtures/code/concurrent_require_fixture.rb1
-rw-r--r--test/ruby/test_require.rb3
-rw-r--r--thread.c11
6 files changed, 4 insertions, 25 deletions
diff --git a/internal/thread.h b/internal/thread.h
index c3e54de683..6394f88d34 100644
--- a/internal/thread.h
+++ b/internal/thread.h
@@ -29,7 +29,6 @@ VALUE rb_get_coverages(void);
int rb_get_coverage_mode(void);
VALUE rb_default_coverage(int);
VALUE rb_thread_shield_new(void);
-bool rb_thread_shield_owned(VALUE self);
VALUE rb_thread_shield_wait(VALUE self);
VALUE rb_thread_shield_release(VALUE self);
VALUE rb_thread_shield_destroy(VALUE self);
diff --git a/load.c b/load.c
index 0f8d63a37f..ce52e5ef60 100644
--- a/load.c
+++ b/load.c
@@ -850,8 +850,7 @@ load_lock(rb_vm_t *vm, const char *ftptr, bool warn)
st_insert(loading_tbl, (st_data_t)ftptr, data);
return (char *)ftptr;
}
-
- if (warn && rb_thread_shield_owned((VALUE)data)) {
+ if (warn) {
VALUE warning = rb_warning_string("loading in progress, circular require considered harmful - %s", ftptr);
rb_backtrace_each(rb_str_append, warning);
rb_warning("%"PRIsVALUE, warning);
diff --git a/spec/ruby/core/kernel/shared/require.rb b/spec/ruby/core/kernel/shared/require.rb
index c629b44389..666ca15e11 100644
--- a/spec/ruby/core/kernel/shared/require.rb
+++ b/spec/ruby/core/kernel/shared/require.rb
@@ -237,16 +237,6 @@ describe :kernel_require, shared: true do
}.should complain(/circular require considered harmful/, verbose: true)
ScratchPad.recorded.should == [:loaded]
end
-
- ruby_bug "#17340", ''...'3.3' do
- it "loads a file concurrently" do
- path = File.expand_path "concurrent_require_fixture.rb", CODE_LOADING_DIR
- ScratchPad.record(@object)
- -> {
- @object.require(path)
- }.should_not complain(/circular require considered harmful/, verbose: true)
- end
- end
end
describe "(non-extensioned path)" do
diff --git a/spec/ruby/fixtures/code/concurrent_require_fixture.rb b/spec/ruby/fixtures/code/concurrent_require_fixture.rb
deleted file mode 100644
index fbb036214b..0000000000
--- a/spec/ruby/fixtures/code/concurrent_require_fixture.rb
+++ /dev/null
@@ -1 +0,0 @@
-Thread.new { ScratchPad.recorded.require(__FILE__) }.join(0.1)
diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb
index e0cfc8c914..604ddf09d8 100644
--- a/test/ruby/test_require.rb
+++ b/test/ruby/test_require.rb
@@ -562,6 +562,9 @@ class TestRequire < Test::Unit::TestCase
assert_equal(true, (t1_res ^ t2_res), bug5754 + " t1:#{t1_res} t2:#{t2_res}")
assert_equal([:pre, :post], scratch, bug5754)
+
+ assert_match(/circular require/, output)
+ assert_match(/in #{__method__}'$/o, output)
}
ensure
$VERBOSE = verbose
diff --git a/thread.c b/thread.c
index 89c5572201..54055746db 100644
--- a/thread.c
+++ b/thread.c
@@ -4920,17 +4920,6 @@ rb_thread_shield_new(void)
return thread_shield;
}
-bool
-rb_thread_shield_owned(VALUE self)
-{
- VALUE mutex = GetThreadShieldPtr(self);
- if (!mutex) return false;
-
- rb_mutex_t *m = mutex_ptr(mutex);
-
- return m->fiber == GET_EC()->fiber_ptr;
-}
-
/*
* Wait a thread shield.
*